Nhận các liên kết động Firebase trong ứng dụng Flutter

Để nhận được 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 để dữ liệu được chuyển vào Liên kết động.

  1. Cài đặt và khởi chạy SDK Firebase cho Flutter nếu bạn chưa làm như vậy.

  2. 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 Liên kết động:

    flutter pub add firebase_dynamic_links
    
  3. 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 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 bộ lọc ý định mới bắt các liên kết sâu của 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 được dữ liệu Liên kết động sau khi đượ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.

Nền tảng của Apple

  1. Tạo tài khoản nhà phát triển Apple nếu bạn chưa có.

  2. 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.

  3. Trên trang web Nhà phát triển của Apple, hãy tạo hồ sơ cấp phép cho ứng dụng của bạn với tính năng Miền được liên kết được bật.

  4. Trong Xcode, hãy làm như sau:

    1. Mở ứng dụng của bạn trong tiêu đề TARGETS .

    2. Trên trang Ký kết & Khả năng, hãy đảm bảo Nhóm của bạn đã được đăng ký và Hồ sơ cấp phép của bạn đã được thiết lập.

    3. Thêm miền bạn đã tạo trong bảng điều khiển Firebase vào Miền được liên kết, có tiền tố là liên kết applinks: (ví dụ applinks:example.page.link ).

    4. Trên trang Thông tin, hãy thêm Loại URL vào dự án của bạn. Đặt trường Lược đồ URL thành ID gói ứng dụng của bạn. (Số nhận dạng có thể là Bundle ID hoặc bất kỳ thứ gì bạn muốn.)

    5. 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 liên kết động vào tệp Info.plist của dự án iOS của bạn bằng cách sử dụng khóa 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>
      
    6. 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 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ể truy cập ngay 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 vào bảng dán, điều này có thể gây nhầm lẫn.

      Để vô hiệu hóa 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óa FirebaseDeepLinkPasteboardRetrievalEnabled thành NO .

Để xử lý một Liên kết động trong ứng dụng của bạn, hai tình huống yêu cầu triển khai.

Trạng thái đã chấm dứt

Nếu ứng dụng bị chấm dứt, phương thức FirebaseDynamicLinks.getInitialLink cho phép bạn truy xuất Liên kết động đã mở ứng dụng.

Đây là một yêu cầu không đồng bộ, do đó, việc xử lý một liên kết trước khi hiển thị logic ứng dụng, chẳng hạn như một trình điều hướng là rất hợp lý. Ví dụ: bạn có thể xử lý điều này trong hàm main :

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp(options: DefaultFirebaseConfig.platformOptions);

  // Get any initial links
  final PendingDynamicLinkData? initialLink = await FirebaseDynamicLinks.instance.getInitialLink();

  runApp(MyApp(initialLink));
}

Trong logic ứng dụng của bạn, sau đó 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);
}

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 sử dụng để mở ứng dụng hay chưa, hãy chuyển nó vào phương thức getDynamicLink thay thế:

String link = 'https://dynamic-link-domain/ke2Qa';

final PendingDynamicLinkData? initialLink = await FirebaseDynamicLinks.instance.getDynamicLink(Uri.parse(link));

Trạng thái nền / nền trước

Trong khi ứng dụng đang mở hoặc ở chế độ nền, bạn có thể nghe các sự kiện Liên kết động bằng trình xử lý luồng. Trình thu thập FirebaseDynamicLinks.onLink trả về Stream chứa PendingDynamicLinkData :

FirebaseDynamicLinks.instance.onLink.listen((dynamicLinkData) {
  Navigator.pushNamed(context, dynamicLinkData.link.path);
}).onError((error) {
  // Handle errors
});