Google is committed to advancing racial equity for Black communities. See how.
หน้านี้ได้รับการแปลโดย Cloud Translation API
Switch to English

สร้างลิงก์แบบไดนามิกบน iOS

คุณสามารถสร้างลิงก์แบบไดนามิกสั้นหรือยาวได้ด้วย API ตัวสร้างลิงก์แบบไดนามิกของ Firebase API นี้ยอมรับ Dynamic Link แบบยาวหรือออบเจ็กต์ที่มีพารามิเตอร์ Dynamic Link และส่งคืน URL ดังตัวอย่างต่อไปนี้:

https://example.com/link/WXYZ
https://example.page.link/WXYZ

ข้อกำหนดเบื้องต้น

ลิงก์แบบไดนามิกของ Firebase ต้องใช้ iOS 8 หรือใหม่กว่า คุณกำหนดเป้าหมายเป็น iOS 7 ในแอปได้ แต่ Firebase Dynamic Links SDK เรียกใช้ฟังก์ชันเฉพาะในแอปที่ใช้ iOS 8 หรือใหม่กว่า

  1. เพิ่ม Firebase ในโปรเจ็กต์ iOS ของคุณ รวมพ็อดต่อไปนี้ใน Podfile ของคุณ:
    pod 'Firebase/Analytics'
    pod 'Firebase/DynamicLinks'
        
  2. เรียกใช้การ pod install และเปิดไฟล์. .xcworkspace สร้างขึ้น
  3. ในคอนโซล Firebase เปิดส่วน ลิงก์แบบไดนามิก
  4. หากคุณยังไม่ได้ยอมรับข้อกำหนดในการให้บริการและตั้งค่าคำนำหน้า URI สำหรับลิงก์ไดนามิกของคุณให้ทำเมื่อได้รับแจ้ง

    หากคุณมีคำนำหน้า URI ลิงก์ไดนามิกอยู่แล้วให้จดบันทึกไว้ คุณต้องระบุเมื่อสร้างลิงก์แบบไดนามิกโดยใช้โปรแกรม

  5. แนะนำ : ระบุรูปแบบ URL ที่อนุญาตในลิงก์ในรายละเอียดและลิงก์สำรองของคุณ การทำเช่นนี้จะเป็นการป้องกันไม่ให้บุคคลที่ไม่ได้รับอนุญาตสร้างลิงก์แบบไดนามิกที่เปลี่ยนเส้นทางจากโดเมนของคุณไปยังไซต์ที่คุณไม่ได้ควบคุม ดู รูปแบบ URL รายการที่อนุญาต
  6. ตรวจสอบให้แน่ใจว่ามีการระบุรหัส App Store ของแอปและคำนำหน้ารหัสแอปในการตั้งค่าของแอป หากต้องการดูและแก้ไขการตั้งค่าของแอปให้ไปที่ หน้าการตั้งค่า ของโครงการ Firebase แล้วเลือกแอป iOS

    ตรวจสอบว่าโครงการ Firebase ของคุณได้รับการกำหนดค่าอย่างเหมาะสมเพื่อใช้ลิงก์แบบไดนามิกในแอป iOS ของคุณโดยเปิดไฟล์การ apple-app-site-association ที่โฮสต์บนโดเมนลิงก์แบบไดนามิก Firebase จะให้บริการไฟล์ apple-app-site-association จากรากของโดเมนรวมถึงไดเร็กทอรีย่อยที่ .well-known ตัวอย่างเช่น:

        https://example.com/apple-app-site-association
        https://example.com/.well-known/apple-app-site-association
        

    หากแอปของคุณเชื่อมต่ออยู่ไฟล์ apple-app-site-association จะมีการอ้างอิงไปยัง App Store ID และ Bundle ID ของแอปของคุณ ตัวอย่างเช่น:

    {"applinks":{"apps":[],"details":[{"appID":"1234567890.com.example.ios","paths":["/*"]}]}}

    หากคุณสมบัติ details ว่างเปล่าให้ตรวจสอบอีกครั้งว่าคุณระบุคำนำหน้ารหัสแอปของคุณ โปรดทราบว่าคำนำหน้ารหัสแอปของคุณอาจไม่เหมือนกับรหัสทีมของคุณ

