了解 2023 年 Google I/O 大会上介绍的 Firebase 亮点。了解详情

Android पर Firebase डायनामिक लिंक प्राप्त करें

आपके द्वारा बनाए गए फायरबेस डायनामिक लिंक प्राप्त करने के लिए, आपको अपने ऐप में डायनामिक लिंक एसडीके शामिल करना होगा और डायनेमिक लिंक में डेटा पास करने के लिए जब आपका ऐप लोड होता है तो FirebaseDynamicLinks.getDynamicLink() विधि को कॉल करें।

  1. यदि आपने पहले से नहीं किया है, तो अपने Android प्रोजेक्ट में Firebase जोड़ें

    जब आप अपना ऐप पंजीकृत करते हैं, तो अपनी SHA-1 साइनिंग कुंजी निर्दिष्ट करें। यदि आप ऐप लिंक का उपयोग करते हैं, तो अपनी SHA-256 कुंजी भी निर्दिष्ट करें।

  2. अपने मॉड्यूल (ऐप-लेवल) ग्रैडल फ़ाइल में (आमतौर पर <project>/<app-module>/build.gradle ), डायनामिक लिंक एंड्रॉइड लाइब्रेरी के लिए निर्भरता जोड़ें। हम लाइब्रेरी वर्ज़निंग को नियंत्रित करने के लिए Firebase Android BoM का उपयोग करने की सलाह देते हैं।

    डायनेमिक लिंक के साथ एक इष्टतम अनुभव के लिए, हम आपके फायरबेस प्रोजेक्ट में Google एनालिटिक्स को सक्षम करने और Google एनालिटिक्स के लिए फायरबेस एसडीके को अपने ऐप में जोड़ने की सलाह देते हैं।

    Kotlin+KTX

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:32.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 पुस्तकालयों के संगत संस्करणों का उपयोग करेगा।

    (वैकल्पिक) BoM का उपयोग किए बिना Firebase लाइब्रेरी निर्भरताएँ जोड़ें

    यदि आप Firebase BoM का उपयोग नहीं करना चुनते हैं, तो आपको प्रत्येक Firebase लाइब्रेरी संस्करण को उसकी निर्भरता रेखा में निर्दिष्ट करना होगा।

    ध्यान दें कि यदि आप अपने ऐप में एकाधिक फायरबेस लाइब्रेरी का उपयोग करते हैं, तो हम लाइब्रेरी संस्करणों को प्रबंधित करने के लिए बीओएम का उपयोग करने की दृढ़ता से अनुशंसा करते हैं, जो सुनिश्चित करता है कि सभी संस्करण संगत हैं।

    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.3.0'
    }
    

    Java

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:32.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 पुस्तकालयों के संगत संस्करणों का उपयोग करेगा।

    (वैकल्पिक) BoM का उपयोग किए बिना Firebase लाइब्रेरी निर्भरताएँ जोड़ें

    यदि आप Firebase BoM का उपयोग नहीं करना चुनते हैं, तो आपको प्रत्येक Firebase लाइब्रेरी संस्करण को उसकी निर्भरता रेखा में निर्दिष्ट करना होगा।

    ध्यान दें कि यदि आप अपने ऐप में एकाधिक फायरबेस लाइब्रेरी का उपयोग करते हैं, तो हम लाइब्रेरी संस्करणों को प्रबंधित करने के लिए बीओएम का उपयोग करने की दृढ़ता से अनुशंसा करते हैं, जो सुनिश्चित करता है कि सभी संस्करण संगत हैं।

    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.3.0'
    }
    
  3. Firebase कंसोल में, डायनामिक लिंक अनुभाग खोलें। यदि आपको ऐसा करने के लिए कहा जाए तो सेवा की शर्तें स्वीकार करें।

