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

Firebase डाइनैमिक लिंक बिल्डर एपीआई की मदद से, छोटे या लंबे डाइनैमिक लिंक बनाए जा सकते हैं. यह एपीआई एक लंबा डाइनैमिक लिंक या डाइनैमिक लिंक पैरामीटर वाला कोई ऑब्जेक्ट स्वीकार करता है और नीचे दिए गए उदाहरणों जैसे यूआरएल दिखाता है:

https://example.com/link/WXYZ
https://example.page.link/WXYZ

अपने Android ऐप्लिकेशन में डाइनैमिक लिंक बनाने से पहले, आपको Firebase SDK टूल शामिल करना होगा. अगर आपके ऐप्लिकेशन को डाइनैमिक लिंक पाने के लिए सेट अप किया गया है, तो इसका मतलब है कि आपने इन चरणों को पहले ही पूरा कर लिया है और अब इस सेक्शन को छोड़ा जा सकता है.

  1. अगर आपने पहले से ऐसा नहीं किया है, तो अपने 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 कंसोल में, डाइनैमिक लिंक सेक्शन खोलें.
  4. अगर आपने पहले से ही सेवा की शर्तें स्वीकार नहीं की हैं और अपने डाइनैमिक लिंक के लिए डोमेन सेट नहीं किया है, तो कहे जाने पर ऐसा करें.

    अगर आपके पास डाइनैमिक लिंक वाला डोमेन पहले से है, तो उसे नोट कर लें. प्रोग्राम के हिसाब से डाइनैमिक लिंक बनाते समय, आपको डाइनैमिक लिंक का डोमेन देना होगा.

  5. सुझाव: अपने डीप लिंक और फ़ॉलबैक लिंक में अनुमति वाले यूआरएल पैटर्न तय करें. ऐसा करके, उन पक्षों को डाइनैमिक लिंक बनाने से रोका जा सकता है जो आपके डोमेन से उन साइटों पर रीडायरेक्ट करते हैं जिन पर आपका कंट्रोल नहीं है. यूआरएल के खास पैटर्न को अनुमति देना देखें.

Firebase कंसोल का इस्तेमाल करना

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

डाइनैमिक लिंक बनाने के लिए, अपने बिल्डर के साथ एक नया DynamicLink ऑब्जेक्ट बनाएं. इसमें डाइनैमिक लिंक पैरामीटर को बिल्डर तरीकों से शामिल करें. इसके बाद, buildDynamicLink या buildShortDynamicLink पर कॉल करें.

यहां दिया गया एक छोटा सा उदाहरण, https://www.example.com/ के लिए एक लंबा डाइनैमिक लिंक बनाता है. यह लिंक, Android ऐप्लिकेशन और iOS पर com.example.ios ऐप्लिकेशन से खुलता है:

Kotlin+KTX

val dynamicLink = Firebase.dynamicLinks.dynamicLink {
    link = Uri.parse("https://www.example.com/")
    domainUriPrefix = "https://example.page.link"
    // Open links with this app on Android
    androidParameters { }
    // Open links with com.example.ios on iOS
    iosParameters("com.example.ios") { }
}

val dynamicLinkUri = dynamicLink.uri

Java

DynamicLink dynamicLink = FirebaseDynamicLinks.getInstance().createDynamicLink()
        .setLink(Uri.parse("https://www.example.com/"))
        .setDomainUriPrefix("https://example.page.link")
        // Open links with this app on Android
        .setAndroidParameters(new DynamicLink.AndroidParameters.Builder().build())
        // Open links with com.example.ios on iOS
        .setIosParameters(new DynamicLink.IosParameters.Builder("com.example.ios").build())
        .buildDynamicLink();

Uri dynamicLinkUri = dynamicLink.getUri();

छोटा डाइनैमिक लिंक बनाने के लिए, इसी तरह DynamicLink बनाएं और फिर buildShortDynamicLink को कॉल करें. छोटा लिंक बनाने के लिए, नेटवर्क कॉल की ज़रूरत होती है. इसलिए, सीधे लिंक देने के बजाय, buildShortDynamicLink एक Task दिखाता है. इससे अनुरोध पूरा होने पर, छोटा लिंक उपलब्ध हो जाता है. उदाहरण के लिए:

Kotlin+KTX

