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

Bạn có thể tạo các Đường liên kết động ngắn hoặc dài bằng API Trình tạo đường liên kết động của Firebase. API này chấp nhận một Đường liên kết động dài hoặc một đối tượng chứa các tham số của Đường liên kết động và trả về các URL như các 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 nhớ 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 Firebase.

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

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

  1. Trong bảng điều khiển của Firebase, hãy mở mục Đường liên kết động.
  2. Nếu bạn chưa chấp nhận điều khoản dịch vụ và đặt tiền tố URI cho Đường liên kết động của mình, hãy thực hiện 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 lớp này khi tạo Đường liên kết động theo phương thức lập trình.

  3. Đề xuất: Chỉ định các mẫu URL được phép trong đường liên kết sâu và đường liên kết dự phòng. Khi làm như vậy, bạn sẽ ngăn các bên không được cấp phép tạo Đường liên kết động chuyển hướng từ miền của bạn đến những trang web mà bạn không kiểm soát. Hãy xem phần Cho phép các mẫu URL cụ thể.
  4. Đảm bảo rằng bạn đã chỉ định Mã App Store của ứng dụng và tiền tố Mã ứng dụng trong phần cài đặt của ứng dụng. Để xem và chỉnh sửa các chế độ cài đặt của ứng dụng, hãy chuyển đến trang Cài đặt của dự án Firebase và chọn ứng dụng dành cho 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 Đường liên kết động trong ứng dụng iOS bằng cách mở tệp apple-app-site-association được lưu trữ trên miền Đường liên kết động của bạn. Firebase sẽ phân phát tệp apple-app-site-association từ gốc 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 thông tin tham chiếu đến tiền tố Mã ứng dụng và mã 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ỹ để đảm bảo bạn đã chỉ định tiền tố Mã ứng dụng. Xin lưu ý rằng tiền tố Mã ứng dụng có thể không giống với Mã 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ũng như bất kỳ mô-đun Firebase nào khác mà đại diện ứng dụng của bạn sử dụng. Ví dụ: Cách sử dụng Cloud Firestore và Xác thực:

    SwiftUI

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

    Swift

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Objective-C

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  2. Định cấu hình một thực thể dùng chung của FirebaseApp trong phương thức application(_:didFinishLaunchingWithOptions:) của uỷ quyền ứng dụng:

    SwiftUI

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

    Swift

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

    Objective-C

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

Nếu bạn muốn tạo một Đường 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 đường liên kết có thể dùng trong bài đăng trên mạng xã hội, cách đơn giản nhất là truy cập vào bảng điều khiển của Firebase và tạo một đường liên kết theo cách thủ công theo biểu mẫu từng bước.

Sử dụng iOS Builder API

Bạn có thể sử dụng iOS Builder API để tạo Đường liên kết động từ các tham số hoặc để rút ngắn một Đường liên kết động dài.

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

Ví dụ tối thiểu sau đây sẽ tạo một Đường liên kết động dài đến https://www.example.com/my-page. Đường liên kết này sẽ mở bằng ứng dụng iOS trên iOS và ứng dụng com.example.android trên Android:

Swift

Lưu ý: Sản phẩm Firebase này không hoạt động trên các mục tiêu của 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)")

Objective-C

Lưu ý: Sản phẩm Firebase này không hoạt động trên các mục tiêu của 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 Đường liên kết động ngắn, hãy tạo DynamicLinkComponents theo cách tương tự, sau đó gọi shorten().

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

Swift

Lưu ý: Sản phẩm Firebase này không hoạt động trên các mục tiêu của 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)")
}

Objective-C

Lưu ý: Sản phẩm Firebase này không hoạt động trên các mục tiêu của 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, các Đường liên kết động ngắn được tạo bằng hậu tố của đường liên kết dài 17 ký tự, nên khả năng cao là người khác sẽ không đoán được một Đường liên kết động hợp lệ. Nếu trong trường hợp sử dụng của bạn mà việc người dùng đoán thành công một đường liên kết ngắn sẽ không gây hại, thì bạn nên tạo hậu tố chỉ khi cần thiết phải là duy nhất. Bạn có thể thực hiện việc này bằng cách đặt thuộc tính dynamicLinkComponentsOptions:

Swift

Lưu ý: Sản phẩm Firebase này không hoạt động trên các mục tiêu của 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)")
}

Objective-C

Lưu ý: Sản phẩm Firebase này không hoạt động trên các mục tiêu của 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 đường liên kết động để tạo Đường liên kết động bằng bất kỳ tham số nào được hỗ trợ. Hãy xem Tài liệu tham khảo API để biết thông tin chi tiết.

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

Swift

Lưu ý: Sản phẩm Firebase này không hoạt động trên các mục tiêu của 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)")

Objective-C

Lưu ý: Sản phẩm Firebase này không hoạt động trên các mục tiêu của 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 thông số Liên kết động với các đối tượng và thuộc tính sau:

Thành phần đường liên kết động
đường liên kết

Đường liên kết mà ứng dụng của bạn sẽ mở ra. Chỉ định 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ư cấp tín dụng 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). Đường liên kết này phải là một URL được định dạng chính xác, được mã hoá URL chính xác, sử dụng HTTP hoặc HTTPS và không được là một Đường liên kết động khác.

