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