val shortLinkTask = Firebase.dynamicLinks.shortLinkAsync {
    link = Uri.parse("https://www.example.com/")
    domainUriPrefix = "https://example.page.link"
    // Set parameters
    // ...
}.addOnSuccessListener { (shortLink, flowchartLink) ->
    // You'll need to import com.google.firebase.dynamiclinks.component1 and
    // com.google.firebase.dynamiclinks.component2

    // Short link created
    processShortLink(shortLink, flowchartLink)
}.addOnFailureListener {
    // Error
    // ...
}

Java

Task<ShortDynamicLink> shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink()
        .setLink(Uri.parse("https://www.example.com/"))
        .setDomainUriPrefix("https://example.page.link")
        // Set parameters
        // ...
        .buildShortDynamicLink()
        .addOnCompleteListener(this, new OnCompleteListener<ShortDynamicLink>() {
            @Override
            public void onComplete(@NonNull Task<ShortDynamicLink> task) {
                if (task.isSuccessful()) {
                    // Short link created
                    Uri shortLink = task.getResult().getShortLink();
                    Uri flowchartLink = task.getResult().getPreviewLink();
                } else {
                    // Error
                    // ...
                }
            }
        });

डिफ़ॉल्ट रूप से, छोटे डाइनैमिक लिंक 17 वर्णों के लिंक सफ़िक्स के साथ जनरेट होते हैं. इस वजह से, हो सकता है कि कोई व्यक्ति किसी मान्य डाइनैमिक लिंक का अनुमान न लगा पाए. अगर आपके इस्तेमाल के उदाहरण में, किसी छोटे लिंक का सही अनुमान लगाने में कोई नुकसान नहीं होता है, तो शायद आप ऐसे सफ़िक्स जनरेट करना चाहें जो सिर्फ़ तब तक के हों, जब तक कि उनका यूनीक होना ज़रूरी हो. ऐसा करने के लिए, ShortDynamicLink.Suffix.SHORT को buildShortDynamicLink वाले तरीके से पास किया जा सकता है:

Kotlin+KTX

val shortLinkTask = Firebase.dynamicLinks.shortLinkAsync(ShortDynamicLink.Suffix.SHORT) {
    // Set parameters
    // ...
}

Java

Task<ShortDynamicLink> shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink()
        // ...
        .buildShortDynamicLink(ShortDynamicLink.Suffix.SHORT);
        // ...

डाइनैमिक लिंक बिल्डर एपीआई का इस्तेमाल करके, काम करने वाले किसी भी पैरामीटर के साथ डाइनैमिक लिंक बनाए जा सकते हैं. ज़्यादा जानकारी के लिए, एपीआई का रेफ़रंस देखें.

नीचे दिए गए उदाहरण में, कई सामान्य पैरामीटर सेट वाला डाइनैमिक लिंक बनाया गया है:

Kotlin+KTX

val dynamicLink = Firebase.dynamicLinks.dynamicLink { // or Firebase.dynamicLinks.shortLinkAsync
    link = Uri.parse("https://www.example.com/")
    domainUriPrefix = "https://example.page.link"
    androidParameters("com.example.android") {
        minimumVersion = 125
    }
    iosParameters("com.example.ios") {
        appStoreId = "123456789"
        minimumVersion = "1.0.1"
    }
    googleAnalyticsParameters {
        source = "orkut"
        medium = "social"
        campaign = "example-promo"
    }
    itunesConnectAnalyticsParameters {
        providerToken = "123456"
        campaignToken = "example-promo"
    }
    socialMetaTagParameters {
        title = "Example of a Dynamic Link"
        description = "This link works whether the app is installed or not!"
    }
}

Java

DynamicLink dynamicLink = FirebaseDynamicLinks.getInstance().createDynamicLink()
        .setLink(Uri.parse("https://www.example.com/"))
        .setDomainUriPrefix("https://example.page.link")
        .setAndroidParameters(
                new DynamicLink.AndroidParameters.Builder("com.example.android")
                        .setMinimumVersion(125)
                        .build())
        .setIosParameters(
                new DynamicLink.IosParameters.Builder("com.example.ios")
                        .setAppStoreId("123456789")
                        .setMinimumVersion("1.0.1")
                        .build())
        .setGoogleAnalyticsParameters(
                new DynamicLink.GoogleAnalyticsParameters.Builder()
                        .setSource("orkut")
                        .setMedium("social")
                        .setCampaign("example-promo")
                        .build())
        .setItunesConnectAnalyticsParameters(
                new DynamicLink.ItunesConnectAnalyticsParameters.Builder()
                        .setProviderToken("123456")
                        .setCampaignToken("example-promo")
                        .build())
        .setSocialMetaTagParameters(
                new DynamicLink.SocialMetaTagParameters.Builder()
                        .setTitle("Example of a Dynamic Link")
                        .setDescription("This link works whether the app is installed or not!")
                        .build())
        .buildDynamicLink();  // Or buildShortDynamicLink()

