Nhận Liên kết động của Firebase trên Android

Để nhận Liên kết động Firebase 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 của bạn tải đến lấy dữ liệu được truyền trong Liên kết động.

  1. Nếu bạn chưa làm như vậy, thêm Firebase vào dự án Android của bạn.

    Khi bạn đăng ký ứng dụng, hãy chỉ định khoá ký SHA-1. Nếu bạn sử dụng Đường liên kết đến ứng dụng, cũng phải chỉ định khoá SHA-256.

  2. Trong tệp Gradle mô-đun (cấp ứng dụng) (thường là <project>/<app-module>/build.gradle.kts hoặc <project>/<app-module>/build.gradle), thêm phần phụ thuộc cho thư viện Đường liên kết động cho Android. Bạn nên sử dụng Bảng kê khai thành phần của Firebase cho Android để kiểm soát việc tạo phiên bản thư viện.

    Để có trải nghiệm tối ưu với Đường liên kết động, 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 bạn.

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:33.1.2"))
    
        // Add the dependencies for the Dynamic Links and Analytics libraries
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-dynamic-links'
        implementation 'com.google.firebase:firebase-analytics'
    }
    

    Bằng cách sử dụng Firebase Android BoM, ứng dụng của bạn sẽ luôn sử dụng các phiên bản tương thích của thư viện Android trên Firebase.

    (Phương án thay thế) Thêm các phần phụ thuộc của thư viện Firebase mà không sử dụng BoM

    Nếu chọn không sử dụng BoM của Firebase, bạn phải chỉ định từng phiên bản thư viện Firebase trong dòng phụ thuộc.

    Lưu ý rằng nếu bạn sử dụng nhiều thư viện Firebase trong ứng dụng của mình, chúng tôi thực sự bạn nên sử dụng BoM để quản lý các phiên bản thư viện. Điều này đảm bảo rằng tất cả các phiên bản đều tương thích.

    dependencies {
        // Add the dependencies for the Dynamic Links and Analytics libraries
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-dynamic-links:22.1.0'
        implementation 'com.google.firebase:firebase-analytics:22.0.2'
    }
    
    Bạn đang tìm một mô-đun thư viện dành riêng cho Kotlin? Bắt đầu sau Tháng 10 năm 2023 (Firebase BoM 32.5.0), cả nhà phát triển Kotlin và Java đều có thể phụ thuộc vào mô-đun thư viện chính (để biết thông tin chi tiết, hãy xem Câu hỏi thường gặp về sáng kiến này).
  3. Trong bảng điều khiển của Firebase, hãy mở Đường liên kết động . Chấp nhận điều khoản dịch vụ nếu bạn được nhắc làm như vậy.

Giống như đường liên kết sâu thuần tuý, bạn phải thêm bộ lọc ý định mới vào hoạt động xử lý liên kết sâu cho ứng dụng của bạn. Bộ lọc ý định sẽ nắm bắt các 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. Đây là yêu cầu bắt buộc để ứng dụng của bạn nhận dữ liệu Liên kết động sau khi cài đặt/cập nhật dữ liệu đó từ Cửa hàng Play và một lần nhấn vào Nút Tiếp tục. Sau 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 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 bằng bộ lọc ý định này để xử lý đường liên kết.

Để nhận đường liên kết sâu, hãy gọi phương thức getDynamicLink():

Kotlin+KTX

Firebase.dynamicLinks
    .getDynamicLink(intent)
    .addOnSuccessListener(this) { pendingDynamicLinkData: PendingDynamicLinkData? ->
        // Get deep link from result (may be null if no link is found)
        var deepLink: Uri? = null
        if (pendingDynamicLinkData != null) {
            deepLink = pendingDynamicLinkData.link
        }

        // Handle the deep link. For example, open the linked
        // content, or apply promotional credit to the user's
        // account.
        // ...
    }
    .addOnFailureListener(this) { e -> Log.w(TAG, "getDynamicLink:onFailure", e) }

Java

FirebaseDynamicLinks.getInstance()
        .getDynamicLink(getIntent())
        .addOnSuccessListener(this, new OnSuccessListener<PendingDynamicLinkData>() {
            @Override
            public void onSuccess(PendingDynamicLinkData pendingDynamicLinkData) {
                // Get deep link from result (may be null if no link is found)
                Uri deepLink = null;
                if (pendingDynamicLinkData != null) {
                    deepLink = pendingDynamicLinkData.getLink();
                }


                // Handle the deep link. For example, open the linked
                // content, or apply promotional credit to the user's
                // account.
                // ...

                // ...
            }
        })
        .addOnFailureListener(this, new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                Log.w(TAG, "getDynamicLink:onFailure", e);
            }
        });

