Catch up on highlights from Firebase at Google I/O 2023. Learn more

Android पर डायनामिक लिंक बनाएं

आप फायरबेस डायनेमिक लिंक बिल्डर एपीआई के साथ छोटे या लंबे डायनेमिक लिंक बना सकते हैं। यह एपीआई या तो एक लंबे डायनेमिक लिंक या डायनेमिक लिंक पैरामीटर वाले ऑब्जेक्ट को स्वीकार करता है, और निम्नलिखित उदाहरणों की तरह URL लौटाता है:

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

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

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

    यदि आपके पास पहले से डायनेमिक लिंक डोमेन है, तो इसका ध्यान रखें। जब आप प्रोग्रामेटिक रूप से डायनेमिक लिंक बनाते हैं तो आपको डायनेमिक लिंक डोमेन प्रदान करने की आवश्यकता होती है।

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

फायरबेस कंसोल का प्रयोग करें

यदि आप या तो परीक्षण उद्देश्यों के लिए, या अपनी मार्केटिंग टीम के लिए आसानी से एक लिंक बनाने के लिए एक एकल डायनामिक लिंक उत्पन्न करना चाहते हैं, जिसका उपयोग सोशल मीडिया पोस्ट जैसी किसी चीज़ में किया जा सकता है, तो सबसे आसान तरीका फायरबेस कंसोल पर जाना और एक बनाना होगा मैन्युअल रूप से चरण-दर-चरण फ़ॉर्म का पालन करना।

डायनेमिक लिंक बनाने के लिए, बिल्डर विधियों के साथ डायनेमिक लिंक पैरामीटर निर्दिष्ट करते हुए, इसके बिल्डर के साथ एक नया DynamicLink ऑब्जेक्ट बनाएं। फिर, buildDynamicLink या buildShortDynamicLink कॉल करें।

निम्न न्यूनतम उदाहरण https://www.example.com/ के लिए एक लंबा डायनामिक लिंक बनाता है जो Android पर आपके 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.ktx.component1 and
    // com.google.firebase.dynamiclinks.ktx.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-वर्ण लिंक प्रत्यय के साथ उत्पन्न होते हैं जो यह अत्यधिक संभावना नहीं बनाते हैं कि कोई वैध डायनेमिक लिंक का अनुमान लगा सकता है। यदि, आपके उपयोग के मामले में, किसी व्यक्ति द्वारा शॉर्ट लिंक का सफलतापूर्वक अनुमान लगाने में कोई बुराई नहीं है, तो आप ऐसे प्रत्यय उत्पन्न करना पसंद कर सकते हैं जो केवल अद्वितीय होने के लिए आवश्यक हों, जिसे आप buildShortDynamicLink विधि में ShortDynamicLink.Suffix.SHORT पास करके कर सकते हैं :

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

आप निम्न विधियों से डायनेमिक लिंक पैरामीटर सेट कर सकते हैं:

डायनेमिकलिंक पैरामीटर
setLink

आपके ऐप का लिंक खुल जाएगा। एक यूआरएल निर्दिष्ट करें जिसे आपका ऐप संभाल सकता है, आमतौर पर ऐप की सामग्री या पेलोड, जो ऐप-विशिष्ट तर्क शुरू करता है (जैसे उपयोगकर्ता को कूपन देना या स्वागत स्क्रीन प्रदर्शित करना)। यह लिंक एक अच्छी तरह से प्रारूपित URL होना चाहिए, ठीक से URL-एन्कोडेड होना चाहिए, या तो HTTP या HTTPS का उपयोग करें, और कोई अन्य गतिशील लिंक नहीं हो सकता।