डाइनैमिक लिंक पैरामीटर, इन तरीकों से सेट किए जा सकते हैं:

DynamicLink पैरामीटर
सेटलिंक

वह लिंक खोलें जिस पर आपका ऐप्लिकेशन खुलेगा. वह यूआरएल बताएं जिसे आपका ऐप्लिकेशन मैनेज कर सके. आम तौर पर, ऐप्लिकेशन के कॉन्टेंट या पेलोड के हिसाब से ऐप्लिकेशन के हिसाब से लॉजिक किया जाता है. जैसे, लोगों को कूपन देना या वेलकम स्क्रीन दिखाना. यह लिंक, अच्छी तरह से फ़ॉर्मैट किया गया यूआरएल होना चाहिए. साथ ही, यूआरएल को सही तरीके से कोड में बदला गया होना चाहिए. साथ ही, इसमें एचटीटीपी या एचटीटीपीएस का इस्तेमाल किया गया हो, और यह कोई दूसरा डाइनैमिक लिंक नहीं होना चाहिए.

सेटडोमेनयूरीप्रीफ़िक्स आपका डाइनैमिक लिंक यूआरएल प्रीफ़िक्स, जो आपको Firebase कंसोल में मिल सकता है. डाइनैमिक लिंक वाला डोमेन, इन उदाहरणों जैसा दिखता है:
https://example.com/link
https://example.page.link
Android पैरामीटर
setFallbackUrl ऐप्लिकेशन इंस्टॉल न होने पर खुलने वाला लिंक. जब ऐप्लिकेशन इंस्टॉल न हो, तो Play Store से अपना ऐप्लिकेशन इंस्टॉल करने के अलावा कुछ और करने के लिए ऐसा करें. जैसे, कॉन्टेंट का मोबाइल वेब वर्शन खोलना या अपने ऐप्लिकेशन का प्रमोशन करने वाला पेज दिखाना.
सेट कम से कमवर्शन आपके ऐप्लिकेशन के उस कम से कम वर्शन का versionCode जो लिंक खोल सकता है. अगर इंस्टॉल किया गया ऐप्लिकेशन पुराना वर्शन है, तो उपयोगकर्ता को ऐप्लिकेशन अपग्रेड करने के लिए Play Store पर ले जाया जाता है.
Ios पैरामीटर
setAppStoreId आपके ऐप्लिकेशन का App Store आईडी, जब ऐप्लिकेशन इंस्टॉल न हो, तब उपयोगकर्ताओं को App Store पर भेजने के लिए इस्तेमाल किया जाता है
setFallbackUrl ऐप्लिकेशन इंस्टॉल न होने पर खुलने वाला लिंक. जब ऐप्लिकेशन इंस्टॉल न हो, तो ऐप स्टोर से अपना ऐप्लिकेशन इंस्टॉल करने के बजाय कुछ और करने के लिए ऐसा करें. जैसे, कॉन्टेंट का मोबाइल वेब वर्शन खोलना या अपने ऐप्लिकेशन का प्रमोशन करने वाला पेज दिखाना.
सेटकस्टमस्कीम आपके ऐप्लिकेशन के कस्टम यूआरएल स्कीम में, अगर आपके ऐप्लिकेशन के बंडल आईडी से अलग कोई दूसरी स्कीम तय की गई है
setIpadFallbackUrl ऐप्लिकेशन इंस्टॉल न होने पर, iPad पर खुलने वाला लिंक. जब ऐप्लिकेशन इंस्टॉल न हो, तो ऐप स्टोर से अपना ऐप्लिकेशन इंस्टॉल करने के अलावा कुछ और करने के लिए ऐसा करें. जैसे, कॉन्टेंट का वेब वर्शन खोलना या अपने ऐप्लिकेशन का प्रमोशन करने वाला पेज दिखाना.
setIpadbundleId iOS ऐप्लिकेशन का बंडल आईडी, जिसे iPad पर लिंक खोलने के लिए इस्तेमाल किया जाना है. ऐप्लिकेशन, Firebase कंसोल के 'खास जानकारी' पेज से आपके प्रोजेक्ट से जुड़ा होना चाहिए.
सेट कम से कमवर्शन आपके ऐप्लिकेशन के उस कम से कम वर्शन का वर्शन नंबर जो लिंक खोल सकता है. आपके ऐप्लिकेशन को खोलने पर, यह फ़्लैग उसे पास कर दिया जाता है. यह तय करना ज़रूरी है कि ऐप्लिकेशन को इस पर क्या कार्रवाई करनी है.
नेविगेशन की जानकारी वाले पैरामीटर
setFordredirectEnabled अगर इसे '1' पर सेट किया जाता है, तो डाइनैमिक लिंक के खुलने पर ऐप्लिकेशन की झलक दिखाने वाले पेज को छोड़कर, ऐप्लिकेशन या स्टोर पर रीडायरेक्ट करें. ऐप्लिकेशन में डाइनैमिक लिंक खोलने पर, ऐप्लिकेशन झलक पेज (डिफ़ॉल्ट रूप से चालू होता है) उपयोगकर्ताओं को सबसे सही डेस्टिनेशन पर भेज सकता है. हालांकि, अगर आपको उम्मीद है कि कोई डाइनैमिक लिंक सिर्फ़ उन ऐप्लिकेशन में खुलेगा जो इस पेज के बिना भी डाइनैमिक लिंक को खोल सकते हैं, तो उसे इस पैरामीटर की मदद से बंद किया जा सकता है. यह पैरामीटर सिर्फ़ iOS पर, डाइनैमिक लिंक के काम करने के तरीके पर असर डालेगा.
SocialMetaTag पैरामीटर
सेट का टाइटल डाइनैमिक लिंक को सोशल मीडिया पर शेयर करने के दौरान इस्तेमाल किया जाने वाला टाइटल.
सेट की जानकारी डाइनैमिक लिंक को सोशल मीडिया पर शेयर करने के दौरान इस्तेमाल की जाने वाली जानकारी.
setImageUrl इस लिंक से जुड़ी इमेज का यूआरएल. इमेज कम से कम 300x200 पिक्सल और 300 केबी से कम की होनी चाहिए.
GoogleAnalytics पैरामीटर
सेटसोर्स
setMedium
setCampaign
setTerm
setContent
Google Play Analytics के पैरामीटर. इन पैरामीटर (utm_source, utm_medium, utm_campaign, utm_term, utm_content) को Play Store पर पास किया जाता है. साथ ही, लिंक पेलोड में भी जोड़ा जाता है.
ItunesConnectAnalytics पैरामीटर
setProviderToken
setAffiliateToken
setCampaignToken
iTunes कनेक्ट के आंकड़ों के पैरामीटर. इन पैरामीटर (pt, at, ct) को App Store को पास किया जाता है.