เพิ่ม Firebase ในแอปของคุณ

  1. นำเข้าโมดูล Firebase ใน UIApplicationDelegate ของคุณ:

    รวดเร็ว

    import Firebase

    วัตถุประสงค์ -C

    @import Firebase;
  2. กำหนดค่าอินสแตนซ์ที่แชร์ของ FirebaseApp โดยทั่วไปในแอปพลิเคชันของแอปของคุณ application:didFinishLaunchingWithOptions: method:

    รวดเร็ว

    // Use Firebase library to configure APIs
    FirebaseApp.configure()

    วัตถุประสงค์ -C

    // Use Firebase library to configure APIs
    [FIRApp configure];

ใช้คอนโซล Firebase

หากคุณต้องการสร้างลิงก์แบบไดนามิกเดียวไม่ว่าจะเพื่อวัตถุประสงค์ในการทดสอบหรือเพื่อให้ทีมการตลาดของคุณสร้างลิงก์ที่สามารถใช้ในสิ่งต่างๆเช่นโพสต์โซเชียลมีเดียได้อย่างง่ายดายวิธีที่ง่ายที่สุดคือไปที่ คอนโซล Firebase และสร้างลิงก์ ทำตามแบบฟอร์มทีละขั้นตอนด้วยตนเอง

ใช้ iOS Builder API

คุณสามารถใช้ iOS Builder API เพื่อสร้าง Dynamic Links จากพารามิเตอร์หรือเพื่อย่อ Dynamic Link แบบยาว

ในการสร้าง Dynamic Link ให้สร้างอ็อบเจ็กต์ DynamicLinkComponents ใหม่และระบุพารามิเตอร์ Dynamic Link โดยการตั้งค่าคุณสมบัติที่สอดคล้องกันของอ็อบเจ็กต์ จากนั้นรับลิงก์แบบยาวจากคุณสมบัติ url ของวัตถุหรือรับลิงก์แบบสั้นโดยเรียก shorten()

ตัวอย่างขั้นต่ำต่อไปนี้สร้าง Dynamic Link แบบยาวไปยัง https://www.example.com/my-page ที่เปิดขึ้นพร้อมกับแอป iOS ของคุณบน iOS และแอป com.example.android บน Android:

รวดเร็ว

guard let link = URL(string: "https://www.example.com/my-page") else { return }
let dynamicLinksDomainURIPrefix = "https://example.com/link"
let linkBuilder = DynamicLinkComponents(link: link, domainURIPrefix: dynamicLinksDomainURIPRefix)
linkBuilder.iOSParameters = DynamicLinkIOSParameters(bundleID: "com.example.ios")
linkBuilder.androidParameters = DynamicLinkAndroidParameters(packageName: "com.example.android")

guard let longDynamicLink = linkBuilder.url else { return }
print("The long URL is: \(longDynamicLink)")

วัตถุประสงค์ -C

NSURL *link = [[NSURL alloc] initWithString:@"https://www.example.com/my-page"];
NSString *dynamicLinksDomainURIPrefix = @"https://example.com/link";
FIRDynamicLinkComponents *linkBuilder = [[FIRDynamicLinkComponents alloc]
                                         initWithLink:link
                                               domainURIPrefix:dynamicLinksDomainURIPrefix];
linkBuilder.iOSParameters = [[FIRDynamicLinkIOSParameters alloc]
                             initWithBundleID:@"com.example.ios"];
linkBuilder.androidParameters = [[FIRDynamicLinkAndroidParameters alloc]
                                 initWithPackageName:@"com.example.android"];

NSLog(@"The long URL is: %@", linkBuilder.url);

ในการสร้าง Dynamic Link แบบสั้นให้สร้าง DynamicLinkComponents ในลักษณะเดียวกันจากนั้นเรียก DynamicLinkComponents shorten()

การสร้างลิงก์แบบสั้นจำเป็นต้องมีการเรียกใช้เครือข่ายดังนั้นแทนที่จะส่งคืนลิงก์โดยตรงให้ shorten() ยอมรับตัวจัดการการดำเนินการที่เสร็จสมบูรณ์ซึ่งจะถูกเรียกเมื่อคำขอเสร็จสมบูรณ์ ตัวอย่างเช่น:

