Tạo liên kết động trên iOS

Bạn có thể tạo Liên kết động ngắn hoặc dài bằng API Trình tạo liên kết động Firebase. API này chấp nhận Liên kết động dài hoặc đối tượng chứa tham số Liên kết động và trả về các URL như ví dụ sau:

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

Điều kiện tiên quyết

Trước khi bắt đầu, hãy đảm bảo thêm Firebase vào dự án iOS của bạn .

Sử dụng Trình quản lý gói Swift để cài đặt và quản lý các phần phụ thuộc của Firebase.

  1. Trong Xcode, khi dự án ứng dụng của bạn đang mở, hãy điều hướng đến File > Add Packages .
  2. Khi được nhắc, hãy thêm kho lưu trữ SDK nền tảng Firebase của Apple:
  3.   https://github.com/firebase/firebase-ios-sdk.git
  4. Chọn thư viện Liên kết động.
  5. Thêm cờ -ObjC vào phần Cờ liên kết khác trong cài đặt bản dựng của mục tiêu của bạn.
  6. Để có trải nghiệm tối ưu với Liên kết động, chúng tôi khuyên bạn nên bật Google Analytics trong dự án Firebase và thêm SDK Firebase cho Google Analytics vào ứng dụng của mình. Bạn có thể chọn thư viện không có bộ sưu tập IDFA hoặc có bộ sưu tập IDFA.
  7. Khi hoàn tất, Xcode sẽ tự động bắt đầu phân giải và tải xuống các phần phụ thuộc của bạn ở chế độ nền.

Bây giờ, hãy thực hiện một số bước cấu hình:

  1. Trong bảng điều khiển Firebase, hãy mở phần Liên kết động .
  2. Nếu bạn chưa chấp nhận các điều khoản dịch vụ và đặt tiền tố URI cho Liên kết động của mình, hãy làm như vậy khi được nhắc.

    Nếu bạn đã có tiền tố URI liên kết động, hãy ghi lại tiền tố đó. Bạn cần cung cấp nó khi tạo Liên kết động theo chương trình.

  3. Khuyến nghị : Chỉ định các mẫu URL được phép trong liên kết sâu và liên kết dự phòng của bạn. Bằng cách đó, bạn ngăn chặn các bên trái phép tạo Liên kết động chuyển hướng từ miền của bạn đến các trang web mà bạn không kiểm soát. Xem Cho phép các mẫu URL cụ thể .
  4. Đảm bảo rằng ID App Store của ứng dụng và tiền tố ID ứng dụng của bạn được chỉ định trong cài đặt ứng dụng của bạn. Để xem và chỉnh sửa cài đặt ứng dụng của bạn, hãy truy cập trang Cài đặt của dự án Firebase và chọn ứng dụng iOS của bạn.

    Xác nhận rằng dự án Firebase của bạn được định cấu hình đúng cách để sử dụng Liên kết động trong ứng dụng iOS của bạn bằng cách mở tệp apple-app-site-association được lưu trữ trên miền Liên kết động của bạn. Firebase sẽ phân phát tệp apple-app-site-association từ thư mục gốc của tên miền cũng như thư mục con .well-known . Ví dụ:

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

    Nếu ứng dụng của bạn được kết nối, tệp apple-app-site-association sẽ chứa tham chiếu đến tiền tố ID ứng dụng và ID gói của ứng dụng. Ví dụ:

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

    Nếu thuộc tính details trống, hãy kiểm tra kỹ xem bạn đã chỉ định tiền tố ID ứng dụng của mình chưa. Lưu ý rằng tiền tố ID ứng dụng của bạn có thể không giống với ID nhóm của bạn.

Thêm Firebase vào ứng dụng của bạn

  1. Nhập mô-đun FirebaseCore trong UIApplicationDelegate của bạn, cũng như bất kỳ mô-đun Firebase nào khác mà ủy quyền ứng dụng của bạn sử dụng. Ví dụ: để sử dụng Cloud Firestore và Xác thực:

    SwiftUI

    import SwiftUI
    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Nhanh

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Mục tiêu-C

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  2. Định cấu hình phiên bản chia sẻ FirebaseApp trong phương thức application(_:didFinishLaunchingWithOptions:) của đại biểu ứng dụng của bạn:

    SwiftUI

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

    Nhanh

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

    Mục tiêu-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
  3. Nếu bạn đang sử dụng SwiftUI, bạn phải tạo một đại biểu ứng dụng và đính kèm nó vào cấu trúc App của mình thông qua UIApplicationDelegateAdaptor hoặc NSApplicationDelegateAdaptor . Bạn cũng phải tắt chức năng chuyển giao ứng dụng. Để biết thêm thông tin, hãy xem hướng dẫn SwiftUI .

    SwiftUI

    @main
    struct YourApp: App {
      // register app delegate for Firebase setup
      @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate
    
      var body: some Scene {
        WindowGroup {
          NavigationView {
            ContentView()
          }
        }
      }
    }
          

