Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

รับ Firebase Dynamic Links บน Android

จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ

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

  1. หากคุณยังไม่ได้ เพิ่ม Firebase ในโครงการ Android ของคุณ

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

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

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

    Java

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

    (ทางเลือก) เพิ่มการพึ่งพาไลบรารี Firebase โดยไม่ ใช้ BoM

    หากคุณเลือกที่จะไม่ใช้ Firebase BoM คุณต้องระบุเวอร์ชันไลบรารี Firebase แต่ละเวอร์ชันในบรรทัดการพึ่งพา

    โปรดทราบว่าหากคุณใช้ไลบรารี 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:21.1.0'
        implementation 'com.google.firebase:firebase-analytics:21.2.0'
    }
    

    Kotlin+KTX

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:31.1.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-ktx'
        implementation 'com.google.firebase:firebase-analytics-ktx'
    }
    

    เมื่อใช้ Firebase Android BoM แอปของคุณจะใช้ไลบรารี Firebase Android เวอร์ชันที่เข้ากันได้เสมอ

    (ทางเลือก) เพิ่มการพึ่งพาไลบรารี Firebase โดยไม่ ใช้ BoM

    หากคุณเลือกที่จะไม่ใช้ Firebase BoM คุณต้องระบุเวอร์ชันไลบรารี Firebase แต่ละเวอร์ชันในบรรทัดการพึ่งพา

    โปรดทราบว่าหากคุณใช้ไลบรารี 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-ktx:21.1.0'
        implementation 'com.google.firebase:firebase-analytics-ktx:21.2.0'
    }
    
  3. ใน คอนโซล Firebase ให้เปิดส่วน ลิงก์แบบไดนามิก ยอมรับข้อกำหนดในการให้บริการหากคุณได้รับแจ้งให้ดำเนินการดังกล่าว

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

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) }

คุณต้องเรียก 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()
    • กิจกรรมการเชื่อมโยงลึก
  • ตั้งค่าและใช้ Google Analytics:
    • รวมการพึ่งพา Google Analytics โดยปกติจะถูกเพิ่มโดยอัตโนมัติโดยปลั๊กอิน Gradle google-services Google
    • รวมไฟล์กำหนดค่า google-services.json ในแอปของคุณ
    • เรียก FirebaseAnalytics.getInstance() ก่อนเรียก FirebaseDynamicLinks.getDynamicLink()

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

ตรวจสอบให้แน่ใจว่าคุณได้เพิ่มลายนิ้วมือของใบรับรอง SHA256 สำหรับแอปของคุณในโครงการของคุณใน คอนโซล Firebase ลิงก์แบบไดนามิกจะจัดการการตั้งค่าการเชื่อมโยงเว็บไซต์ลิงก์แอปสำหรับโดเมนลิงก์แบบไดนามิกของคุณ

เพิ่มตัวกรองความตั้งใจที่ยืนยันอัตโนมัติไปยังกิจกรรมที่จะจัดการ 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 ของคุณ

ต้องลงทะเบียนตัวกรองความตั้งใจ autoVerify ทั้งหมดในไฟล์ Manifest ของคุณเพื่อให้ลิงก์แอปมีส่วนร่วม Firebase จัดการสิ่งนี้โดยอัตโนมัติสำหรับโดเมนลิงก์แบบไดนามิกของคุณ แต่คุณสามารถตรวจสอบได้โดยเปิดไฟล์ assetlinks.json ที่โฮสต์บนโดเมนลิงก์แบบไดนามิกของคุณ:

https://YOUR_DOMAIN/.well-known/assetlinks.json
ควรมีชื่อแพ็คเกจของแอป Firebase ทั้งหมดรวมอยู่ด้วย

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

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