Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

Nhận các liên kết động Firebase trên Android

Tiếp nhận các căn cứ hỏa lực động Liên kết mà bạn đã tạo , bạn phải bao gồm Liên kết động SDK trong ứng dụng của bạn và gọi FirebaseDynamicLinks.getDynamicLink() phương pháp khi tải ứng dụng của bạn để có được các dữ liệu thông qua trong liên kết động.

  1. Nếu bạn chưa sẵn sàng, thêm căn cứ hỏa lực cho dự án Android của bạn .

    Khi bạn đăng ký ứng dụng của mình, hãy chỉ định khóa ký SHA-1 của bạn. 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.

  2. Sử dụng các căn cứ hỏa lực Android HĐQT , kê khai phụ thuộc cho các thư viện động Links Android trong module của bạn (ứng dụng cấp) tập tin Gradle (thường là app/build.gradle ).

    Đối với một kinh nghiệm tối ưu với Dynamic Links, chúng tôi đề nghị cho phép Google Analytics trong dự án căn cứ hỏa lực của bạn và thêm SDK căn cứ hỏa lực cho Google Analytics để ứng dụng của bạn.

    Java

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:28.4.2')
    
        // Declare 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 việc sử dụng căn cứ hỏa lực Android HĐQT , ứng dụng của bạn sẽ luôn luôn sử dụng các phiên bản tương thích của các thư viện căn cứ hỏa lực Android.

    (Alternative) Khai báo căn cứ hỏa lực phụ thuộc thư viện mà không sử dụng HĐQT

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

    Lưu ý rằng nếu bạn sử dụng nhiều thư viện căn cứ hỏa lực trong ứng dụng của bạn, chúng tôi khuyên bạn nên sử dụng HĐQT để quản lý các phiên bản thư viện, đảm bảo rằng tất cả các phiên bản tương thích.

    dependencies {
        // Declare 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:20.1.1'
        implementation 'com.google.firebase:firebase-analytics:19.0.2'
    }
    

    Kotlin + KTX

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:28.4.2')
    
        // Declare 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-ktx'
        implementation 'com.google.firebase:firebase-analytics-ktx'
    }
    

    Bằng việc sử dụng căn cứ hỏa lực Android HĐQT , ứng dụng của bạn sẽ luôn luôn sử dụng các phiên bản tương thích của các thư viện căn cứ hỏa lực Android.

    (Alternative) Khai báo căn cứ hỏa lực phụ thuộc thư viện mà không sử dụng HĐQT

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

    Lưu ý rằng nếu bạn sử dụng nhiều thư viện căn cứ hỏa lực trong ứng dụng của bạn, chúng tôi khuyên bạn nên sử dụng HĐQT để quản lý các phiên bản thư viện, đảm bảo rằng tất cả các phiên bản tương thích.

    dependencies {
        // Declare 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-ktx:20.1.1'
        implementation 'com.google.firebase:firebase-analytics-ktx:19.0.2'
    }
    
  3. Trong căn cứ hỏa lực console , hãy mở phần động Links. Chấp nhận các điều khoản dịch vụ nếu bạn được nhắc làm như vậy.

Như với liên kết sâu đồng bằng , bạn phải thêm một bộ lọc ý định mới để hoạt động để xử lý các liên kết sâu sắc đối với ứng dụng của bạn. Bộ lọc ý định sẽ 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 được dữ liệu Liên kết động sau khi nó đượ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.

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

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);
            }
        });

Kotlin + KTX

Firebase.dynamicLinks
        .getDynamicLink(intent)
        .addOnSuccessListener(this) { 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) }

Bạn phải gọi getDynamicLink() trong mọi hoạt động mà có thể được đưa ra bởi các liên kết, mặc dù các liên kết có thể được cung cấp từ mục đích sử dụng getIntent().getData() . Gọi getDynamicLink() lấy link và xóa dữ liệu vì vậy nó được chỉ xử lý một lúc bằng cách ứng dụng của bạn.

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

Ghi lại số liệu phân tích

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

  • dynamic_link_app_open
  • dynamic_link_first_open
  • dynamic_link_app_update

Để đăng ký các sự kiện này, bạn cần định cấu hình Google Analytics trước khi truy xuất liên kết sâu. Kiểm tra các điều kiện sau được đáp ứng:

  • Gọi FirebaseDynamicLinks.getDynamicLink() tại các điểm entry ứng dụng của bạn:
    • Các hoạt động khởi động. ví dụ: action="android.intent.action.MAIN" , category="android.intent.category.LAUNCHER" .
    • Điểm vào hoạt động. ví dụ: onStart() , onCreate() .
    • Các hoạt động liên kết sâu sắc.
  • Thiết lập và sử dụng Google Analytics:
    • Bao gồm sự phụ thuộc của Google Analytics. Điều này thường được tự động thêm vào bởi google-services Gradle plugin.
    • Bao gồm google-services.json tập tin cấu hình trong ứng dụng của bạn.
    • Gọi FirebaseAnalytics.getInstance() trước khi gọi FirebaseDynamicLinks.getDynamicLink() .

Trên Android 6.0 (cấp API 23) trở lên, bạn có thể thiết lập ứng dụng của bạn để xử lý động Liên kết trực tiếp khi ứng dụng của bạn đã được cài đặt bằng cách sử dụng Android App Links .

Đảm bảo rằng bạn đã thêm SHA256 giấy chứng nhận dấu vân tay cho ứng dụng của bạn vào dự án của bạn trong căn cứ hỏa lực console . Liên kết động sẽ xử lý việc thiết lập liên kết trang web Liên kết ứng dụng cho miền Liên kết động của bạn.

Thêm một bộ lọc ý định tự động xác nhận vào Hoạt động đó sẽ xử lý các liên kết động, thiết lập các máy chủ tên miền động Liên kết của dự án của bạn như được tìm thấy trong giao diện điều khiển căn cứ hỏa lực . Trong 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>

Lưu ý rằng android:host phải được đặt ở miền động Liên kết của bạn, và không phải là lĩnh vực liên kết sâu.

Tất cả autoVerify lọc ý định trong biểu hiện của bạn phải được đăng ký theo thứ tự cho App Liên kết để tham gia. Xử lý căn cứ hỏa lực này tự động cho các tên miền động Liên kết của bạn, nhưng bạn có thể kiểm tra điều này bằng cách mở assetlinks.json tập tin được lưu trữ trên miền động Liên kết của bạn:

https://YOUR_DOMAIN/.well-known/assetlinks.json
Tất cả các tên gói ứng dụng căn cứ hỏa lực của bạn nên được bao gồm.

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

Lưu ý: Kể từ cách gọi thông qua App Liên kết đưa người dùng trực tiếp đến ứng dụng, một liên kết động không thể tôn vinh những phiên bản tối thiểu cần thiết. Vì vậy, khi ứng dụng được mở ra, bạn cần phải so sánh phiên bản tối thiểu Link động ( getminimumappversion ) chống lại PackageInfo.versionCode và chuyển hướng người dùng để nâng cấp ứng dụng nếu có yêu cầu sử dụng getUpdateAppIntent .