setDomainUriPrefix आपका डायनामिक लिंक URL प्रीफ़िक्स, जिसे आप Firebase कंसोल में पा सकते हैं। डायनेमिक लिंक डोमेन निम्नलिखित उदाहरणों की तरह दिखता है:
https://example.com/link
https://example.page.link
Androidपैरामीटर
setFallbackUrl ऐप इंस्टॉल नहीं होने पर खुलने वाला लिंक। ऐप इंस्टॉल नहीं होने पर प्ले स्टोर से अपना ऐप इंस्टॉल करने के अलावा कुछ और करने के लिए इसे निर्दिष्ट करें, जैसे कि सामग्री का मोबाइल वेब संस्करण खोलें, या अपने ऐप के लिए प्रचार पृष्ठ प्रदर्शित करें।
न्यूनतम संस्करण सेट करें आपके ऐप के न्यूनतम संस्करण का versionCode जो लिंक खोल सकता है। यदि इंस्टॉल किया गया ऐप पुराना संस्करण है, तो ऐप को अपग्रेड करने के लिए उपयोगकर्ता को Play Store पर ले जाया जाता है।
IosParameters
setAppStoreId आपके ऐप की ऐप स्टोर आईडी, ऐप इंस्टॉल नहीं होने पर उपयोगकर्ताओं को ऐप स्टोर पर भेजने के लिए उपयोग की जाती है
setFallbackUrl ऐप इंस्टॉल नहीं होने पर खुलने वाला लिंक। ऐप इंस्टॉल नहीं होने पर ऐप स्टोर से अपना ऐप इंस्टॉल करने के अलावा कुछ और करने के लिए इसे निर्दिष्ट करें, जैसे कि सामग्री का मोबाइल वेब संस्करण खोलें, या अपने ऐप के लिए प्रचार पृष्ठ प्रदर्शित करें।
setCustomScheme आपके ऐप की कस्टम URL योजना, यदि आपके ऐप के बंडल आईडी के अलावा कुछ और परिभाषित की गई है
setIpadFallbackUrl ऐप इंस्टॉल न होने पर iPad पर खुलने वाला लिंक। ऐप इंस्टॉल नहीं होने पर ऐप स्टोर से अपना ऐप इंस्टॉल करने के अलावा कुछ और करने के लिए इसे निर्दिष्ट करें, जैसे कि सामग्री का वेब संस्करण खोलें, या अपने ऐप के लिए प्रचार पृष्ठ प्रदर्शित करें।
सेटIpadBundleId लिंक खोलने के लिए iPad पर उपयोग किए जाने वाले iOS ऐप्लिकेशन का बंडल आईडी. ऐप को फायरबेस कंसोल के ओवरव्यू पेज से आपके प्रोजेक्ट से कनेक्ट होना चाहिए।
न्यूनतम संस्करण सेट करें आपके ऐप के न्यूनतम संस्करण की संस्करण संख्या जो लिंक खोल सकती है। जब यह खोला जाता है तो यह फ़्लैग आपके ऐप को भेज दिया जाता है, और आपके ऐप को यह तय करना होगा कि इसके साथ क्या करना है।
नेविगेशनइन्फोपैरामीटर
सेटफोर्सडरीडायरेक्ट सक्षम यदि '1' पर सेट है, तो डायनेमिक लिंक के खुलने पर ऐप पूर्वावलोकन पृष्ठ को छोड़ दें, और इसके बजाय ऐप या स्टोर पर रीडायरेक्ट करें। ऐप पूर्वावलोकन पृष्ठ (डिफ़ॉल्ट रूप से सक्षम) उपयोगकर्ताओं को ऐप्स में डायनेमिक लिंक खोलने पर अधिक विश्वसनीय रूप से सबसे उपयुक्त गंतव्य पर भेज सकता है; हालाँकि, यदि आप डायनेमिक लिंक को केवल उन ऐप्स में खोलने की अपेक्षा करते हैं जो इस पृष्ठ के बिना डायनेमिक लिंक को मज़बूती से खोल सकते हैं, तो आप इसे इस पैरामीटर से अक्षम कर सकते हैं। यह पैरामीटर केवल iOS पर डायनेमिक लिंक के व्यवहार को प्रभावित करेगा।
सोशलमेटाटैगपैरामीटर
setTitle किसी सामाजिक पोस्ट में डायनामिक लिंक साझा किए जाने पर उपयोग किया जाने वाला शीर्षक.
सेट विवरण सामाजिक पोस्ट में डायनामिक लिंक साझा किए जाने पर उपयोग करने के लिए विवरण।
सेटइमेजयूआरएल इस लिंक से संबंधित छवि का URL। छवि कम से कम 300x200 px, और 300 KB से कम होनी चाहिए।
GoogleAnalytics पैरामीटर
setSource
सेटमीडियम
setCampaign
सेटटर्म
सामग्री
Google Play विश्लेषिकी पैरामीटर। ये पैरामीटर ( utm_source , utm_medium , utm_campaign , utm_term , utm_content ) Play Store पर भेजे जाते हैं और साथ ही लिंक पेलोड में जोड़े जाते हैं।
आईट्यून्सकनेक्टएनालिटिक्सपैरामीटर
setProviderToken
setAffiliateToken
setCampaignToken
आईट्यून्स कनेक्ट एनालिटिक्स पैरामीटर। ये पैरामीटर ( pt , at , ct ) ऐप स्टोर में पास किए जाते हैं।

एक लंबे डायनामिक लिंक को छोटा करने के लिए, अन्य बिल्डर विधियों के साथ पैरामीटर सेट करने के बजाय setLongLink उपयोग करके डायनामिक लिंक का URL निर्दिष्ट करें:

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.ktx.component1 and
    // com.google.firebase.dynamiclinks.ktx.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
                    // ...
                }
            }
        });