लंबे डाइनैमिक लिंक को छोटा करने के लिए, अन्य बिल्डर की मदद से पैरामीटर सेट करने के बजाय, setLongLink का इस्तेमाल करके डाइनैमिक लिंक का यूआरएल तय करें:

Kotlin+KTX

val shortLinkTask = Firebase.dynamicLinks.shortLinkAsync {
    longLink = Uri.parse(
        "https://example.page.link/?link=" +
            "https://www.example.com/&apn=com.example.android&ibn=com.example.ios",
    )
}.addOnSuccessListener { (shortLink, flowChartLink) ->
    // You'll need to import com.google.firebase.dynamiclinks.component1 and
    // com.google.firebase.dynamiclinks.component2

    // Short link created
    processShortLink(shortLink, flowChartLink)
}.addOnFailureListener {
    // Error
    // ...
}

Java

Task<ShortDynamicLink> shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink()
        .setLongLink(Uri.parse("https://example.page.link/?link=https://www.example.com/&apn=com.example.android&ibn=com.example.ios"))
        .buildShortDynamicLink()
        .addOnCompleteListener(this, new OnCompleteListener<ShortDynamicLink>() {
            @Override
            public void onComplete(@NonNull Task<ShortDynamicLink> task) {
                if (task.isSuccessful()) {
                    // Short link created
                    Uri shortLink = task.getResult().getShortLink();
                    Uri flowchartLink = task.getResult().getPreviewLink();
                } else {
                    // Error
                    // ...
                }
            }
        });