หากต้องการรับ Firebase Dynamic Links ที่ คุณสร้างขึ้น คุณต้องรวม Dynamic Links SDK ไว้ในแอปของคุณและเรียกใช้เมธอด FirebaseDynamicLinks.getDynamicLink()
เมื่อแอปของคุณโหลดเพื่อรับข้อมูลที่ส่งผ่านใน Dynamic Link
ตั้งค่า Firebase และ Dynamic Links SDK
หากคุณยังไม่ได้ เพิ่ม Firebase ในโครงการ Android ของคุณ
เมื่อคุณลงทะเบียนแอป ให้ระบุคีย์การลงนาม SHA-1 ของคุณ หากคุณใช้ App Links ให้ระบุคีย์ SHA-256 ด้วย
ใน ไฟล์ Gradle ของโมดูล (ระดับแอป) (โดยปกติคือ
<project>/<app-module>/build.gradle.kts
หรือ<project>/<app-module>/build.gradle
) ให้เพิ่มการพึ่งพาสำหรับลิงก์แบบไดนามิก ไลบรารี่สำหรับ Android เราขอแนะนำให้ใช้ Firebase Android BoM เพื่อควบคุมเวอร์ชันไลบรารีเพื่อประสบการณ์การใช้งานลิงก์แบบไดนามิกที่ดีที่สุด เราขอแนะนำ ให้เปิดใช้ Google Analytics ในโปรเจ็กต์ Firebase ของคุณ และเพิ่ม Firebase SDK สำหรับ Google Analytics ลงในแอปของคุณ
dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:32.7.0")) // 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' }
เมื่อใช้ Firebase Android BoM แอปของคุณจะใช้ไลบรารี Firebase Android เวอร์ชันที่เข้ากันได้เสมอ
กำลังมองหาโมดูลไลบรารีเฉพาะของ Kotlin อยู่ใช่ไหม? เริ่มตั้งแต่ เดือนตุลาคม 2023 (Firebase BoM 32.5.0) ทั้งนักพัฒนา Kotlin และ Java สามารถพึ่งพาโมดูลไลบรารีหลักได้ (สำหรับรายละเอียด โปรดดู คำถามที่พบบ่อยเกี่ยวกับโครงการริเริ่มนี้ )(ทางเลือก) เพิ่มการพึ่งพาไลบรารี Firebase โดยไม่ ใช้ BoM
หากคุณเลือกที่จะไม่ใช้ Firebase BoM คุณต้องระบุเวอร์ชันไลบรารี Firebase แต่ละเวอร์ชันในบรรทัดการขึ้นต่อกัน
โปรดทราบว่าหากคุณใช้ไลบรารี Firebase หลาย ไลบรารีในแอปของคุณ เราขอแนะนำอย่างยิ่งให้ใช้ BoM ในการจัดการเวอร์ชันไลบรารี ซึ่งจะทำให้แน่ใจได้ว่าทุกเวอร์ชันจะเข้ากันได้
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.2.0' implementation 'com.google.firebase:firebase-analytics:21.5.0' }
- ใน คอนโซล Firebase ให้เปิดส่วน ลิงก์แบบไดนามิก ยอมรับข้อกำหนดในการให้บริการหากคุณได้รับแจ้งให้ทำเช่นนั้น
เพิ่มตัวกรองเจตนาสำหรับลิงก์ในรายละเอียด
เช่นเดียวกับ ลิงก์ในรายละเอียดธรรมดา คุณต้องเพิ่มตัวกรองความตั้งใจใหม่ให้กับกิจกรรมที่จัดการลิงก์ในรายละเอียดสำหรับแอปของคุณ ตัวกรองเจตนาควรจับลิงก์ในรายละเอียดของโดเมนของคุณ เนื่องจากลิงก์แบบไดนามิกจะเปลี่ยนเส้นทางไปยังโดเมนของคุณหากแอปของคุณได้รับการติดตั้ง สิ่งนี้จำเป็นสำหรับแอปของคุณเพื่อรับข้อมูลไดนามิกลิงก์หลังจากติดตั้ง/อัปเดตจาก Play Store และแตะหนึ่งครั้งที่ปุ่มดำเนินการต่อ ใน 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>
เมื่อผู้ใช้เปิดลิงก์แบบไดนามิกด้วยลิงก์ในรายละเอียดไปยังรูปแบบและโฮสต์ที่คุณระบุ แอปของคุณจะเริ่มกิจกรรมด้วยตัวกรองความตั้งใจนี้เพื่อจัดการลิงก์
จัดการลิงก์ในรายละเอียด
หากต้องการรับ Deep Link ให้เรียกใช้เมธอด 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); } });
คุณต้องเรียก getDynamicLink()
ในทุกกิจกรรมที่อาจเปิดใช้โดยลิงก์ แม้ว่าลิงก์อาจใช้งานได้จากเจตนาโดยใช้ getIntent().getData()
การเรียก getDynamicLink()
จะดึงลิงก์และล้างข้อมูลนั้น เพื่อให้แอปของคุณประมวลผลเพียงครั้งเดียว
โดยปกติคุณจะเรียก getDynamicLink()
ในกิจกรรมหลักตลอดจนกิจกรรมใดๆ ที่เรียกใช้โดยตัวกรอง Intent ที่ตรงกับลิงก์
บันทึกการวิเคราะห์
เหตุการณ์ต่อไปนี้สามารถติดตามได้โดยอัตโนมัติใน Google Analytics และแสดงในคอนโซล Firebase
-
dynamic_link_app_open
-
dynamic_link_first_open
-
dynamic_link_app_update
ในการลงทะเบียนเหตุการณ์เหล่านี้ คุณต้องกำหนดค่า Google Analytics ก่อนที่จะเรียกข้อมูลลิงก์ในรายละเอียด ตรวจสอบว่าตรงตามเงื่อนไขต่อไปนี้:
- เรียก
FirebaseDynamicLinks.getDynamicLink()
ในจุดเข้าใช้งานแอปของคุณ: - กิจกรรมเปิดตัว เช่น:
action="android.intent.action.MAIN"
,category="android.intent.category.LAUNCHER"
- จุดเข้ากิจกรรม เช่น
onStart()
,onCreate()
- กิจกรรม Deep Link
- ตั้งค่าและใช้ Google Analytics:
- รวมการพึ่งพา Google Analytics โดยปกติแล้วปลั๊กอิน Gradle ของ
google-services
จะถูกเพิ่มโดยอัตโนมัติ - รวมไฟล์กำหนดค่า
google-services.json
ไว้ในแอปของคุณ - โทร
FirebaseAnalytics.getInstance()
ก่อนที่จะเรียกFirebaseDynamicLinks.getDynamicLink()
การจัดการลิงก์แบบไดนามิกโดยใช้ App Links
บน Android 6.0 (API ระดับ 23) และสูงกว่า คุณสามารถตั้งค่าแอปของคุณให้จัดการลิงก์แบบไดนามิกได้โดยตรงเมื่อติดตั้งแอปของคุณแล้วโดยใช้ Android App Links
ตรวจสอบให้แน่ใจว่าคุณได้เพิ่มลายนิ้วมือใบรับรอง SHA256 สำหรับแอปของคุณลงในโปรเจ็กต์ของคุณใน คอนโซล Firebase ไดนามิกลิงก์จะจัดการการตั้งค่าการเชื่อมโยงเว็บไซต์ของลิงก์แอปสำหรับโดเมนไดนามิกลิงก์ของคุณ
เพิ่มตัวกรอง Intent ที่ยืนยันอัตโนมัติให้กับกิจกรรมที่จะจัดการลิงก์แบบไดนามิก โดยตั้งค่าโฮสต์ให้กับโดเมนลิงก์แบบไดนามิกของโปรเจ็กต์ของคุณตามที่ พบในคอนโซล Firebase ใน 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>
โปรดทราบว่า android:host
ต้องตั้งค่าเป็นโดเมนไดนามิกลิงก์ของคุณ ไม่ใช่โดเมนของลิงก์ในรายละเอียดของคุณ
ตัวกรองความตั้งใจ autoVerify
ทั้งหมดในไฟล์ Manifest ของคุณจะต้องได้รับการลงทะเบียนเพื่อให้ App Links มีส่วนร่วม Firebase จะจัดการสิ่งนี้โดยอัตโนมัติสำหรับโดเมน Dynamic Links ของคุณ แต่คุณสามารถตรวจสอบได้โดยการเปิดไฟล์ assetlinks.json
ที่โฮสต์บนโดเมน Dynamic Links ของคุณ:
https://YOUR_DOMAIN/.well-known/assetlinks.jsonควรรวมชื่อแพ็คเกจของแอป Firebase ทั้งหมดไว้ด้วย
ลิงก์ไดนามิกจะถูกส่งไปยังแอปของคุณโดยตรง คุณจะรับ Deep Link และข้อมูล Dynamic Link อื่นๆ ได้โดยการเรียก getDynamicLink()
ในกิจกรรมที่คุณเพิ่มตัวกรอง Intent ของ App Links (ตามที่อธิบายไว้ใน Handle Deep Links )
หมายเหตุ: เนื่องจากการเรียกใช้ผ่าน App Links จะนำผู้ใช้ไปยังแอปโดยตรง ลิงก์แบบไดนามิกจึงไม่สามารถใช้เวอร์ชันขั้นต่ำที่กำหนดได้ ดังนั้น เมื่อเปิดแอปแล้ว คุณจะต้องเปรียบเทียบเวอร์ชันขั้นต่ำของ Dynamic Link ( getminimumappversion ) กับ PackageInfo.versionCode และเปลี่ยนเส้นทางผู้ใช้ให้อัปเกรดแอปหากจำเป็นโดยใช้ getUpdateAppIntent