Sử dụng bảng điều khiển Firebase

Nếu bạn muốn tạo một Liên kết động duy nhất, cho mục đích thử nghiệm hoặc để nhóm tiếp thị của bạn dễ dàng tạo một liên kết có thể được sử dụng trong nội dung nào đó như bài đăng trên mạng xã hội, cách đơn giản nhất là truy cập bảng điều khiển Firebase và tạo một liên kết theo cách thủ công theo mẫu từng bước.

Sử dụng API Trình tạo iOS

Bạn có thể sử dụng iOS Builder API để xây dựng Liên kết động từ các tham số hoặc để rút ngắn Liên kết động dài.

Để tạo Liên kết động, hãy tạo một đối tượng DynamicLinkComponents mới và chỉ định các tham số Liên kết động bằng cách đặt các thuộc tính tương ứng của đối tượng. Sau đó, lấy liên kết dài từ thuộc tính url của đối tượng hoặc lấy liên kết ngắn bằng cách gọi shorten() .

Ví dụ tối thiểu sau đây tạo một Liên kết động dài tới https://www.example.com/my-page mở bằng ứng dụng iOS của bạn trên iOS và ứng dụng com.example.android trên Android:

Nhanh

Lưu ý: Sản phẩm Firebase này không khả dụng trên các mục tiêu macOS, Mac Catalyst, tvOS hoặc watchOS.
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)")

Mục tiêu-C

Lưu ý: Sản phẩm Firebase này không khả dụng trên các mục tiêu macOS, Mac Catalyst, tvOS hoặc watchOS.
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);

Để tạo một Liên kết động ngắn, hãy xây dựng DynamicLinkComponents theo cách tương tự, sau đó gọi shorten() .

Việc xây dựng một liên kết ngắn yêu cầu một cuộc gọi mạng, vì vậy thay vì trực tiếp trả về liên kết, shorten() chấp nhận một trình xử lý hoàn thành, được gọi khi yêu cầu hoàn thành. Ví dụ:

Nhanh

Lưu ý: Sản phẩm Firebase này không khả dụng trên các mục tiêu macOS, Mac Catalyst, tvOS hoặc watchOS.
linkBuilder.shorten() { url, warnings, error in
  guard let url = url, error != nil else { return }
  print("The short URL is: \(url)")
}

Mục tiêu-C

Lưu ý: Sản phẩm Firebase này không khả dụng trên các mục tiêu macOS, Mac Catalyst, tvOS hoặc watchOS.
[linkBuilder shortenWithCompletion:^(NSURL * _Nullable shortURL,
                                     NSArray<NSString *> * _Nullable warnings,
                                     NSError * _Nullable error) {
  if (error || shortURL == nil) { return; }
  NSLog(@"The short URL is: %@", shortURL);
}];
      

Theo mặc định, Liên kết động ngắn được tạo với hậu tố liên kết 17 ký tự khiến cho rất khó có ai đó có thể đoán được Liên kết động hợp lệ. Đối với trường hợp sử dụng của bạn, nếu ai đó đoán thành công một liên kết ngắn không có hại gì, thì bạn có thể muốn tạo các hậu tố chỉ cần thiết để duy nhất, bạn có thể làm điều này bằng cách đặt thuộc tính dynamicLinkComponentsOptions :

Nhanh

Lưu ý: Sản phẩm Firebase này không khả dụng trên các mục tiêu macOS, Mac Catalyst, tvOS hoặc watchOS.
linkBuilder.options = DynamicLinkComponentsOptions()
linkBuilder.options.pathLength = .short
linkBuilder.shorten() { url, warnings, error in
  guard let url = url, error != nil else { return }
  print("The short URL is: \(url)")
}

Mục tiêu-C

Lưu ý: Sản phẩm Firebase này không khả dụng trên các mục tiêu macOS, Mac Catalyst, tvOS hoặc watchOS.
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);
}];
      

