Android पर Firebase डाइनैमिक लिंक पाना

अपने बनाए गए Firebase डाइनैमिक लिंक पाने के लिए, आपको अपने ऐप्लिकेशन में डाइनैमिक लिंक SDK टूल को शामिल करना होगा. साथ ही, डाइनैमिक लिंक में पास किया गया डेटा पाने के लिए, जब आपका ऐप्लिकेशन लोड होगा, तब FirebaseDynamicLinks.getDynamicLink() तरीके को कॉल करें.

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

    अपना ऐप्लिकेशन रजिस्टर करते समय, अपनी SHA-1 साइनिंग कुंजी बताएं. अगर ऐप्लिकेशन लिंक का इस्तेमाल किया जाता है, तो अपनी SHA-256 कुंजी भी बताएं.

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

    हमारा सुझाव है कि डाइनैमिक लिंक के साथ बेहतर अनुभव पाने के लिए, अपने Firebase प्रोजेक्ट में Google Analytics चालू करें. साथ ही, अपने ऐप्लिकेशन में Google Analytics के लिए Firebase SDK टूल जोड़ें.

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:33.1.1"))
    
        // 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 लाइब्रेरी के हर वर्शन की जानकारी देनी होगी.

    ध्यान दें कि अगर आप अपने ऐप्लिकेशन में कई 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:22.0.2'
    }
    
    क्या आपको Kotlin से जुड़े लाइब्रेरी मॉड्यूल की तलाश है? अक्टूबर 2023 (Firebase BoM 32.5.0) से, Kotlin और Java डेवलपर, दोनों मुख्य लाइब्रेरी मॉड्यूल पर निर्भर कर सकते हैं. ज़्यादा जानकारी के लिए, इस इनिशिएटिव के बारे में अक्सर पूछे जाने वाले सवाल देखें.
  3. Firebase कंसोल में, डाइनैमिक लिंक सेक्शन खोलें. अगर आपसे कहा जाए, तो सेवा की शर्तों को स्वीकार करें.

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

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 में अपने-आप ट्रैक किए जा सकते हैं और 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 कॉन्फ़िगरेशन फ़ाइल शामिल करें.
    • FirebaseDynamicLinks.getDynamicLink() पर कॉल करने से पहले FirebaseAnalytics.getInstance() पर कॉल करें.

Android 6.0 (एपीआई लेवल 23) और उसके बाद के वर्शन पर, Android ऐप्लिकेशन के लिंक का इस्तेमाल करके, अपने ऐप्लिकेशन को सीधे तौर पर तब सेट अप किया जा सकता है, ताकि वह आपके ऐप्लिकेशन के इंस्टॉल होने पर, डाइनैमिक लिंक को हैंडल कर सके.

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

गतिविधि में, अपने-आप पुष्टि होने वाला इंटेंट फ़िल्टर जोड़ें, जो डाइनैमिक लिंक को हैंडल करेगा. साथ ही, होस्ट को आपके प्रोजेक्ट के डाइनैमिक लिंक डोमेन में 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() को कॉल करना होगा जिसमें आपने ऐप्लिकेशन लिंक के इंटेंट फ़िल्टर को जोड़ा है (जैसा कि डीप लिंक मैनेज करें में बताया गया है).

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