Google is committed to advancing racial equity for Black communities. See how.
หน้านี้ได้รับการแปลโดย Cloud Translation API
Switch to English

รับลิงก์แบบไดนามิกของ Firebase บน Android

ในการรับลิงก์แบบไดนามิกของ Firebase ที่ คุณสร้างขึ้น คุณต้องรวม Dynamic Links SDK ไว้ในแอปของคุณและเรียกใช้เมธอด FirebaseDynamicLinks.getDynamicLink() เมื่อแอปของคุณโหลดเพื่อให้ส่งข้อมูลใน Dynamic Link

  1. เพิ่ม Firebase ในโปรเจ็กต์ Android ของคุณ หากยังไม่ได้ ทำ

    เมื่อคุณลงทะเบียนแอปของคุณให้ระบุคีย์การลงนาม SHA-1 ของคุณ หากคุณใช้ลิงก์แอปให้ระบุคีย์ SHA-256 ของคุณด้วย

  2. ในโครงการระดับ build.gradle ไฟล์ให้แน่ใจว่าจะรวมถึงพื้นที่เก็บข้อมูล Maven ของ Google ในทั้งสองของคุณ buildscript และ allprojects ส่วน
  3. เพิ่มการอ้างอิงสำหรับไลบรารี Dynamic Links Android ไปยังไฟล์ Gradle ของโมดูลของคุณ (ระดับแอป) (โดยปกติคือ app/build.gradle )

    เพื่อประสบการณ์ที่ดีที่สุดกับลิงก์แบบไดนามิกเราขอแนะนำให้ เปิดใช้ Google Analytics ในโครงการของคุณ นอกจากนี้ในการตั้งค่า Analytics คุณต้องเพิ่ม Firebase SDK สำหรับ Analytics ลงในแอปของคุณ

    Java

    implementation 'com.google.firebase:firebase-dynamic-links:19.1.0'
    implementation 'com.google.firebase:firebase-analytics:17.5.0'

    โคตรลิน + KTX

    implementation 'com.google.firebase:firebase-dynamic-links-ktx:19.1.0'
    implementation 'com.google.firebase:firebase-analytics-ktx:17.5.0'
  4. ใน คอนโซล 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() ในกิจกรรมที่คุณเพิ่มตัวกรองเจตนาของลิงก์แอป (ตามที่อธิบายไว้ในการ จัดการลิงก์ในรายละเอียด )