Để nhận Liên kết động Firebase mà bạn đã tạo , bạn phải bao gồm SDK Liên kết động trong ứng dụng của mình và gọi phương thức FirebaseDynamicLinks.getDynamicLink()
khi ứng dụng của bạn tải để nhận dữ liệu được truyền trong Liên kết động.
Thiết lập Firebase và SDK liên kết động
Cài đặt và khởi tạo SDK Firebase cho Flutter nếu bạn chưa làm như vậy.
Từ thư mục gốc của dự án Flutter của bạn, hãy chạy lệnh sau để cài đặt plugin Dynamic Links:
flutter pub add firebase_dynamic_links
Nếu bạn đang tạo ứ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 rằng bạn đã chỉ định khóa ký SHA-1 của mình. Nếu bạn sử dụng Liên kết ứng dụng, hãy chỉ định cả khóa SHA-256 của bạn.
Tích hợp nền tảng
Hoàn thành các bước tích hợp nền tảng sau cho các nền tảng mà bạn đang xây dựng ứng dụng của mình.
Android
Trên Android, bạn phải thêm một bộ lọc ý định mới để bắt các liên kết sâu trong miền của bạn, vì Liên kết động sẽ chuyển hướng đến miền của bạn nếu ứng dụng của bạn được cài đặt. Điều này là bắt buộc để ứng dụng của bạn nhận dữ liệu Liên kết động sau khi ứng dụng được cài đặt/cập nhật từ Cửa hàng Play và một lần 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ở Liên kết động có liên kết sâu đến lược đồ và máy chủ lưu trữ mà bạn chỉ định, ứng dụng của bạn sẽ bắt đầu hoạt động với bộ lọc ý định này để xử lý 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 Firebase cho ứng dụng. Bạn có thể tìm thêm chi tiết về cách truy xuất dấu vân tay SHA-256 của mình trên trang Xác thực ứng dụng khách của bạn .
nền tảng của 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ủa bạn được định cấu hình chính xác với ID cửa hàng ứng dụng và ID nhóm của bạn.
Trên trang web Nhà phát triển của Apple, hãy tạo hồ sơ cung cấp cho ứng dụng của bạn với khả năng Tên miền được liên kết được bật.
Trong Xcode, hãy làm như sau:
Mở ứng dụng của bạn dưới tiêu đề MỤC TIÊU .
Trên trang Ký kết & Khả năng, hãy đảm bảo rằng Nhóm của bạn đã được đăng ký và Hồ sơ cung cấp của bạn đã được đặt.
Trên trang Ký & Khả năng, bật Miền được liên kết và thêm phần sau vào danh sách Miền được liên kết (thay thế ví dụ bằng miền của bạn):
applinks:example.page.link
Trên trang Thông tin, thêm Loại URL vào dự án của bạn. Đặt trường Lược đồ URL thành ID gói của ứng dụng của bạn. (Mã định danh có thể là
Bundle ID
hoặc bất cứ thứ gì bạn muốn.)Nếu bạn đã thiết lập miền tùy chỉnh cho dự án Firebase của mình, hãy thêm tiền tố URL của Liên kết động vào tệp
Info.plist
của dự án iOS bằng cách sử dụng khóaFirebaseDynamicLinksCustomDomains
.<?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>
Tùy chọn: Vô hiệu hóa việc sử dụng bảng dán iOS của SDK liên kết động.
Theo mặc định, SDK liên kết động sử dụng bảng dán để cải thiện độ tin cậy của các liên kết sâu sau khi cài đặt. Bằng cách sử dụng bảng dán, Liên kết động có thể đảm bảo rằng khi người dùng mở Liên kết động nhưng cần cài đặt ứng dụng của bạn 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 điều này là việc sử dụng bảng dán 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 dán có chứa URL Liên kết động, họ sẽ thấy thông báo rằng ứng dụng của bạn đã truy cập bảng dán, đ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.plist
của dự án Xcode của bạn và đặt khóaFirebaseDeepLinkPasteboardRetrievalEnabled
thànhNO
.
Xử lý liên kết sâu
Để xử lý Liên kết động trong ứng dụng của bạn, cần triển khai hai tình huống.
Trạng thái chấm dứt
Thiết lập các phương pháp sau:
-
FirebaseDynamicLinks.getInitialLink
- trả vềFuture<PendingDynamicLinkData?>
-
FirebaseDynamicLinks.onLink
- trình xử lý sự kiện trả vềStream
chứa Dữ liệu đangPendingDynamicLinkData?
Android sẽ luôn nhận được liên kết qua FirebaseDynamicLinks.getInitialLink
từ trạng thái đã kết thúc, nhưng trên iOS, điều đó không được đảm bảo. Do đó, đáng để thiết lập cả hai theo thứ tự sau để đảm bảo ứng dụng của bạn nhận được 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 ứng dụng của bạn, bạn có thể kiểm tra xem một 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);
}
Bối cảnh / Trạng thái tiền cảnh
Trong khi ứng dụng đang mở hoặc ở chế độ nền, hãy sử dụng trình thu thập 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 Liên kết động chính xác có được sử dụng để mở ứng dụng hay không, hãy chuyển nó sang phương thức getDynamicLink
:
String link = 'https://dynamic-link-domain/ke2Qa';
final PendingDynamicLinkData? initialLink = await FirebaseDynamicLinks.instance.getDynamicLink(Uri.parse(link));
Kiểm tra liên kết động trên nền tảng iOS
Để kiểm tra một liên kết động trên iOS, bạn phải sử dụng một thiết bị thực tế. Bạn cũng sẽ cần chạy ứng dụng ở chế độ phát hành (tức là flutter run --release
.), nếu kiểm tra liên kết động từ trạng thái ứng dụng đã chấm dứt (tức là ứng dụng đã bị đóng.).