รวดเร็ว

linkBuilder.shorten() { url, warnings, error in
  guard let url = url, error != nil else { return }
  print("The short URL is: \(url)")
}

วัตถุประสงค์ -C

[linkBuilder shortenWithCompletion:^(NSURL * _Nullable shortURL,
                                     NSArray<NSString *> * _Nullable warnings,
                                     NSError * _Nullable error) {
  if (error || shortURL == nil) { return; }
  NSLog(@"The short URL is: %@", shortURL);
}];
      

ตามค่าเริ่มต้น Dynamic Links แบบสั้นจะถูกสร้างขึ้นโดยมีส่วนต่อท้ายลิงก์ 17 อักขระซึ่งทำให้ไม่น่าเป็นไปได้อย่างยิ่งที่ใครบางคนจะสามารถเดา Dynamic Link ที่ถูกต้องได้ หากในกรณีการใช้งานของคุณไม่มีอันตรายใด ๆ ในบางคนที่คาดเดาลิงก์สั้น ๆ ได้สำเร็จคุณอาจต้องการสร้างคำต่อท้ายที่ยาวเท่าที่จำเป็นเท่านั้นเพื่อให้ไม่ซ้ำกันซึ่งคุณสามารถทำได้โดยการตั้งค่าคุณสมบัติ dynamicLinkComponentsOptions :

รวดเร็ว

linkBuilder.dynamicLinkComponentsOptions = DynamicLinkComponentsOptions()
linkBuilder.dynamicLinkComponentsOptions.pathLength = .short
linkBuilder.shorten() { url, warnings, error in
  guard let url = url, error != nil else { return }
  print("The short URL is: \(url)")
}

วัตถุประสงค์ -C

linkBuilder.dynamicLinkComponentsOptions = [[FIRDynamicLinkComponentsOptions alloc] init];
linkBuilder.dynamicLinkComponentsOptions.pathLength = FIRShortDynamicLinkPathLengthShort;
[linkBuilder shortenWithCompletion:^(NSURL * _Nullable shortURL,
                                     NSArray<NSString *> * _Nullable warnings,
                                     NSError * _Nullable error) {
  if (error || shortURL == nil) { return; }
  NSLog(@"The short URL is: %@", shortURL);
}];
      

คุณสามารถใช้ Dynamic Link Builder API เพื่อสร้างลิงก์แบบไดนามิกด้วยพารามิเตอร์ที่รองรับ ดูการ อ้างอิง API สำหรับรายละเอียด

ตัวอย่างต่อไปนี้สร้าง Dynamic Link ที่มีชุดพารามิเตอร์ทั่วไปหลายตัว:

รวดเร็ว

guard let link = URL(string: "https://www.example.com/my-page") else { return }
let dynamicLinksDomainURIPrefix = "https://example.com/link"
let linkBuilder = DynamicLinkComponents(link: link, domainURIPRefix: dynamicLinksDomainURIPrefix)

linkBuilder.iOSParameters = DynamicLinkIOSParameters(bundleID: "com.example.ios")
linkBuilder.iOSParameters.appStoreID = "123456789"
linkBuilder.iOSParameters.minimumAppVersion = "1.2.3"

linkBuilder.androidParameters = DynamicLinkAndroidParameters(packageName: "com.example.android")
linkBuilder.androidParameters.minimumVersion = 123

linkBuilder.analyticsParameters = DynamicLinkGoogleAnalyticsParameters(source: "orkut",
                                                                       medium: "social",
                                                                       campaign: "example-promo")

linkBuilder.iTunesConnectParameters = DynamicLinkItunesConnectAnalyticsParameters()
linkBuilder.iTunesConnectParameters.providerToken = "123456"
linkBuilder.iTunesConnectParameters.campaignToken = "example-promo"

linkBuilder.socialMetaTagParameters = DynamicLinkSocialMetaTagParameters()
linkBuilder.socialMetaTagParameters.title = "Example of a Dynamic Link"
linkBuilder.socialMetaTagParameters.descriptionText = "This link works whether the app is installed or not!"
linkBuilder.socialMetaTagParameters.imageURL = "https://www.example.com/my-image.jpg"

