Catch up on everthing we announced at this year's Firebase Summit. Learn more

รับ Firebase Dynamic Links บน Android

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

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

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

  2. ใช้ Firebase Android BoM ประกาศพึ่งพาสำหรับห้องสมุดแบบไดนามิกลิงค์ Android ในโมดูลของคุณ (app ระดับ) ไฟล์ Gradle (ปกติ app/build.gradle )

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

    Java

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

    คอตลิน+KTX

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:29.0.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:21.0.0'
        implementation 'com.google.firebase:firebase-analytics-ktx:20.0.0'
    }
    
  3. ใน คอนโซล Firebase เปิดส่วนแบบไดนามิกลิงค์ ยอมรับข้อกำหนดในการให้บริการหากคุณได้รับแจ้งให้ดำเนินการดังกล่าว

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

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

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

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

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

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

https://YOUR_DOMAIN/.well-known/assetlinks.json
ทั้งหมดของปพลิเคชันของคุณ Firebase ชื่อแพคเกจควรจะรวม

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

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