Bạn có thể sử dụng API Trình tạo liên kết động để tạo Liên kết động với bất kỳ thông số được hỗ trợ nào. Xem tài liệu tham khảo API để biết chi tiết.

Ví dụ sau đây tạo Liên kết động với một số bộ tham số phổ biến:

Nhanh

Lưu ý: Sản phẩm Firebase này không khả dụng trên các mục tiêu macOS, Mac Catalyst, tvOS hoặc watchOS.
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)")

Mục tiêu-C

Lưu ý: Sản phẩm Firebase này không khả dụng trên các mục tiêu macOS, Mac Catalyst, tvOS hoặc watchOS.
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);

Bạn có thể đặt tham số Liên kết động với các đối tượng và thuộc tính sau:

Thành phần DynamicLink
liên kết

Liên kết mà ứng dụng của bạn sẽ mở ra. Chỉ định một URL mà ứng dụng của bạn có thể xử lý, thường là nội dung hoặc tải trọng của ứng dụng, bắt đầu logic dành riêng cho ứng dụng (chẳng hạn như ghi có cho người dùng bằng phiếu giảm giá hoặc hiển thị màn hình chào mừng). Liên kết này phải là một URL có định dạng phù hợp, được mã hóa URL chính xác, sử dụng HTTP hoặc HTTPS và không được là một Liên kết động khác.

tiền tố miềnURI Tiền tố URL liên kết động mà bạn có thể tìm thấy trong bảng điều khiển Firebase. Miền Liên kết động trông giống như các ví dụ sau:
https://example.com/link
https://example.page.link
Thông số DynamicLinkAndroid
URL dự phòng Liên kết sẽ mở khi ứng dụng chưa được cài đặt. Chỉ định điều này để thực hiện tác vụ khác ngoài cài đặt ứng dụng của bạn từ Cửa hàng Play khi ứng dụng chưa được cài đặt, chẳng hạn như mở phiên bản nội dung web dành cho thiết bị di động hoặc hiển thị trang quảng cáo cho ứng dụng của bạn.
phiên bản tối thiểu versionCode của phiên bản tối thiểu của ứng dụng có thể mở liên kết. Nếu ứng dụng đã cài đặt là phiên bản cũ hơn, người dùng sẽ được đưa đến Cửa hàng Play để nâng cấp ứng dụng.
Thông số DynamicLinkIOS
ID cửa hàng ứng dụng ID App Store của ứng dụng của bạn, được sử dụng để đưa người dùng tới App Store khi ứng dụng chưa được cài đặt
URL dự phòng Liên kết sẽ mở khi ứng dụng chưa được cài đặt. Chỉ định điều này để thực hiện tác vụ khác ngoài cài đặt ứng dụng của bạn từ App Store khi ứng dụng chưa được cài đặt, chẳng hạn như mở phiên bản nội dung web dành cho thiết bị di động hoặc hiển thị trang quảng cáo cho ứng dụng của bạn.
lược đồ tùy chỉnh Lược đồ URL tùy chỉnh của ứng dụng của bạn, nếu được xác định là một cái gì đó không phải là ID gói ứng dụng của bạn
URL dự phòng iPad Liên kết để mở trên iPad khi ứng dụng chưa được cài đặt. Chỉ định điều này để thực hiện tác vụ khác ngoài cài đặt ứng dụng của bạn từ App Store khi ứng dụng chưa được cài đặt, chẳng hạn như mở phiên bản web của nội dung hoặc hiển thị trang quảng cáo cho ứng dụng của bạn.
ID gói iPad ID gói của ứng dụng iOS sẽ sử dụng trên iPad để mở liên kết. Ứng dụng phải được kết nối với dự án của bạn từ trang Tổng quan của bảng điều khiển Firebase.
phiên bản ứng dụng tối thiểu Số phiên bản của phiên bản tối thiểu của ứng dụng có thể mở liên kết. Cờ này được chuyển đến ứng dụng của bạn khi ứng dụng được mở và ứng dụng của bạn phải quyết định phải làm gì với nó.
Thông số thông tin điều hướng DynamicLinkNavigation
buộcRedirectĐã bật Nếu được đặt thành '1', hãy bỏ qua trang xem trước ứng dụng khi Liên kết động được mở và thay vào đó hãy chuyển hướng đến ứng dụng hoặc cửa hàng. Trang xem trước ứng dụng (được bật theo mặc định) có thể đưa người dùng đến đích thích hợp nhất một cách đáng tin cậy hơn khi họ mở Liên kết động trong ứng dụng; tuy nhiên, nếu bạn mong muốn Liên kết động chỉ được mở trong các ứng dụng có thể mở Liên kết động một cách đáng tin cậy mà không cần trang này, bạn có thể tắt nó bằng tham số này. Tham số này sẽ chỉ ảnh hưởng đến hoạt động của Dynamic Link trên iOS.
DynamicLinkSocialMetaTagThông số
tiêu đề Tiêu đề sẽ sử dụng khi Liên kết động được chia sẻ trong bài đăng trên mạng xã hội.
mô tảVăn bản Mô tả sẽ sử dụng khi Liên kết động được chia sẻ trong bài đăng trên mạng xã hội.
URL hình ảnh URL tới hình ảnh liên quan đến liên kết này. Hình ảnh phải có kích thước tối thiểu là 300x200 px và nhỏ hơn 300 KB.
DynamicLinkGoogleAnalyticsThông số
nguồn
trung bình
chiến dịch
thuật ngữ
nội dung
Thông số phân tích của Google Play. Các tham số này ( utm_source , utm_medium , utm_campaign , utm_term , utm_content ) được chuyển đến Cửa hàng Play cũng như được thêm vào tải trọng liên kết.
DynamicLinkItunesConnectAnalyticsThông số
nhà cung cấpToken
liên kếtToken
chiến dịchToken
Thông số phân tích iTunes Connect. Các tham số này ( pt , at , ct ) được chuyển đến App Store.