guard let longDynamicLink = linkBuilder.url else { return }
print("The long URL is: \(longDynamicLink)")

วัตถุประสงค์ -C

NSURL *link = [[NSURL alloc] initWithString:@"https://www.example.com/my-page"];
NSString *dynamicLinksDomainURIPrefix = @"https://example.com/link";
FIRDynamicLinkComponents *linkBuilder = [[FIRDynamicLinkComponents alloc]
                                         initWithLink:link
                                         domainURIPrefix:dynamicLinksDomainURIPrefix];

linkBuilder.iOSParameters = [[FIRDynamicLinkIOSParameters alloc]
                             initWithBundleID:@"com.example.ios"];
linkBuilder.iOSParameters.appStoreID = @"123456789";
linkBuilder.iOSParameters.minimumAppVersion = @"1.2.3";

linkBuilder.androidParameters = [[FIRDynamicLinkAndroidParameters alloc]
                                 initWithPackageName:@"com.example.android"];
linkBuilder.androidParameters.minimumVersion = 123;

linkBuilder.analyticsParameters = [[FIRDynamicLinkGoogleAnalyticsParameters alloc]
                                   initWithSource:@"orkut"
                                           medium:@"social"
                                         campaign:@"example-promo"];

linkBuilder.iTunesConnectParameters = [[FIRDynamicLinkItunesConnectAnalyticsParameters alloc] init];
linkBuilder.iTunesConnectParameters.providerToken = @"123456";
linkBuilder.iTunesConnectParameters.campaignToken = @"example-promo";

linkBuilder.socialMetaTagParameters = [[FIRDynamicLinkSocialMetaTagParameters alloc] init];
linkBuilder.socialMetaTagParameters.title = @"Example of a Dynamic Link";
linkBuilder.socialMetaTagParameters.descriptionText = @"This link works whether the app is installed or not!";
linkBuilder.socialMetaTagParameters.imageURL = @"https://www.example.com/my-image.jpg";

NSLog(@"The long URL is: %@", linkBuilder.url);

คุณสามารถตั้งค่าพารามิเตอร์ Dynamic Link ด้วยอ็อบเจ็กต์และคุณสมบัติต่อไปนี้:

DynamicLinkComponents
ลิงค์

ลิงก์แอปของคุณจะเปิดขึ้น ระบุ URL ที่แอปของคุณสามารถจัดการได้โดยทั่วไปจะเป็นเนื้อหาหรือเพย์โหลดของแอปซึ่งเริ่มต้นตรรกะเฉพาะแอป (เช่นให้เครดิตผู้ใช้ด้วยคูปองหรือแสดงหน้าจอต้อนรับ) ลิงก์นี้ต้องเป็น URL ที่มีรูปแบบดีเข้ารหัส URL อย่างถูกต้องใช้ HTTP หรือ HTTPS และไม่สามารถเป็นลิงก์แบบไดนามิกอื่นได้

