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

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

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

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

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

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

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:34.13.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 लाइब्रेरी की डिपेंडेंसी जोड़ना 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:22.1.0'
        implementation 'com.google.firebase:firebase-analytics:23.2.0'
    }
  3. Firebase कंसोल में, Dynamic Links सेक्शन खोलें. अगर आपसे सेवा की शर्तें स्वीकार करने के लिए कहा जाता है, तो उन्हें स्वीकार करें.

सादे डीप लिंक की तरह, आपको अपने ऐप्लिकेशन के लिए डीप लिंक मैनेज करने वाली गतिविधि में एक नया इंटेंट फ़िल्टर जोड़ना होगा. इंटेंट फ़िल्टर को आपके डोमेन के डीप लिंक को कैप्चर करना चाहिए, क्योंकि अगर आपका ऐप्लिकेशन इंस्टॉल है, तो डाइनैमिक लिंक आपके डोमेन पर रीडायरेक्ट होगा.Dynamic Link यह ज़रूरी है, ताकि Play Store से इंस्टॉल/अपडेट होने के बाद, आपका ऐप्लिकेशन Dynamic Link डेटा पा सके. साथ ही, 'जारी रखें' बटन पर टैप करने के बाद भी यह ज़रूरी है. 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 को खोलते हैं, तो आपका ऐप्लिकेशन, लिंक को मैनेज करने के लिए इस इंटेंट फ़िल्टर के साथ गतिविधि शुरू करेगा.

डीप लिंक पाने के लिए, 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() को कॉल करना होगा जिसे लिंक से लॉन्च किया जा सकता है. भले ही, लिंक 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.
    • को कॉल करने से पहले, FirebaseAnalytics.getInstance() को कॉल करें.FirebaseDynamicLinks.getDynamicLink()

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

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

उस गतिविधि में, अपने-आप पुष्टि होने वाला इंटेंट फ़िल्टर जोड़ें जो 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 डोमेन पर सेट किया जाना चाहिए, न कि आपके डीप लिंक के डोमेन पर.

ऐप्लिकेशन लिंक को चालू करने के लिए, आपके मेनिफ़ेस्ट में मौजूद सभी autoVerify इंटेंट फ़िल्टर रजिस्टर होने चाहिए. Firebase, आपके Dynamic Links डोमेन के लिए यह काम अपने-आप करता है. हालांकि, इसे देखने के लिए , अपने Dynamic Links डोमेन पर होस्ट की गई assetlinks.json फ़ाइल खोलें:

https://YOUR_DOMAIN/.well-known/assetlinks.json
इसमें, Firebase के आपके सभी ऐप्लिकेशन के पैकेज के नाम शामिल होने चाहिए.

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

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