Bạn có thể tạo ngắn hoặc dài Dynamic Links bằng API Trình tạo Firebase Dynamic Links. API này chấp nhận một Dynamic Link dài hoặc một đối tượng chứa các Dynamic Link và trả về các URL như trong 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.
Thiết lập Firebase và SDK Dynamic Links
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.
- Trong Xcode, khi dự án ứng dụng của bạn đang mở, hãy chuyển đến File (Tệp) > Add Packages (Thêm gói).
- Khi được nhắc, hãy thêm kho lưu trữ SDK nền tảng Apple của Firebase:
- Chọn thư viện Dynamic Links.
- Thêm cờ
-ObjCvào phần Other Linker Flags (Cờ trình liên kết khác) trong chế độ cài đặt bản dựng của mục tiêu. - Để có trải nghiệm tối ưu với Dynamic Links, 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 có thu thập IDFA. Hãy xem Câu hỏi thường gặp của chúng tôi về cách tổ chức mô-đun mới nhất trong Google Analytics cho Firebase SDK.
- 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 xuống ở chế độ nền.
https://github.com/firebase/firebase-ios-sdk.git
Bây giờ, hãy thực hiện một số bước định cấu hình:
- Trong bảng điều khiển Firebase, hãy mở phần Dynamic Links.
-
Nếu bạn chưa chấp nhận điều khoản dịch vụ và đặt tiền tố URI cho Dynamic Links, hãy thực hiện việc này khi được nhắc.
Nếu đã có tiền tố URI Dynamic Links, hãy ghi lại tiền tố đó. Bạn cần cung cấp tiền tố này khi tạo Dynamic Links theo phương thức lập trình.