โดเมน คำนำหน้า URL ลิงก์แบบไดนามิกซึ่งคุณจะพบได้ในคอนโซล Firebase โดเมนไดนามิกลิงก์มีลักษณะดังตัวอย่างต่อไปนี้:
https://example.com/link
https://example.page.link
DynamicLinkAndroidParameters
fallbackURL ลิงก์สำหรับเปิดเมื่อไม่ได้ติดตั้งแอป ระบุสิ่งนี้เพื่อทำอย่างอื่นนอกเหนือจากการติดตั้งแอปของคุณจาก Play Store เมื่อไม่ได้ติดตั้งแอปเช่นเปิดเนื้อหาเวอร์ชันเว็บบนอุปกรณ์เคลื่อนที่หรือแสดงหน้าส่งเสริมการขายสำหรับแอปของคุณ
เวอร์ชันขั้นต่ำ versionCode ของเวอร์ชันขั้นต่ำของแอปของคุณที่สามารถเปิดลิงก์ได้ หากแอปที่ติดตั้งเป็นเวอร์ชันเก่าผู้ใช้จะถูกนำไปที่ Play Store เพื่ออัปเกรดแอป
DynamicLinkIOSParameters
appStoreID รหัส App Store ของแอปของคุณใช้เพื่อส่งผู้ใช้ไปยัง App Store เมื่อไม่ได้ติดตั้งแอป
fallbackURL ลิงก์สำหรับเปิดเมื่อไม่ได้ติดตั้งแอป ระบุสิ่งนี้เพื่อทำอย่างอื่นนอกเหนือจากการติดตั้งแอปของคุณจาก App Store เมื่อไม่ได้ติดตั้งแอปเช่นเปิดเนื้อหาเวอร์ชันเว็บบนอุปกรณ์เคลื่อนที่หรือแสดงหน้าส่งเสริมการขายสำหรับแอปของคุณ
customScheme รูปแบบ URL ที่กำหนดเองของแอปของคุณหากกำหนดให้เป็นอย่างอื่นที่ไม่ใช่รหัสชุดของแอป
iPadFallbackURL ลิงก์สำหรับเปิดบน iPads เมื่อไม่ได้ติดตั้งแอป ระบุสิ่งนี้เพื่อทำอย่างอื่นนอกเหนือจากการติดตั้งแอปของคุณจาก App Store เมื่อไม่ได้ติดตั้งแอปเช่นเปิดเนื้อหาเวอร์ชันเว็บหรือแสดงหน้าส่งเสริมการขายสำหรับแอปของคุณ
iPadBundleID รหัสชุดของแอป iOS ที่จะใช้บน iPads เพื่อเปิดลิงก์ แอปต้องเชื่อมต่อกับโปรเจ็กต์ของคุณจากหน้าภาพรวมของคอนโซล Firebase
MinimumAppVersion หมายเลข เวอร์ชันของเวอร์ชันขั้นต่ำของแอปของคุณที่สามารถเปิดลิงก์ได้ แฟล็กนี้จะส่งผ่านไปยังแอปของคุณเมื่อเปิดและแอปของคุณต้องตัดสินใจว่าจะทำอย่างไร
DynamicLinkNavigationInfoParameters
forceRedirectEnabled หากตั้งค่าเป็น "1" ให้ข้ามหน้าตัวอย่างแอปเมื่อเปิดลิงก์ไดนามิกแล้วเปลี่ยนเส้นทางไปที่แอปหรือร้านค้าแทน หน้าตัวอย่างแอป (เปิดใช้งานโดยค่าเริ่มต้น) สามารถส่งผู้ใช้ไปยังปลายทางที่เหมาะสมที่สุดได้อย่างน่าเชื่อถือมากขึ้นเมื่อเปิดลิงก์ไดนามิกในแอป อย่างไรก็ตามหากคุณคาดว่าจะเปิดลิงก์ไดนามิกเฉพาะในแอปที่สามารถเปิดลิงก์ไดนามิกได้อย่างน่าเชื่อถือหากไม่มีหน้านี้คุณสามารถปิดใช้งานได้โดยใช้พารามิเตอร์นี้ หมายเหตุ: ตอนนี้หน้าตัวอย่างแอพจะแสดงเฉพาะบน iOS แต่ในที่สุดก็อาจจะแสดงบน Android พารามิเตอร์นี้จะส่งผลต่อพฤติกรรมของ Dynamic Link บนทั้งสองแพลตฟอร์ม
DynamicLinkSocialMetaTagParameters
หัวข้อ ชื่อที่จะใช้เมื่อแชร์ลิงก์ไดนามิกในโพสต์โซเชียล
descriptionText คำอธิบายที่จะใช้เมื่อแชร์ลิงก์ไดนามิกในโพสต์โซเชียล
imageURL URL ของรูปภาพที่เกี่ยวข้องกับลิงก์นี้ รูปภาพควรมีขนาดอย่างน้อย 300x200 พิกเซลและน้อยกว่า 300 KB
DynamicLinkGoogleAnalyticsParameters
แหล่งที่มา
ปานกลาง
แคมเปญ
เทอม
เนื้อหา
พารามิเตอร์การวิเคราะห์ของ Google Play พารามิเตอร์เหล่านี้ ( utm_source , utm_medium , utm_campaign , utm_term , utm_content ) จะถูกส่งต่อไปยัง Play Store และต่อท้ายเพย์โหลดของลิงก์
DynamicLinkItunesConnectAnalyticsParameters
ProviderToken
AffiliateToken
CampaignToken
พารามิเตอร์การวิเคราะห์ iTunes Connect พารามิเตอร์เหล่านี้ ( pt , at , ct ) จะถูกส่งไปยัง App Store