Bạn phải gọi getDynamicLink() trong mọi hoạt động có thể khởi chạy bằng đường liên kết, mặc dù đường liên kết có thể lấy từ ý định đang sử dụng getIntent().getData(). Đang gọi cho getDynamicLink() truy xuất liên kết và xoá dữ liệu đó để dữ liệu chỉ được xử lý một lần bởi .

Bạn cũng thường gọi getDynamicLink() trong hoạt động chính như bất kỳ hoạt động nào được khởi chạy bởi các bộ lọc ý định khớp với đường liên kết.

Số liệu phân tích bản ghi

Hệ thống có thể tự động theo dõi các sự kiện sau trong Google Analytics và hiển thị trong bảng điều khiển của Firebase.

  • dynamic_link_app_open
  • dynamic_link_first_open
  • dynamic_link_app_update

Để đăng ký những sự kiện này, bạn cần phải thiết lập Google Analytics trước truy xuất đường liên kết sâu. Kiểm tra xem các điều kiện sau có được đáp ứng hay không:

  • Gọi FirebaseDynamicLinks.getDynamicLink() tại điểm truy cập của ứng dụng:
    • Hoạt động của trình chạy. ví dụ: action="android.intent.action.MAIN", category="android.intent.category.LAUNCHER"
    • Điểm truy cập hoạt động. ví dụ: onStart(), onCreate().
    • Hoạt động liên kết sâu.
  • Thiết lập và sử dụng Google Analytics:
    • Bao gồm phần phụ thuộc Google Analytics. Thông tin này thường được tự động thêm vào Trình bổ trợ Gradle google-services.
    • Bao gồm Tệp cấu hình google-services.json trong ứng dụng của bạn.
    • Hãy gọi cho FirebaseAnalytics.getInstance() trước khi gọi FirebaseDynamicLinks.getDynamicLink()

Trên Android 6.0 (API cấp 23) trở lên, bạn có thể thiết lập ứng dụng để xử lý Đường liên kết động ngay khi ứng dụng đã được cài đặt bằng cách sử dụng Đường liên kết trong ứng dụng Android.

Đảm bảo rằng bạn đã thêm dấu vân tay chứng chỉ SHA256 cho ứng dụng vào dự án trong bảng điều khiển của Firebase. Đường liên kết động sẽ xử lý việc thiết lập mối liên kết với trang web của Đường liên kết ứng dụng cho miền Liên kết động của bạn.

Thêm bộ lọc ý định được tự động xác minh vào Hoạt động sẽ xử lý Đường liên kết động, đặt giá trị lưu trữ miền Liên kết động của dự án dưới dạng có trong bảng điều khiển của Firebase. Ngang bằng AndroidManifest.xml:

<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:host="example.com/link" android:scheme="http"/>
    <data android:host="example.com/link" android:scheme="https"/>
</intent-filter>

Xin lưu ý rằng bạn phải đặt android:host thành miền Đường liên kết động, chứ không phải miền của đường liên kết sâu.

Bạn phải đăng ký tất cả bộ lọc ý định autoVerify trong tệp kê khai của mình để Ứng dụng Đường liên kết để tương tác. Firebase tự động xử lý vấn đề này cho các miền Đường liên kết động của bạn, nhưng bạn có thể kiểm tra bằng cách mở tệp assetlinks.json được lưu trữ trên miền Liên kết động của bạn:

https://YOUR_DOMAIN/.well-known/assetlinks.json
Tất cả ứng dụng Firebase của bạn phải có tên gói.

Bây giờ, Liên kết động sẽ được gửi trực tiếp đến ứng dụng của bạn. Bạn sẽ có thể lấy đường liên kết sâu và Dữ liệu Liên kết động bằng cách gọi getDynamicLink() trong Hoạt động mà bạn đã thêm Đường liên kết ứng dụng bộ lọc ý định sang (như được mô tả trong Xử lý đường liên kết sâu).

Lưu ý: Vì việc gọi thông qua Đường liên kết ứng dụng sẽ đưa người dùng đến thẳng ứng dụng, nên Đường liên kết động không được đáp ứng phiên bản tối thiểu bắt buộc. Vì vậy, sau khi mở ứng dụng, bạn cần so sánh phiên bản tối thiểu của Liên kết động ( getminimumappversion) so với PackageInfo.versionCode và chuyển hướng người dùng để nâng cấp ứng dụng nếu cần bằng cách sử dụng getUpdateAppIntent.