Để nhận Đường liên kết động của Firebase mà bạn đã tạo, bạn phải đưa SDK liên kết động vào ứng dụng và gọi phương thức FirebaseDynamicLinks.getDynamicLink() khi ứng dụng tải để nhận dữ liệu được truyền trong Đường liên kết động.
Thiết lập Firebase và SDK Đường liên kết động
Cài đặt và khởi chạy SDK Firebase cho Flutter nếu bạn chưa làm.
Từ thư mục gốc của dự án Flutter, hãy chạy lệnh sau để cài đặt trình bổ trợ Đường liên kết động:
flutter pub add firebase_dynamic_linksNếu bạn đang tạo một ứng dụng Android, hãy mở trang Cài đặt dự án của bảng điều khiển Firebase và đảm bảo bạn đã chỉ định khoá ký SHA-1. Nếu bạn sử dụng Đường liên kết ứng dụng, hãy chỉ định cả khoá SHA-256.
Tích hợp nền tảng
Hoàn tất các bước tích hợp nền tảng sau đây cho những nền tảng mà bạn đang tạo ứng dụng.
Android
Trên Android, bạn phải thêm một bộ lọc ý định mới để nắm bắt các đường liên kết sâu của miền, vì Đường liên kết động sẽ chuyển hướng đến miền của bạn nếu ứng dụng được cài đặt. Bạn phải làm việc này để ứng dụng nhận được dữ liệu Đường liên kết động sau khi được cài đặt/cập nhật từ Cửa hàng Play và người dùng nhấn vào nút Tiếp tục. Trong AndroidManifest.xml:
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data
android:host="example.com"
android:scheme="https"/>
</intent-filter>
Khi người dùng mở một Đường liên kết động có đường liên kết sâu đến lược đồ và máy chủ mà bạn chỉ định, ứng dụng sẽ bắt đầu hoạt động bằng bộ lọc ý định này để xử lý đường liên kết.
Bước tiếp theo là đảm bảo dấu vân tay SHA-256 của chứng chỉ ký được đăng ký trong bảng điều khiển của Firebase cho ứng dụng. Bạn có thể xem thêm thông tin chi tiết về cách truy xuất dấu vân tay SHA-256 trên trang Xác thực ứng dụng.
Nền tảng Apple
Tạo tài khoản nhà phát triển Apple nếu bạn chưa có.
Trên trang Cài đặt dự án của bảng điều khiển Firebase, hãy đảm bảo rằng ứng dụng iOS được định cấu hình chính xác bằng Mã cửa hàng ứng dụng và Mã nhóm.
Trên trang web của Nhà phát triển Apple, hãy tạo hồ sơ cung cấp cho ứng dụng của bạn khi bật tính năng Miền được liên kết.
Trong Xcode, hãy làm như sau:
Mở ứng dụng trong tiêu đề TARGETS.
Trên trang Ký và chức năng, hãy đảm bảo Nhóm của bạn đã được đăng ký và Hồ sơ cung cấp đã được thiết lập.
Trên trang Ký và chức năng, hãy bật Miền được liên kết rồi thêm nội dung sau vào danh sách Miền được liên kết (thay ví dụ bằng miền của bạn):
applinks:example.page.linkTrên trang Thông tin, hãy thêm một Loại URL vào dự án của bạn. Đặt trường Lược đồ URL thành mã nhận dạng gói của ứng dụng. (Giá trị nhận dạng có thể là
Bundle IDhoặc bất cứ thứ gì bạn muốn.)Nếu bạn đã thiết lập một miền tuỳ chỉnh cho dự án Firebase, hãy thêm tiền tố URL Đường liên kết động vào tệp
Info.plistcủa dự án iOS bằng khoáFirebaseDynamicLinksCustomDomains.<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>FirebaseDynamicLinksCustomDomains</key> <array> <string>https://custom.domain.io/path1</string> <string>https://custom.domain.io/path2</string> </array> ...other settings </dict> </plist>Không bắt buộc: Tắt việc sử dụng bảng tạm của iOS trong SDK Đường liên kết động.
Theo mặc định, SDK Đường liên kết động sử dụng bảng tạm để cải thiện độ tin cậy của các đường liên kết sâu sau khi cài đặt. Bằng cách sử dụng bảng tạm, Đường liên kết động có thể đảm bảo rằng khi người dùng mở một Đường liên kết động nhưng cần cài đặt ứng dụng trước, người dùng có thể chuyển ngay đến nội dung được liên kết ban đầu khi mở ứng dụng lần đầu tiên sau khi cài đặt.
Nhược điểm của việc này là việc sử dụng bảng tạm sẽ kích hoạt thông báo trên iOS 14 trở lên. Vì vậy, lần đầu tiên người dùng mở ứng dụng của bạn, nếu bảng tạm chứa URL Đường liên kết động, họ sẽ thấy một thông báo cho biết ứng dụng của bạn đã truy cập vào bảng tạm, điều này có thể gây nhầm lẫn.
Để tắt hành vi này, hãy chỉnh sửa tệp
Info.plistcủa dự án Xcode và đặt khoáFirebaseDeepLinkPasteboardRetrievalEnabledthànhNO.
Xử lý đường liên kết sâu
Để xử lý một Đường liên kết động trong ứng dụng, bạn cần triển khai 2 trường hợp.
Trạng thái đã kết thúc
Thiết lập các phương thức sau:
FirebaseDynamicLinks.getInitialLink– trả vềFuture<PendingDynamicLinkData?>FirebaseDynamicLinks.onLink– trình xử lý sự kiện trả về mộtStreamchứaPendingDynamicLinkData?
Android sẽ luôn nhận được đường liên kết thông qua FirebaseDynamicLinks.getInitialLink từ trạng thái đã kết thúc, nhưng trên iOS thì không được đảm bảo. Do đó, bạn nên thiết lập cả hai theo thứ tự sau để đảm bảo ứng dụng nhận được đường liên kết:
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(options: DefaultFirebaseConfig.platformOptions);
// Check if you received the link via `getInitialLink` first
final PendingDynamicLinkData? initialLink = await FirebaseDynamicLinks.instance.getInitialLink();
if (initialLink != null) {
final Uri deepLink = initialLink.link;
// Example of using the dynamic link to push the user to a different screen
Navigator.pushNamed(context, deepLink.path);
}
FirebaseDynamicLinks.instance.onLink.listen(
(pendingDynamicLinkData) {
// Set up the `onLink` event listener next as it may be received here
if (pendingDynamicLinkData != null) {
final Uri deepLink = pendingDynamicLinkData.link;
// Example of using the dynamic link to push the user to a different screen
Navigator.pushNamed(context, deepLink.path);
}
},
);
runApp(MyApp(initialLink));
}
Trong logic của ứng dụng, sau đó bạn có thể kiểm tra xem một đường liên kết đã được xử lý hay chưa và thực hiện một hành động, ví dụ:
if (initialLink != null) {
final Uri deepLink = initialLink.link;
// Example of using the dynamic link to push the user to a different screen
Navigator.pushNamed(context, deepLink.path);
}
Trạng thái nền / nền trước
Trong khi ứng dụng đang mở hoặc ở chế độ nền, hãy sử dụng phương thức getter FirebaseDynamicLinks.onLink:
FirebaseDynamicLinks.instance.onLink.listen((dynamicLinkData) {
Navigator.pushNamed(context, dynamicLinkData.link.path);
}).onError((error) {
// Handle errors
});
Ngoài ra, nếu bạn muốn xác định xem một Đường liên kết động chính xác có được dùng để mở ứng dụng hay không, hãy truyền đường liên kết đó vào phương thức getDynamicLink:
String link = 'https://dynamic-link-domain/ke2Qa';
final PendingDynamicLinkData? initialLink = await FirebaseDynamicLinks.instance.getDynamicLink(Uri.parse(link));
Kiểm thử Đường liên kết động trên nền tảng iOS
Để kiểm thử một đường liên kết động trên iOS, bạn phải sử dụng một thiết bị thực. Bạn cũng cần chạy ứng dụng ở chế độ phát hành (tức là flutter run --release), nếu kiểm thử một đường liên kết động từ trạng thái ứng dụng đã kết thúc (tức là ứng dụng đã bị vuốt để đóng).