หากต้องการรับลิงก์แบบไดนามิกของ Firebase ที่ คุณสร้างขึ้น คุณต้องรวม Dynamic Links SDK ไว้ในแอปของคุณและเรียกใช้เมธอด FirebaseDynamicLinks.getDynamicLink()
เมื่อแอปของคุณโหลดเพื่อให้ส่งข้อมูลใน Dynamic Link
ตั้งค่า Firebase และ Dynamic Links SDK
เพิ่ม Firebase ในโปรเจ็กต์ Android ของคุณ หากยังไม่ได้ ทำ
เมื่อคุณลงทะเบียนแอปของคุณให้ระบุคีย์การลงนาม SHA-1 ของคุณ หากคุณใช้ลิงค์แอพให้ระบุคีย์ SHA-256 ของคุณด้วย
ใช้ Firebase Android BoM ประกาศการอ้างอิงสำหรับไลบรารี Dynamic Links Android ใน ไฟล์ Gradle ของ โมดูล (ระดับแอป) (โดยทั่วไปคือ
app/build.gradle
)เพื่อประสบการณ์ที่ดีที่สุดกับลิงก์แบบไดนามิกเราขอแนะนำให้ เปิดใช้ Google Analytics ในโครงการของคุณ นอกจากนี้ในการตั้งค่า Analytics คุณต้องเพิ่ม Firebase SDK สำหรับ Google Analytics ลงในแอปของคุณ
Java
dependencies { // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:26.3.0') // Declare 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 แต่ละเวอร์ชันในบรรทัดการอ้างอิง
โปรดทราบว่าหากคุณใช้ไลบรารี Firebase หลาย ไลบรารีในแอปเราขอแนะนำให้ใช้ BoM เพื่อจัดการเวอร์ชันไลบรารีซึ่งจะช่วยให้มั่นใจได้ว่าทุกเวอร์ชันจะเข้ากันได้
dependencies { // Declare 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:19.1.1' implementation 'com.google.firebase:firebase-analytics:18.0.1' }
โคตรลิน + KTX
dependencies { // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:26.3.0') // Declare 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' }
เมื่อใช้ Firebase Android BoM แอปของคุณจะใช้ไลบรารี Firebase Android เวอร์ชันที่เข้ากันได้เสมอ
(ทางเลือก) ประกาศการอ้างอิงไลบรารี Firebase โดยไม่ต้อง ใช้ BoM
หากคุณเลือกที่จะไม่ใช้ Firebase BoM คุณต้องระบุไลบรารี Firebase แต่ละเวอร์ชันในบรรทัดการอ้างอิง
โปรดทราบว่าหากคุณใช้ไลบรารี Firebase หลาย ไลบรารีในแอปเราขอแนะนำให้ใช้ BoM เพื่อจัดการเวอร์ชันไลบรารีซึ่งจะช่วยให้มั่นใจได้ว่าทุกเวอร์ชันจะเข้ากันได้
dependencies { // Declare 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:19.1.1' implementation 'com.google.firebase:firebase-analytics-ktx:18.0.1' }
- ใน คอนโซล Firebase เปิดส่วน ลิงก์แบบไดนามิก ยอมรับข้อกำหนดในการให้บริการหากคุณได้รับแจ้งให้ทำเช่นนั้น
เพิ่มตัวกรองความตั้งใจสำหรับลิงก์ในรายละเอียด
เช่นเดียวกับ ลิงก์ ในรายละเอียดคุณต้องเพิ่มตัวกรองความตั้งใจใหม่ให้กับกิจกรรมที่จัดการลิงก์ในรายละเอียดสำหรับแอปของคุณ ตัวกรองความตั้งใจควรจับลิงก์ในรายละเอียดของโดเมนของคุณเนื่องจากลิงก์แบบไดนามิกจะเปลี่ยนเส้นทางไปยังโดเมนของคุณหากคุณติดตั้งแอป สิ่งนี้จำเป็นสำหรับแอปของคุณในการรับข้อมูล 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>
เมื่อผู้ใช้เปิดลิงก์แบบไดนามิกที่มีลิงก์ในรายละเอียดไปยังโครงร่างและโฮสต์ที่คุณระบุแอปของคุณจะเริ่มกิจกรรมด้วยตัวกรองความตั้งใจนี้เพื่อจัดการลิงก์
จัดการลิงก์ในรายละเอียด
หากต้องการรับลิงก์ในรายละเอียดให้เรียกใช้
getDynamicLink()
: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); } });
โคตรลิน + KTX
Firebase.dynamicLinks .getDynamicLink(intent) .addOnSuccessListener(this) { 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) }
คุณต้องเรียก
getDynamicLink()
ในทุกกิจกรรมที่อาจถูกเรียกใช้โดยลิงก์แม้ว่าลิงก์อาจพร้อมใช้งานจากความตั้งใจโดยใช้getIntent().getData()
การเรียกgetDynamicLink()
ดึงลิงก์และล้างข้อมูลนั้นเพื่อให้แอปของคุณประมวลผลเพียงครั้งเดียวโดยปกติคุณจะเรียก
getDynamicLink()
ในกิจกรรมหลักตลอดจนกิจกรรมใด ๆ ที่เปิดตัวโดยตัวกรองความตั้งใจที่ตรงกับลิงก์บันทึกการวิเคราะห์
สามารถติดตามเหตุการณ์ต่อไปนี้โดยอัตโนมัติใน 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 โดยปกติปลั๊กอิน
google-services
Gradle จะเพิ่มโดยอัตโนมัติ - รวมไฟล์กำหนดค่า
google-services.json
ไว้ในแอปของคุณ - เรียก
FirebaseAnalytics.getInstance()
ก่อนเรียกFirebaseDynamicLinks.getDynamicLink()
การจัดการลิงก์แบบไดนามิกโดยใช้ลิงก์แอป
ใน Android 6.0 (API ระดับ 23) ขึ้นไปคุณสามารถตั้งค่าแอปให้จัดการลิงก์แบบไดนามิกได้โดยตรงเมื่อแอปของคุณได้รับการติดตั้งโดยใช้ ลิงก์แอป Android
ตรวจสอบว่าคุณได้เพิ่มลายนิ้วมือใบรับรอง SHA256 สำหรับแอปลงในโปรเจ็กต์ของคุณใน คอนโซล Firebase Dynamic Links จะจัดการการตั้งค่าการเชื่อมโยงเว็บไซต์ App Links สำหรับโดเมน 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ตัวกรองเจตนา
autoVerify
ทั้งหมดในไฟล์ Manifest ของคุณจะต้องลงทะเบียนเพื่อให้ App Links มีส่วนร่วม Firebase จะจัดการสิ่งนี้โดยอัตโนมัติสำหรับโดเมนลิงก์แบบไดนามิกของคุณ แต่คุณสามารถตรวจสอบได้โดยเปิดไฟล์assetlinks.json
โฮสต์บนโดเมนลิงก์ไดนามิกของคุณ:https://YOUR_DOMAIN/.well-known/assetlinks.json
ควรรวมชื่อแพ็กเกจของแอป Firebase ทั้งหมดลิงก์แบบไดนามิกจะถูกส่งไปยังแอปของคุณโดยตรง คุณจะสามารถรับลิงก์ในรายละเอียดและข้อมูลไดนามิกลิงก์อื่น ๆ ได้โดยเรียกใช้
getDynamicLink()
ในกิจกรรมที่คุณเพิ่มตัวกรองเจตนาของลิงก์แอป (ตามที่อธิบายไว้ในการ จัดการลิงก์ในรายละเอียด )Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2020-10-06 UTC.