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

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

  1. अगर आपने पहले से ही A/B टेस्टिंग नहीं बनाई है, तो अपने 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 को चालू करें. साथ ही, अपने ऐप्लिकेशन में Google Analytics के लिए Firebase SDK टूल जोड़ें.

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:35.0.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:24.0.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 को सेट अप करना और उसका इस्तेमाल करना:

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

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

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