- Nên dùng: 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. Bằng cách này, bạn sẽ ngăn các bên không được uỷ quyền tạo Dynamic Links 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 phần Cho phép các mẫu URL cụ thể.
-
Đảm bảo rằng Mã App Store của ứng dụng và tiền tố Mã ứng dụng được chỉ định trong phần cài đặt của ứng dụng. Để xem và chỉnh sửa phần cài đặt của ứng dụng, hãy chuyển đến trang Cài đặt của dự án Firebase rồi chọn ứng dụng iOS.
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 Dynamic Links trong ứng dụng iOS bằng cách mở tệp
apple-app-site-associationđược lưu trữ trên miền Dynamic Links. Firebase sẽ phân phát tệpapple-app-site-associationtừ gốc của miền cũng như thư mục con.well-knownVí dụ:https://example.com/apple-app-site-association https://example.com/.well-known/apple-app-site-associationNếu ứng dụng của bạn được kết nối, tệp
apple-app-site-associationsẽ chứa một tham chiếu đến tiền tố Mã ứng dụng và mã nhận dạng gói của ứng dụng. Ví dụ:{"applinks":{"apps":[],"details":[{"appID":"1234567890.com.example.ios","paths":["/*"]}]}}Nếu thuộc tính
detailstrống, hãy kiểm tra kỹ để đảm bảo rằng 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.
Thêm Firebase vào ứng dụng
- Nhập mô-đun
FirebaseCoretrongUIApplicationDelegate, cũng như mọi mô-đun Firebase khác mà đại diện ứng dụng của bạn sử dụng. Ví dụ: để sử dụng Cloud Firestore và Authentication:SwiftUI
import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Swift
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Objective-C
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- Định cấu hình một
FirebaseAppthực thể dùng chung trong phương thứcapplication(_:didFinishLaunchingWithOptions:)của đại diệ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];
- Nếu đang sử dụng SwiftUI, bạn phải tạo một đại diện ứng dụng và đính kèm đại diện đó
vào cấu trúc
Appthông quaUIApplicationDelegateAdaptorhoặcNSApplicationDelegateAdaptor. Bạn cũng phải tắt tính năng hoán đổi đại diệ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 Firebase
Nếu bạn muốn tạo một Dynamic Link 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 một bài đăng trên mạng xã hội), thì cách đơn giản nhất là truy cập vào bảng điều khiển Firebase và tạo một đường liên kết theo cách thủ công bằng biểu mẫu từng bước.
Sử dụng API Trình tạo iOS
Bạn có thể sử dụng API Trình tạo iOS để tạo Dynamic Links từ các tham số hoặc để rút ngắn một Dynamic Link dài.
Tạo Dynamic Link từ các tham số
Để tạo Dynamic Link, hãy tạo một đối tượng DynamicLinkComponents mới
và chỉ định các tham số Dynamic Link bằng cách đặt các thuộc tính tương ứng
của đối tượng. Sau đó, 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 tạo một Dynamic Link đến
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:
Swift
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
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 Dynamic Link ngắn, hãy tạo DynamicLinkComponents theo cùng một cách, sau đó gọi shorten().
Việc tạo một đường liên kết ngắn đòi hỏi phải 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. Trình xử lý này
được gọi khi yêu cầu hoàn tất. Ví dụ:
Swift
linkBuilder.shorten() { url, warnings, error in guard let url = url, error != nil else { return } print("The short URL is: \(url)") }
Objective-C
[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, Dynamic Links được tạo bằng hậu tố đường liên kết gồm 17 ký tự. Điều này khiến người khác rất khó đoán được một Dynamic Link hợp lệ. Nếu trường hợp sử dụng của bạn không gây hại cho người khác khi đoán thành công một đường liên kết ngắn, thì bạn có thể muốn tạo các hậu tố chỉ dài khi cần thiết để đảm bảo tính 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
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
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 tham số
Bạn có thể sử dụng API Trình tạo Dynamic Link để tạo Dynamic Links bằng bất kỳ tham số nào được hỗ trợ. Xem tài liệu tham khảo API để biết thông tin chi tiết.
Ví dụ sau đây tạo một Dynamic Link với một số tham số phổ biến được đặt:
Swift
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
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 các tham số Dynamic Link bằng các đối tượng và thuộc tính sau:
| DynamicLinkComponents | |
|---|---|
| link |
Đường liên kết mà ứng dụng của bạn sẽ mở. 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, giúp khởi động logic dành riêng cho ứng dụng (chẳng hạn như ghi có cho người dùng một 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 đúng, được mã hoá URL đúng cách, sử dụng HTTP hoặc HTTPS và không thể là một Đường liên kết động khác. |
| domainURIPrefix | Tiền tố URL Dynamic Link mà bạn có thể tìm thấy trong bảng điều khiển Firebase. Miền
Dynamic Link có dạng như trong ví dụ sau:
https://example.com/link https://example.page.link |
| DynamicLinkAndroidParameters | |
|---|---|
| fallbackURL | Đường liên kết để mở khi ứng dụng chưa được cài đặt. Chỉ định đường liên kết này để thực hiện một việc khác ngoài việc 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 web di động của nội dung hoặc hiển thị một trang quảng cáo cho ứng dụng của bạn. |
| minimumVersion | versionCode của phiên bản tối thiểu của ứng dụng có thể mở đường 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. |
| DynamicLinkIOSParameters | |
|---|---|
| appStoreID | Mã App Store của ứng dụng, dùng để gửi người dùng đến App Store khi ứng dụng chưa được cài đặt |
| fallbackURL | Đường liên kết để mở khi ứng dụng chưa được cài đặt. Chỉ định đường liên kết này để thực hiện một việc khác ngoài việc 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 di động của nội dung hoặc hiển thị một trang quảng cáo cho ứng dụng của bạn. |
| customScheme | Lược đồ URL tuỳ chỉnh của ứng dụng, nếu được xác định là một lược đồ khác với mã nhận dạng gói của ứng dụng |
| iPadFallbackURL | Đường liên kết để mở trên iPad khi ứng dụng chưa được cài đặt. Chỉ định đường liên kết này để thực hiện một việc khác ngoài việc 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ị một 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 để sử dụng trên iPad nhằm mở đường 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. |
| minimumAppVersion | 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 truyề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 việc cần làm với cờ này. |
| DynamicLinkNavigationInfoParameters | |
|---|---|
| forcedRedirectEnabled | Nếu được đặt thành '1', hãy bỏ qua trang xem trước ứng dụng khi Dynamic Link đượ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ể gửi người dùng đến đích phù hợp nhất một cách đáng tin cậy hơn khi họ mở Dynamic Links trong ứng dụng. Tuy nhiên, nếu bạn chỉ muốn Dynamic Link được mở trong các ứng dụng có thể mở Dynamic Links một cách đáng tin cậy mà không cần trang này, thì bạn có thể tắt trang đó bằng tham số này. Tham số này sẽ chỉ ảnh hưởng đến hành vi của Dynamic Link trên iOS. |
| DynamicLinkSocialMetaTagParameters | |
|---|---|
| title | Tiêu đề dùng khi Dynamic Link được chia sẻ trong một bài đăng trên mạng xã hội. |
| descriptionText | Nội dung mô tả dùng khi Dynamic Link được chia sẻ trong một bài đăng trên mạng xã hội. |
| imageURL | URL đến một 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 là 300x200 pixel và nhỏ hơn 300 KB. |
| DynamicLinkGoogleAnalyticsParameters | |
|---|---|
| source medium campaign term content |
Tham số phân tích Google Play. Các tham số này
(utm_source, utm_medium,
utm_campaign, utm_term, utm_content)
được truyền đến Cửa hàng Play cũng như được thêm vào tải trọng đường liên kết.
|
| DynamicLinkItunesConnectAnalyticsParameters | |
|---|---|
| providerToken affiliateToken campaignToken |
Tham số phân tích iTunes Connect. Các tham số này (pt,
at, ct) được truyền đến App Store. |
Rút ngắn một Dynamic Link dài
Để rút ngắn một Dynamic Link dài, hãy truyền Dynamic Link 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ó hậu tố ngắn:
Swift
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
[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); }];
Chỉ định lược đồ URL tuỳ chỉnh cho Dynamic Links
Theo mặc định, Dynamic Links sử dụng mã nhận dạng gói của ứ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 để việc triển khai được đơn giản.
Tuy nhiên, những nhà phát triển đã sử dụng lược đồ URL tuỳ chỉnh cho các mục đích khác có thể muốn sử dụng cùng một lược đồ URL tuỳ chỉnh này cho Dynamic Links của họ. Nếu bạn đang ở trong tình huống này, bạn có thể chỉ định một lược đồ URL khác cho Firebase Dynamic Links bằng cách làm theo các bước sau:
- Khi thiết lập ứng dụng, hãy nhớ chỉ định lược đồ URL mặc định mà ứng dụng của bạn sẽ sử dụng
trước khi định cấu hình thực thể dùng chung
FirebaseApp:Swift
Lưu ý: Sản phẩm Firebase này không có 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 }
Objective-C
Lưu ý: Sản phẩm Firebase này không có 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; }
- Bất cứ khi nào tạo Dynamic Link, 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 Firebase, đặt
customSchemetrong API Trình tạo, chỉ định tham sốiustrong 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 Dynamic Links, bạn cần thiết lập ứng dụng để nhận Dynamic Links và gửi 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 Dynamic Links trong ứng dụng, hãy xem tài liệu dành cho iOS, Android, C++, và Unity.