Để rút ngắn Liên kết động dài, hãy chuyển Liên kết động dài tới shortenURL(url:options:) cùng với đối tượng DynamicLinkComponentsOptions nếu bạn muốn tạo liên kết có hậu tố ngắn:

Nhanh

Lưu ý: Sản phẩm Firebase này không khả dụng trên các mục tiêu macOS, Mac Catalyst, tvOS hoặc watchOS.
DynamicLinkComponents.shortenURL(url: longLinkUrl, options: nil) { url, warnings, error in
  guard let url = url, error != nil else { return }
  print("The short URL is: \(url)")
}

Mục tiêu-C

Lưu ý: Sản phẩm Firebase này không khả dụng trên các mục tiêu macOS, Mac Catalyst, tvOS hoặc watchOS.
[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);
}];

Theo mặc định, Liên kết động sử dụng mã định danh gói ứng dụng của bạn làm lược đồ URL cần thiết để mở ứng dụng của bạn. Chúng tôi khuyên bạn nên giữ nguyên giá trị mặc định này để việc triển khai của bạn được đơn giản.

Tuy nhiên, các nhà phát triển đang sử dụng lược đồ URL tùy chỉnh cho các mục đích khác cũng có thể muốn sử dụng lược đồ URL tùy chỉnh tương tự này cho Liên kết động của họ. Nếu rơi vào tình huống này, bạn có thể chỉ định một lược đồ URL khác cho Liên kết động Firebase của mình bằng cách thực hiện theo các bước sau:

  1. Khi thiết lập ứng dụng của bạn, hãy đảm bảo bạn chỉ định lược đồ URL mặc định sẽ được ứng dụng của bạn sử dụng trước khi định cấu hình phiên bản chia sẻ FirebaseApp của bạn:

    Nhanh

    Lưu ý: Sản phẩm Firebase này không khả dụng trên các mục tiêu macOS, Mac Catalyst, tvOS hoặc watchOS.
    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 = customURLScheme
      FirebaseApp.configure()
    
      return true
    }
    

    Mục tiêu-C

    Lưu ý: Sản phẩm Firebase này không khả dụng trên các mục tiêu macOS, Mac Catalyst, tvOS hoặc watchOS.
    - (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. Bất cứ khi nào bạn tạo bất kỳ Liên kết động nào, bạn sẽ cần chỉ định lược đồ URL tùy chỉnh mà ứng dụng của bạn sử dụng. Bạn có thể thực hiện việc này thông qua bảng điều khiển Firebase, đặt customScheme trong API Builder, chỉ định tham số ius trong URL của bạn hoặc gửi tham số iosCustomScheme tới API REST

Bước tiếp theo

Bây giờ bạn đã tạo Liên kết động, bạn cần thiết lập ứng dụng của mình để nhận Liên kết động và đưa người dùng đến đúng vị trí trong ứng dụng của bạn sau khi người dùng mở chúng.

Để nhận Liên kết động trong ứng dụng của bạn, hãy xem tài liệu dành cho iOS , Android , C++Unity .