Để nhận được Đường liên kết động của Firebase mà
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 tải để nhận dữ liệu được chuyển vào Đường liên kết động.
Thiết lập Firebase và SDK liên kết động
Thêm Firebase vào dự án Android của bạn nếu bạn chưa thực hiệ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 trong ứng dụng, hãy chỉ định cả khoá SHA-256.
-
Trong tệp Gradle (ở cấp ứng dụng) mô-đun (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 thư viện Đường liên kết động dành cho Android. Bạn nên sử dụng Firebase Android BoM để 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 mình.
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.
(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ần phụ thuộc.
Xin lưu ý rằng nếu sử dụng nhiều thư viện Firebase trong ứng dụng, thì bạn nên sử dụng BoM để quản lý các phiên bản thư viện, qua đó đảm bảo 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' }
- Trong bảng điều khiển của Firebase, hãy mở mục Đườ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.
Thêm bộ lọc ý định cho đường liên kết sâu
Cũng giống như
đường 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ý đường liên kết sâu cho ứng dụng của bạn. Bộ lọc ý định phải nắm bắt các đường 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ủa bạn được cài đặt. Đây là yêu cầu bắt buộc để ứng dụng của bạn nhận được 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. 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 Đường liên kết động có đường liên kết sâu đến giao thứ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.
Xử lý đường liên kết sâu
Để 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ể được chạy bằng đường liên kết, mặc dù đường liên kết có thể có sẵn từ ý định sử dụng getIntent().getData()
. Việc gọi getDynamicLink()
sẽ truy xuất liên kết và xoá dữ liệu đó để chỉ ứng dụng của bạn xử lý dữ liệu một lần.
Bạn thường gọi getDynamicLink()
trong hoạt động chính cũng như mọi hoạt động do các bộ lọc ý định khớp với đường liên kết khởi chạy.
Số liệu phân tích bản ghi
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 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 định cấu hình Google Analytics trước khi 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. API này thường được trình bổ trợ Gradle
google-services
tự động thêm vào. - Đưa tệp cấu hình
google-services.json
vào ứng dụng của bạn. - Hãy gọi
FirebaseAnalytics.getInstance()
trước khi gọiFirebaseDynamicLinks.getDynamicLink()
.
Sử dụng đường liên kết động bằng cách sử dụng Đườ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 để 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 Đường liên kết ứng dụng cho miền Đường 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 máy chủ lưu trữ thành miền Đường liên kết động của dự án như bạn có thể tìm thấy trong bảng điều khiển của 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>
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 để Đường liên kết ứng dụng có thể 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ệ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.jsonBạn phải đưa tất cả tên gói của ứng dụng Firebase vào.
Giờ đây, Đường 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à các dữ liệu khác về Đường liên kết động bằng cách gọi getDynamicLink()
trong Hoạt động mà bạn đã thêm bộ lọc ý định Đường liên kết ứng dụng (như mô tả trong phần 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 thể tuân theo 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 Đường 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ần bằng getUpdateAppIntent.