Để 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
Nếu bạn chưa có, hãy thêm Firebase vào 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 cả khóa SHA-256 của bạn.
Trong tệp Gradle mô-đun (cấp ứng dụng) của bạn (thường là
<project>/<app-module>/build.gradle.kts
hoặc<project>/<app-module>/build.gradle
), hãy thêm phần phụ thuộc cho Liên kết động Thư viện Android. Chúng tôi khuyên bạn nên sử dụng Firebase Android BoM để kiểm soát việc lập phiên bản thư viện.Để có trải nghiệm tối ưu với Liên kết động, chúng tôi khuyên bạn nên bật Google Analytics trong dự án Firebase của mình và thêm SDK Firebase cho Google Analytics vào ứng dụng của bạn.
Kotlin+KTX
dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:32.3.1")) // 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-ktx' implementation 'com.google.firebase:firebase-analytics-ktx' }
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 Firebase.
(Thay thế) Thêm phụ thuộc thư viện Firebase mà không cần sử dụng BoM
Nếu 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 Firebase trong ứng dụng của mình, chúng tôi thực sự khuyên 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-ktx:21.1.0' implementation 'com.google.firebase:firebase-analytics-ktx:21.3.0' }
Java
dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:32.3.1")) // 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 Firebase.
(Thay thế) Thêm phụ thuộc thư viện Firebase mà không cần sử dụng BoM
Nếu 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 Firebase trong ứng dụng của mình, chúng tôi thực sự khuyên 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:21.1.0' implementation 'com.google.firebase:firebase-analytics:21.3.0' }
- Trong bảng điều khiển Firebase , hãy mở phần Liên kết động . 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.
Thêm bộ lọc mục đích cho các liên kết sâu
Giống như các liên kết sâu đơn giản , bạn phải thêm một bộ lọc ý định mới vào hoạt động xử lý các liên kết sâu cho ứ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 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.
Xử lý liên kết sâu
Để nhận 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ể được khởi chạy bởi liên kết, mặc dù liên kết có thể có sẵn từ mục đích sử dụnggetIntent().getData()
. GọigetDynamicLink()
sẽ truy xuất liên kết và xóa dữ liệu đó để ứng dụng của bạn chỉ xử lý một lần.Bạn thường gọi
getDynamicLink()
trong hoạt động chính cũng như bất kỳ hoạt động nào được khởi chạy bởi bộ lọc ý định phù hợp với liên kết.Ghi 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 đây được đáp ứng:
- Gọi
FirebaseDynamicLinks.getDynamicLink()
trong điểm nhập ứng dụng của bạn: - Hoạt động phóng. ví dụ:
action="android.intent.action.MAIN"
,category="android.intent.category.LAUNCHER"
. - Điểm vào 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. Điều này thường được tự động thêm bởi plugin Gradle
google-services
. - Bao gồm tệp cấu hình
google-services.json
trong ứng dụng của bạn. - Gọi
FirebaseAnalytics.getInstance()
trước khi gọiFirebaseDynamicLinks.getDynamicLink()
.
Xử lý Liên kết động bằng Liên kết ứng dụng
Trên Android 6.0 (API cấp 23) trở lên, bạn có thể thiết lập ứng dụng của mình để xử lý Liên kết động trực tiếp khi ứng dụng của bạn đã được cài đặt bằng cách sử dụng Liên kết ứ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 của mình vào dự án trong bảng điều khiển Firebase . 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 bộ lọc ý định được xác minh tự động vào Hoạt động sẽ xử lý Liên kết động, đặt máy chủ thành miền Liên kết động của dự án của bạn như được tìm thấy trong bảng điều khiển Firebase . 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 thành miền Liên kết động chứ không phải miền của liên kết sâu.Tất cả bộ lọc mục đích
autoVerify
trong tệp kê khai của bạn phải được đăng ký để Liên kết ứng dụng tương tác. Firebase tự động xử lý việc này cho các miền Liên kết động của bạn nhưng bạn có thể kiểm tra điều này bằng cách mở tệpassetlinks.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ả tên gói ứng dụng Firebase của bạn phải được đưa vào.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ể nhận được liên kết sâu và dữ liệu Liên kết động khác bằng cách gọi
getDynamicLink()
trong Hoạt động mà bạn đã thêm bộ lọc ý định Liên kết ứng dụng vào (như được mô tả trong Xử lý liên kết sâu ).Lưu ý: Vì việc gọi thông qua Liên kết ứng dụng sẽ đưa người dùng trực tiếp đến ứng dụng nên Liên kết động không thể đáp ứng phiên bản tối thiểu được yêu cầu. Vì vậy, sau khi ứng dụng được mở, bạn cần so sánh phiên bản tối thiểu của Liên kết động ( getminimumappversion ) vớ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 bằng getUpdateAppIntent .
Trừ khi có lưu ý khác, nội dung của trang này được cấp phép theo Giấy phép ghi nhận tác giả 4.0 của Creative Commons và các mẫu mã lập trình được cấp phép theo Giấy phép Apache 2.0. Để biết thông tin chi tiết, vui lòng tham khảo Chính sách trang web của Google Developers. Java là nhãn hiệu đã đăng ký của Oracle và/hoặc các đơn vị liên kết với Oracle.
Cập nhật lần gần đây nhất: 2023-10-02 UTC.
[{ "type": "thumb-down", "id": "missingTheInformationINeed", "label":"Thiếu thông tin tôi cần" },{ "type": "thumb-down", "id": "tooComplicatedTooManySteps", "label":"Quá phức tạp/quá nhiều bước" },{ "type": "thumb-down", "id": "outOfDate", "label":"Đã lỗi thời" },{ "type": "thumb-down", "id": "translationIssue", "label":"Vấn đề về bản dịch" },{ "type": "thumb-down", "id": "samplesCodeIssue", "label":"Vấn đề về mẫu/mã" },{ "type": "thumb-down", "id": "otherDown", "label":"Khác" }] [{ "type": "thumb-up", "id": "easyToUnderstand", "label":"Dễ hiểu" },{ "type": "thumb-up", "id": "solvedMyProblem", "label":"Giúp tôi giải quyết được vấn đề" },{ "type": "thumb-up", "id": "otherUp", "label":"Khác" }]