หากต้องการรับ Firebase Dynamic Links ที่
คุณสร้าง คุณต้องรวม Dynamic Links SDK ไว้ในแอปและเรียกใช้เมธอด FirebaseDynamicLinks.getDynamicLink()
เมื่อแอปโหลดเพื่อรับข้อมูลที่ส่งใน Dynamic Link
ตั้งค่า Firebase และ Dynamic Links SDK
เพิ่ม Firebase ลงในโปรเจ็กต์ Android หากยังไม่ได้ดำเนินการ
เมื่อคุณลงทะเบียนแอป ให้ระบุคีย์ SHA-1 Signing หากคุณใช้ App Link โปรดระบุคีย์ 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:33.5.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 เวอร์ชันที่เข้ากันได้เสมอ
(วิธีอื่น) เพิ่มไลบรารี 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:22.1.2' }
- ในคอนโซล 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+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()
ในทุกกิจกรรมที่อาจเปิดใช้โดยลิงก์ แม้ว่าลิงก์นั้นอาจพร้อมใช้งานจาก Intent โดยใช้ getIntent().getData()
ก็ตาม การเรียกใช้ getDynamicLink()
จะดึงข้อมูลลิงก์และล้างข้อมูลดังกล่าวเพื่อให้แอปของคุณประมวลผลเพียงครั้งเดียว
โดยปกติแล้วคุณจะเรียกใช้ getDynamicLink()
ในกิจกรรมหลัก รวมถึงกิจกรรมที่เปิดโดยตัวกรอง Intent ที่ตรงกับลิงก์
บันทึกข้อมูลวิเคราะห์
คุณสามารถติดตามกิจกรรมต่อไปนี้โดยอัตโนมัติใน Google Analytics และแสดงในคอนโซล Firebase
dynamic_link_app_open
dynamic_link_first_open
dynamic_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:
- ใส่การพึ่งพา Google Analytics โดยปกติแล้ว ปลั๊กอิน
google-services
Gradle จะเพิ่มข้อมูลนี้โดยอัตโนมัติ - รวม
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 จะจัดการตั้งค่าการเชื่อมโยงเว็บไซต์ของลิงก์แอปสำหรับโดเมน 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 Link มีส่วนร่วม Firebase จะจัดการเรื่องนี้โดยอัตโนมัติสำหรับโดเมน Dynamic Links ของคุณ แต่คุณตรวจสอบได้ด้วยการเปิดไฟล์ assetlinks.json
ที่โฮสต์ในโดเมน Dynamic Links ดังนี้
https://YOUR_DOMAIN/.well-known/assetlinks.json
ระบบจะส่ง Dynamic Links ไปยังแอปของคุณโดยตรง คุณจะดู Deep Link และข้อมูล Dynamic Link อื่นๆ ได้โดยเรียกใช้ getDynamicLink()
ในกิจกรรมที่คุณเพิ่มตัวกรอง Intent ของ App Link (ตามที่อธิบายไว้ในจัดการ Deep Link)
หมายเหตุ: เนื่องจากการเปิดใช้งานผ่าน App Link จะนําผู้ใช้ไปยังแอปโดยตรง ลิงก์แบบไดนามิกจึงไม่สามารถปฏิบัติตามเวอร์ชันขั้นต่ำที่จําเป็น ดังนั้นเมื่อแอปเปิดขึ้น คุณจะต้องเปรียบเทียบเวอร์ชันขั้นต่ำของลิงก์แบบไดนามิก ( getminimumappversion) กับ PackageInfo.versionCode และเปลี่ยนเส้นทางผู้ใช้เพื่ออัปเกรดแอปหากจำเป็นโดยใช้ getUpdateAppIntent