หากต้องการย่อ Dynamic Link แบบยาวให้ส่ง Dynamic Link แบบยาวไปยัง shortenURL(url:options:) พร้อมกับออบเจ็กต์ DynamicLinkComponentsOptions หากคุณต้องการสร้างลิงก์ที่มีคำต่อท้ายสั้น ๆ :

รวดเร็ว

DynamicLinkComponents.shortenURL(url: longLinkUrl, options: nil) { url, warnings, error in
  guard let url = url, error != nil else { return }
  print("The short URL is: \(url)")
}

วัตถุประสงค์ -C

[FIRDynamicLinkComponents shortenURL:longLinkUrl
                             options:nil
                          completion:^(NSURL * _Nullable shortURL,
                                       NSArray<NSString *> * _Nullable warnings,
                                       NSError * _Nullable error) {
  if (error || shortURL == nil) { return; }
  NSLog(@"The short URL is: %@", shortURL);
}];

โดยค่าเริ่มต้นลิงก์แบบไดนามิกจะใช้ตัวระบุบันเดิลของแอปของคุณเป็นรูปแบบ URL ที่จำเป็นในการเปิดแอปพลิเคชันของคุณ เราขอแนะนำให้ใช้ค่าเริ่มต้นนี้เพื่อให้การใช้งานของคุณง่ายขึ้น

อย่างไรก็ตามนักพัฒนาที่ใช้โครงร่าง URL ที่กำหนดเองเพื่อวัตถุประสงค์อื่นอยู่แล้วอาจต้องการใช้โครงร่าง URL ที่กำหนดเองเดียวกันนี้สำหรับลิงก์แบบไดนามิกของพวกเขาด้วย หากคุณตกอยู่ในสถานการณ์นี้คุณสามารถระบุรูปแบบ URL ที่แตกต่างกันสำหรับลิงก์แบบไดนามิกของ Firebase โดยทำตามขั้นตอนต่อไปนี้:

  1. เมื่อตั้งค่าแอปตรวจสอบให้แน่ใจว่าคุณได้ระบุรูปแบบ URL เริ่มต้นที่แอปพลิเคชันของคุณจะใช้ก่อนกำหนดค่าอินสแตนซ์ที่แชร์ของ FirebaseApp :

    รวดเร็ว

    func application(_ application: UIApplication,
                     didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
      // Set deepLinkURLScheme to the custom URL scheme you defined in your
      // Xcode project.
      FirebaseOptions.defaultOptions()?.deepLinkURLScheme = self.customURLScheme
      FirebaseApp.configure()
    
      return true
    }

    วัตถุประสงค์ -C

    - (BOOL)application:(UIApplication *)application
        didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
      // Set deepLinkURLScheme to the custom URL scheme you defined in your
      // Xcode project.
      [FIROptions defaultOptions].deepLinkURLScheme = CUSTOM_URL_SCHEME;
      [FIRApp configure];
    
      return YES;
    }
  2. เมื่อใดก็ตามที่คุณสร้างลิงก์แบบไดนามิกคุณจะต้องระบุโครงร่าง URL ที่กำหนดเองที่แอปของคุณใช้ คุณสามารถทำได้ผ่านคอนโซล Firebase การตั้งค่า customScheme ใน Builder API การระบุพารามิเตอร์ ius ใน URL ของคุณหรือส่งพารามิเตอร์ iosCustomScheme ไปยัง REST API

ขั้นตอนถัดไป

เมื่อคุณได้สร้างลิงก์แบบไดนามิกแล้วคุณจะต้องตั้งค่าแอปของคุณเพื่อรับลิงก์แบบไดนามิกและส่งผู้ใช้ไปยังตำแหน่งที่ถูกต้องในแอปของคุณหลังจากที่ผู้ใช้เปิดขึ้น

หากต้องการรับลิงก์แบบไดนามิกในแอปของคุณโปรดดูเอกสารสำหรับ iOS , Android , C ++ และ Unity