Firebase Dynamic Links là dịch vụ của Google để tạo các liên kết thông minh đưa người dùng đến đúng vị trí trong ứng dụng bất kể ứng dụng đã được cài đặt hay chưa. Theo Tài liệu Firebase, Dynamic Links tự động chuyển hướng người dùng đến App Store hoặc Google Play nếu ứng dụng chưa được cài đặt và khôi phục ngữ cảnh chuyển tiếp sau khi cài đặt. Liên kết thông minh của Firebase giải quyết vấn đề URL Scheme vốn không hoạt động với các ứng dụng chưa cài đặt.
Những điểm chính
Firebase Dynamic Links là dịch vụ đám mây của Google tạo các liên kết phổ quát thống nhất cho ứng dụng di động trên iOS và Android. Một liên kết động chứa một deep link đến nội dung bên trong ứng dụng nhưng hoạt động như một liên kết HTTPS thông thường: nếu ứng dụng đã được cài đặt, nó sẽ mở trực tiếp; nếu chưa, nó sẽ chuyển hướng đến cửa hàng ứng dụng.
Không giống như URL Scheme thông thường, Dynamic Links có thể hoạt động với các ứng dụng chưa cài đặt nhờ công nghệ deferred deep link. Khi người dùng cài đặt ứng dụng sau khi nhấp vào liên kết, Firebase lưu các tham số chuyển tiếp và truyền chúng khi khởi chạy lần đầu. Điều này mở ra cơ hội cho các chương trình giới thiệu, chiến dịch tiếp thị và lời mời.
URL Scheme yêu cầu ứng dụng phải được cài đặt và không có cơ chế dự phòng tiêu chuẩn. Firebase Dynamic Links giải quyết vấn đề này thông qua một dịch vụ web trung gian của Firebase, xác định trạng thái cài đặt ứng dụng trên thiết bị và định tuyến người dùng một cách chính xác. Đồng thời, một liên kết hoạt động giống hệt nhau trên cả hai nền tảng.
Firebase Dynamic Link sử dụng một tên miền như yourcode.page.link, được đăng ký trong Firebase Console. Khi người dùng nhấp vào liên kết đó, Firebase xác định loại thiết bị và trạng thái cài đặt ứng dụng. Đối với iOS, cơ chế Universal Links được sử dụng; đối với Android, App Links với xác minh tự động qua Digital Asset Links.
Quy trình xử lý bao gồm nhiều bước tuần tự: khi nhấp vào liên kết, trình duyệt gửi yêu cầu GET đến máy chủ Firebase; máy chủ xác định nền tảng và kiểm tra sự hiện diện của ứng dụng trên thiết bị. Nếu ứng dụng đã được cài đặt, một chuyển hướng được tạo đến Universal Link hoặc Intent với các tham số để mở màn hình mục tiêu. Nếu ứng dụng chưa được cài đặt, nó chuyển hướng đến App Store hoặc Google Play để tải xuống.
Ứng dụng nhận được liên kết trong quá trình khởi tạo Firebase SDK. Phương thức getDynamicLink() trả về PendingResult với dữ liệu chuyển tiếp. Sau khi truy xuất thành công, các tham số deep link, thẻ UTM cho phân tích và dữ liệu tùy ý được truyền khi tạo liên kết sẽ được trích xuất.
Firebase Console cung cấp giao diện trực quan để tạo Dynamic Links. Nhà phát triển chỉ định URL deep link, tên chiến dịch, cài đặt cho iOS và Android riêng biệt, cũng như các tham số phân tích. Sau khi tạo, Firebase tạo một liên kết ngắn như https://yourcode.page.link/abc123, có thể được sử dụng trong tài liệu quảng cáo, chiến dịch email và mạng xã hội.
Để tạo Dynamic Links theo chương trình, Firebase REST API hoặc SDK máy khách được sử dụng. REST API cho phép tạo hàng loạt liên kết cho các chiến dịch tiếp thị với các tham số tùy chỉnh, bao gồm liên kết cho mạng xã hội và phân tích nhấp chuột không đồng bộ. Khi tạo liên kết qua API, điều quan trọng là chỉ định chính xác các tham số socialMetaTagInfo — chúng xác định cách liên kết hiển thị khi được chia sẻ trong ứng dụng nhắn tin và mạng xã hội với thẻ xem trước.
| Tham số | Mục đích | Bắt buộc |
|---|---|---|
| Deep Link URL | Liên kết nội bộ đến nội dung ứng dụng | Có |
| iOS Bundle ID | Định danh ứng dụng trong App Store | Cho iOS |
| Android Package Name | Tên gói trong Google Play | Cho Android |
| Fallback URL | Trang web nếu không có ứng dụng | Không |
| Thẻ UTM | Tham số cho Google Analytics | Không |
Để làm việc với Firebase Dynamic Links trên iOS, cần tích hợp Firebase SDK qua CocoaPods hoặc Swift Package Manager, cấu hình Info.plist với GOOGLE_APP_ID và đăng ký tên miền Dynamic Links trong Associated Domains của dự án. Sau đó, ứng dụng tự động xử lý các Universal Links do Firebase tạo ra.
Trong Xcode, cần thêm khả năng Associated Domains với một mục như applinks:yourcode.page.link. Firebase SDK sử dụng phương thức application(_:continue:restorationHandler:) để xử lý Universal Links, do đó không cần tích hợp thêm với AppDelegate — Firebase tự động trích xuất các tham số Dynamic Link từ User Activity.
Ví dụ về cấu hình Info.plist để khởi tạo Firebase đúng cách và đăng ký trình xử lý Dynamic Links. Khóa FIROptions phải chứa định danh dự án từ GoogleService-Info.plist.
<key>FirebaseDynamicLinksCustomDomains</key>
<array>
<string>https://yourcode.page.link</string>
</array>
<key>FirebaseAppDelegateProxyEnabled</key>
<false/>
Nếu proxy AppDelegate bị vô hiệu hóa, cần gọi thủ công phương thức handleUniversalLink(_:) và truyền User Activity từ continue NSUserActivity. Firebase SDK tự động trích xuất các tham số liên kết và trả về DynamicLink qua completion handler.
Trên Android, việc tích hợp Firebase Dynamic Links bắt đầu bằng cách thêm các phụ thuộc vào build.gradle và tệp google-services.json từ Firebase Console. Tên miền Dynamic Links được đăng ký trong Firebase Console, sau đó tất cả các liên kết với tên miền này được ứng dụng Android tự động nhận dạng qua Intent Filter với action VIEW. Để hoạt động chính xác, cũng cần thêm plugin Google Services trong build.gradle gốc và mô-đun, và thực hiện đồng bộ hóa Gradle.
Để xử lý chính xác các liên kết trên Android, cần thêm Intent Filter cho tên miền Dynamic Links trong Activity sẽ nhận các liên kết đến. Bộ lọc phải bao gồm giao thức https, máy chủ tên miền Dynamic Links của bạn và đường dẫn mặc định.
Ví dụ về Intent Filter trong AndroidManifest.xml để nhận Dynamic Links trên tên miền yourcode.page.link.
<activity android:name=".MainActivity"
android:launchMode="singleTask">
<intent-filter
android:autoVerify="true">
<action
android:name="android.intent.action.VIEW" />
<category
android:name="android.intent.category.DEFAULT" />
<category
android:name="android.intent.category.BROWSABLE" />
<data
android:scheme="https"
android:host="yourcode.page.link" />
</intent-filter>
</activity>
Điều quan trọng là đặt launchMode thành singleTask cho Activity nhận Dynamic Links. Điều này ngăn việc tạo một phiên bản Activity mới khi nhấp liên kết nhiều lần và cho phép xử lý tất cả các deep link đến trong một phiên bản duy nhất.
Firebase SDK dành cho Android cung cấp phương thức FirebaseDynamicLinks.getInstance().getDynamicLink(intent), trả về đối tượng PendingTask với dữ liệu liên kết. Từ đối tượng DynamicLink, URI sâu, tham số UTM và dấu thời gian chuyển tiếp được trích xuất. Nên thực hiện xử lý trong các phương thức onCreate() và onNewIntent() của Activity.
Khi xử lý, điều quan trọng là cần lưu ý rằng Dynamic Link có thể được nhận cả khi khởi động ứng dụng từ trạng thái nguội (cold start) và khi chuyển từ ứng dụng khác sang ứng dụng đang chạy. Đối với trường hợp thứ hai, cần ghi đè onNewIntent() và gọi lại kiểm tra Dynamic Link.
Ví dụ về nhận và xử lý Firebase Dynamic Link trong MainActivity. Mã xử lý cả cold start và chuyển tiếp từ ứng dụng khác.
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
checkDynamicLink(intent)
}
override fun onNewIntent(intent: Intent) {
super.onNewIntent(intent)
checkDynamicLink(intent)
}
private fun checkDynamicLink(intent: Intent) {
FirebaseDynamicLinks.getInstance()
.getDynamicLink(intent)
.addOnSuccessListener link ->
val deepLink = link?.link.toString()
handleDeepLink(deepLink)
}
}
}
Phương thức addOnSuccessListener trả về DynamicLink, từ đó liên kết mục tiêu được trích xuất qua link?.link. Nếu listener trả về null, điều đó có nghĩa là Intent không chứa Dynamic Link — đó là khởi chạy ứng dụng bình thường không có liên kết đến. Các thẻ UTM cho phân tích nhấp chuột cũng có sẵn, bao gồm campaign, medium, source và content, có thể được truyền đến Google Analytics để đánh giá chi tiết hiệu quả của từng kênh tiếp thị.
Câu hỏi thường gặp
Firebase Dynamic Links hỗ trợ deferred deep link — liên kết giữ nguyên ngữ cảnh ngay cả khi ứng dụng chưa được cài đặt. Sau khi cài đặt, ứng dụng nhận được tất cả các tham số chuyển tiếp, điều không thể thực hiện với URL Scheme hoặc Universal Links thông thường.
Firebase Dynamic Links được bao gồm trong gói miễn phí Firebase Spark. Không có giới hạn về số lượng liên kết có thể tạo. Tuy nhiên, từ năm 2024, Google đã công bố chuyển đổi sang cơ sở hạ tầng mới, do đó các điều khoản có thể thay đổi.
Dynamic Links được thiết kế cho ứng dụng di động. Khi nhấp vào liên kết từ trình duyệt web trên máy tính, nó sẽ mở URL dự phòng. Đối với ứng dụng web, hãy sử dụng các liên kết thông thường hoặc logic chuyển hướng của riêng bạn.
Firebase Console cung cấp nút Test Dynamic Link để xem trước hành vi. Bạn cũng có thể sử dụng trình giả lập Android hoặc trình mô phỏng iOS với Firebase SDK đã cài đặt để kiểm tra cục bộ tất cả các kịch bản chuyển tiếp.
Một liên kết ngắn Firebase Dynamic Link bao gồm tên miền page.link và hậu tố ngẫu nhiên dài khoảng 7 ký tự. Tổng độ dài khoảng 30 ký tự. Deep link bên trong có thể có độ dài bất kỳ, nhưng nên giới hạn ở 2 KB để tương thích.
Tổng kết
Chúng tôi sẽ phát triển ứng dụng di động chìa khóa trao tay
IT Sectr tạo các ứng dụng iOS và Android cho các công ty khởi nghiệp và doanh nghiệp từ năm 2017. Chúng tôi sẽ tư vấn và đề xuất giải pháp tốt nhất cho bạn.
Đọc thêm