Tiền tố miềnURI Tiền tố URL đường liên kết động mà bạn có thể tìm thấy trong bảng điều khiển của Firebase. Miền Liên kết động sẽ có dạng như các ví dụ sau:
https://example.com/link
https://example.page.link
DynamicLinkAndroidParameters (Thông số động liên kết Android)
URL dự phòng Đường liên kết để mở khi ứng dụng chưa được cài đặt. Chỉ định thao tác này để làm một việc gì đó ngoài việc cài đặt ứng dụng qua Cửa hàng Play khi chưa cài đặt ứng dụng, chẳng hạn như mở phiên bản nội dung trên 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 ứng dụng tối thiểu có thể mở đường liên kết. Nếu ứng dụng đã cài đặt là một phiên bản cũ, thì người dùng sẽ được chuyển đến Cửa hàng Play để nâng cấp.
Thông số DynamicLinkIOS
Mã cửa hàng ứng dụng Mã App Store của ứng dụng của bạn, dùng để đưa người dùng đến App Store khi ứng dụng chưa được cài đặt
URL dự phòng Đường liên kết để mở khi ứng dụng chưa được cài đặt. Chỉ định thao tác này để làm một việc gì đó ngoài việc cài đặt ứng dụng từ App Store khi chưa cài đặt ứng dụng, chẳng hạn như mở phiên bản nội dung trên 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 đồ tuỳ chỉnh Lược đồ URL tuỳ chỉnh của ứng dụng, nếu được xác định không phải là mã gói ứng dụng
URL dự phòng của iPad Đường liên kết để mở trên iPad khi ứng dụng chưa được cài đặt. Chỉ định thao tác này để thực hiện một thao tác khác ngoài việc cài đặt ứng dụng 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 trên web hoặc hiển thị trang quảng cáo cho ứng dụng của bạn.
iPadBundleID Mã nhận dạng gói của ứng dụng iOS dùng trên iPad để mở đường liên kết. Bạn phải kết nối ứng dụng với dự án trên trang Tổng quan của bảng điều khiển của 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ở đường liên kết. Cờ này được chuyển đến ứng dụng của bạn khi được mở và ứng dụng phải quyết định tác vụ cần thực hiện với cờ đó.
Thông số DynamicLinkNavigationInfo
Bắt buộc chuyển hướng đã bật Nếu bạn đặt thành '1', hãy bỏ qua trang xem trước ứng dụng khi Đường liên kết động mở, mà 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 trang đích phù hợp nhất theo cách đáng tin cậy hơn khi họ mở Đường liên kết động trong ứng dụng. Tuy nhiên, nếu muốn chỉ mở Đường liên kết động trong các ứng dụng có thể mở Đường liên kết động một cách đáng tin cậy mà không cần trang này, thì bạn có thể tắt đường liên kết động đó bằng tham số này. Tham số này sẽ chỉ ảnh hưởng đến hoạt động của Liên kết động trên iOS.
Liên kết động
tiêu đề Tiêu đề cần sử dụng khi Đường liên kết động được chia sẻ trong bài đăng trên mạng xã hội.
văn bản mô tả Nội dung mô tả để sử dụng khi Đường liên kết động được chia sẻ trong bài đăng trên mạng xã hội.
URL hình ảnh URL đến hình ảnh liên quan đến đường liên kết này. Hình ảnh phải có kích thước tối thiểu 300x200 pixel và nhỏ hơn 300 KB.
Thông số DynamicLinkGoogleAnalytics
nội dung nguồn
phương tiện
chiến dịch
từ khoá
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 của đường liên kết.
Thông số DynamicLinkItunesConnectAnalytics
providerToken
affiliateToken
campaignToken
Thông số phân tích của iTunes Connect. Các tham số này (pt, at, ct) được chuyển đến App Store.

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

Swift

Lưu ý: Sản phẩm Firebase này không hoạt động trên các mục tiêu của 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)")
}

Objective-C

Lưu ý: Sản phẩm Firebase này không hoạt động trên các mục tiêu của 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, Đường liên kết động sử dụng giá trị nhận dạng gói ứng dụng làm lược đồ URL cần thiết để mở ứng dụng của bạn. Bạn nên giữ nguyên giá trị mặc định này để đơn giản hoá quá trình triển khai.

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

  1. Khi thiết lập ứng dụng, hãy nhớ chỉ định lược đồ URL mặc định mà ứng dụng sẽ sử dụng trước khi định cấu hình thực thể dùng chung của FirebaseApp:

    Swift

    Lưu ý: Sản phẩm Firebase này không hoạt động trên các mục tiêu của 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
    }
    

    Objective-C

    Lưu ý: Sản phẩm Firebase này không hoạt động trên các mục tiêu của 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. Mỗi khi tạo một Đường liên kết động bất kỳ, bạn sẽ cần chỉ định lược đồ URL tuỳ 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 của Firebase, đặt customScheme trong Builder API, chỉ định tham số ius trong URL hoặc gửi tham số iosCustomScheme đến API REST

Các 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 Đường liên kết động và chuyển người dùng đến đúng vị trí trong ứng dụng sau khi người dùng mở các Đường liên kết đó.

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