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

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

  1. เพิ่ม Firebase ลงในโปรเจ็กต์ Android หากยังไม่ได้เพิ่ม

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

  2. ในไฟล์ Gradle ระดับโมดูลหรือระดับแอป (โดยปกติจะเป็น <project>/<app-module>/build.gradle.kts หรือ <project>/<app-module>/build.gradle) ให้เพิ่มทรัพยากร Dependency สำหรับไลบรารี Dynamic Links สำหรับ Android เราขอแนะนำให้ใช้ Firebase Android BoM เพื่อควบคุมการกำหนดเวอร์ชันของไลบรารี

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

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:34.12.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 เวอร์ชันที่เข้ากันได้อยู่เสมอ

    (ทางเลือก)  เพิ่มทรัพยากร 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:23.2.0'
    }
  3. ในคอนโซล Firebase ให้เปิดส่วนDynamic Links ยอมรับข้อกำหนดในการให้บริการหากระบบแจ้งให้ดำเนินการ

เช่นเดียวกับ Deep Link ธรรมดา คุณต้องเพิ่มตัวกรอง Intent ใหม่ลงในกิจกรรมที่จัดการ Deep Link สำหรับแอป ตัวกรอง Intent ควรดักจับ Deep Link ของโดเมน เนื่องจาก Dynamic Link จะเปลี่ยนเส้นทางไปยังโดเมนหากมีการติดตั้งแอป คุณต้องดำเนินการนี้เพื่อให้แอปได้รับข้อมูล Dynamic Link หลังจากที่ติดตั้ง/อัปเดตจาก Play Store และแตะปุ่ม "ดำเนินการต่อ" 1 ครั้ง ใน 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 ไปยัง Scheme และโฮสต์ที่คุณระบุ แอปจะเริ่มกิจกรรมด้วยตัวกรอง Intent นี้เพื่อจัดการลิงก์

หากต้องการรับ 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_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 ดังนี้

ใน Android 6.0 (ระดับ API 23) ขึ้นไป คุณสามารถตั้งค่าแอปให้จัดการ Dynamic Links ได้โดยตรงเมื่อมีการติดตั้งแอปอยู่แล้วโดยใช้ Android App Link

ตรวจสอบว่าคุณได้เพิ่มลายนิ้วมือของใบรับรอง SHA256 สำหรับแอปลงในโปรเจ็กต์ใน Firebaseคอนโซลแล้ว Dynamic Links จะจัดการการตั้งค่าการเชื่อมโยงเว็บไซต์ App Link สำหรับ โดเมน 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
คุณควรใส่ชื่อแพ็กเกจของแอป Firebase ทั้งหมด

Dynamic Links จะถูกส่งไปยังแอปของคุณโดยตรง คุณจะได้รับ Deep Link และข้อมูล Dynamic Link อื่นๆ โดยการเรียกใช้ getDynamicLink() ในกิจกรรมที่คุณเพิ่มตัวกรอง Intent ของ App Links (ตามที่อธิบายไว้ใน จัดการ Deep Link)

หมายเหตุ: เนื่องจาก App Link จะนำผู้ใช้ไปยังแอปโดยตรง ลิงก์แบบไดนามิกจึงไม่สามารถใช้เวอร์ชันขั้นต่ำที่กำหนดได้ ดังนั้นเมื่อเปิดแอปแล้ว คุณ ต้องเปรียบเทียบเวอร์ชันขั้นต่ำของลิงก์แบบไดนามิก ( getminimumappversion) กับ PackageInfo.versionCode และเปลี่ยนเส้นทางผู้ใช้ให้อัปเกรดแอปหากจำเป็นโดยใช้ getUpdateAppIntent