सादे डीप लिंक की तरह, आपको गतिविधि में एक नया इंटेंट फ़िल्टर जोड़ना होगा जो आपके ऐप के लिए डीप लिंक को हैंडल करता है। आशय फ़िल्टर को आपके डोमेन के डीप लिंक को पकड़ना चाहिए, क्योंकि यदि आपका ऐप इंस्टॉल है तो डायनेमिक लिंक आपके डोमेन पर रीडायरेक्ट करेगा। प्ले स्टोर से इंस्टॉल/अपडेट होने के बाद आपके ऐप को डायनेमिक लिंक डेटा प्राप्त करने और कंटिन्यू बटन पर एक टैप करने के लिए यह आवश्यक है। 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() विधि को कॉल करें:

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

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() कॉल करना होगा जो लिंक द्वारा लॉन्च की जा सकती है, भले ही लिंक getIntent().getData() उपयोग करने के इरादे से उपलब्ध हो। getDynamicLink() को कॉल करने से लिंक पुनर्प्राप्त हो जाता है और डेटा साफ़ हो जाता है, इसलिए इसे आपके ऐप द्वारा केवल एक बार संसाधित किया जाता है।

आप आम तौर पर getDynamicLink() मुख्य गतिविधि के साथ-साथ लिंक से मेल खाने वाले इंटेंट फ़िल्टर द्वारा लॉन्च की गई किसी भी गतिविधि को कॉल करते हैं।

रिकॉर्ड विश्लेषण

निम्नलिखित घटनाओं को स्वचालित रूप से Google Analytics में ट्रैक किया जा सकता है और फायरबेस कंसोल में दिखाया जा सकता है।

  • 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 कॉन्फ़िग फ़ाइल शामिल करें
    • FirebaseAnalytics.getInstance() कॉल करने से पहले FirebaseDynamicLinks.getDynamicLink() कॉल करें।

Android 6.0 (API स्तर 23) और उच्चतर पर, जब आपका ऐप Android ऐप लिंक का उपयोग करके पहले से ही इंस्टॉल हो, तो आप सीधे डायनेमिक लिंक को संभालने के लिए अपने ऐप को सेट कर सकते हैं।

पक्का करें कि आपने Firebase कंसोल में अपने प्रोजेक्ट में अपने ऐप के लिए SHA256 प्रमाणपत्र फ़िंगरप्रिंट जोड़ा है. डायनेमिक लिंक्स आपके डायनेमिक लिंक्स डोमेन के लिए ऐप लिंक्स वेबसाइट एसोसिएशन की स्थापना का काम संभालेंगे।

उस गतिविधि में एक ऑटो-सत्यापित इंटेंट फ़िल्टर जोड़ें जो डायनामिक लिंक को हैंडल करेगा, आपके प्रोजेक्ट के डायनामिक लिंक्स डोमेन के लिए होस्ट को फायरबेस कंसोल में पाए जाने के रूप में सेट करेगा। 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 इंटेंट फ़िल्टर पंजीकृत होने चाहिए। फायरबेस आपके डायनामिक लिंक डोमेन के लिए इसे स्वचालित रूप से संभालता है, लेकिन आप अपने डायनामिक लिंक डोमेन पर होस्ट की गई assetlinks.json फ़ाइल खोलकर इसकी जांच कर सकते हैं:

https://YOUR_DOMAIN/.well-known/assetlinks.json
आपके सभी फायरबेस ऐप्स के पैकेज नाम शामिल होने चाहिए।

डायनामिक लिंक अब सीधे आपके ऐप पर भेजे जाएंगे। आप उस गतिविधि में getDynamicLink() कॉल करके डीप लिंक और अन्य डायनामिक लिंक डेटा प्राप्त कर सकेंगे, जिसमें आपने ऐप लिंक इंटेंट फ़िल्टर जोड़ा था (जैसा कि डीप लिंक हैंडल करें में बताया गया है)।

नोट: चूंकि ऐप लिंक के माध्यम से इनवोक करने से उपयोगकर्ता सीधे ऐप पर पहुंच जाता है, डायनेमिक लिंक आवश्यक न्यूनतम संस्करण का सम्मान नहीं कर सकता है। इसलिए एक बार जब ऐप खुल जाता है, तो आपको डायनेमिक लिंक के न्यूनतम संस्करण ( getminimumappversion ) की तुलना PackageInfo.versionCode से करनी होगी और आवश्यकता पड़ने पर getUpdateAppIntent का उपयोग करके उपयोगकर्ता को ऐप को अपग्रेड करने के लिए रीडायरेक्ट करना होगा।