Android-এ Dynamic Links তৈরি করা

আপনি Firebase Dynamic Links Builder API-এর মাধ্যমে ছোট বা বড় Dynamic Links তৈরি করতে পারবেন। এই API হয় একটি দীর্ঘ Dynamic Link বা Dynamic Link প্যারামিটার সহ একটি অবজেক্ট গ্রহণ করে এবং নিম্নলিখিত উদাহরণের মতো URL রিটার্ন করে:

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

আপনার Android অ্যাপে Dynamic Links তৈরি করার আগে, আপনাকে অবশ্যই Firebase SDK অন্তর্ভুক্ত করতে হবে। আপনার অ্যাপ Dynamic Links পাওয়ার জন্য সেট-আপ করা থাকলে, আপনি আগেই এইসব ধাপ সম্পূর্ণ করেছেন এবং এই বিভাগটি এড়িয়ে যেতে পারবেন।

  1. আপনি আগে থেকে না করে থাকলে, আপনার Android প্রোজেক্টে Firebase যোগ করুন।

    আপনার অ্যাপ রেজিস্টার করার সময়, SHA-1 সাইনিং কী উল্লেখ করুন। আপনি App Links ব্যবহার করলে, আপনার 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 বিভাগ খুলুন।
  4. আপনি যদি এখনও পরিষেবার শর্তাবলী গ্রহণ না করে থাকেন এবং আপনার Dynamic Links-এর জন্য ডোমেন সেট না করে থাকেন, তাহলে প্রম্পট করা হলে তা করুন।

    আপনার আগে থেকেই Dynamic Links ডোমেন থাকলে, সেটি নোট করে নিন। আপনি প্রোগ্রাম্যাটিক্যালি Dynamic Links তৈরি করার সময় আপনাকে Dynamic Links ডোমেন দিতে হবে।

  5. সাজেস্ট করা: আপনার ডিপ লিঙ্ক ও ফলব্যাক লিঙ্কে অনুমোদিত URL প্যাটার্ন নির্দিষ্ট করুন। এটি করার মাধ্যমে, আপনি অননুমোদিত পার্টিকে Dynamic Links তৈরি করা থেকে বিরত রাখেন যা আপনার ডোমেন থেকে আপনার নিয়ন্ত্রণ না করা সাইটে রিডাইরেক্ট করে। নির্দিষ্ট URL প্যাটার্নকে অনুমতি দিন দেখুন।

Firebase কনসোল ব্যবহার করুন

আপনি যদি টেস্টিংয়ের উদ্দেশ্যে অথবা আপনার মার্কেটিং টিমের জন্য একটিমাত্র Dynamic Link তৈরি করতে চান, যাতে সোশ্যাল মিডিয়া পোস্টের মতো কোনও জায়গায় ব্যবহার করার জন্য সহজেই লিঙ্ক তৈরি করা যায়, তাহলে সবচেয়ে সহজ উপায় হল Firebase কনসোল-এ গিয়ে ধাপে ধাপে ফর্ম পূরণ করে ম্যানুয়ালি একটি লিঙ্ক তৈরি করা।

Dynamic Link তৈরি করতে, এর বিল্ডারের সাহায্যে নতুন DynamicLink অবজেক্ট তৈরি করুন, বিল্ডার পদ্ধতির সাহায্যে Dynamic Link প্যারামিটার নির্দিষ্ট করুন। তারপর, buildDynamicLink বা buildShortDynamicLink নম্বরে কল করুন।

নিম্নলিখিত সংক্ষিপ্ত উদাহরণটি https://www.example.com/-এর জন্য একটি দীর্ঘ Dynamic Link তৈরি করে যা Android-এ আপনার Android অ্যাপের মাধ্যমে এবং iOS-এ com.example.ios অ্যাপের মাধ্যমে খোলে:

Kotlin

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

একটি শর্ট Dynamic Link তৈরি করতে, একই উপায়ে একটি DynamicLink তৈরি করুন এবং তারপর buildShortDynamicLink কল করুন। একটি ছোট লিঙ্ক তৈরি করার জন্য একটি নেটওয়ার্ক কল প্রয়োজন, তাই সরাসরি লিঙ্কটি ফেরত দেওয়ার পরিবর্তে, buildShortDynamicLink একটি Task ফেরত দেয়, যা অনুরোধ সম্পূর্ণ হলে ছোট লিঙ্কটি উপলভ্য করে তোলে। যেমন:

Kotlin

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
                    // ...
                }
            }
        });

ডিফল্ট হিসেবে, ১৭-অক্ষরের লিঙ্ক সাফিক্স সহ ছোট Dynamic Links তৈরি করা হয়, যার ফলে কোনও ব্যক্তির পক্ষে সঠিক Dynamic Link অনুমান করা অত্যন্ত কঠিন হয়ে যায়। আপনার ব্যবহারের ক্ষেত্রে, কেউ যদি কোনও শর্ট লিঙ্ক সফলভাবে অনুমান করে নেয় এবং তাতে কোনও ক্ষতি না হয়, তাহলে আপনি এমন সাফিক্স তৈরি করতে পারেন যা অনন্য হওয়ার জন্য যতটা প্রয়োজন ততটাই দীর্ঘ, যা আপনি buildShortDynamicLink পদ্ধতিতে ShortDynamicLink.Suffix.SHORT পাস করে করতে পারেন:

Kotlin

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

Java

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

আপনি Dynamic Link Builder API ব্যবহার করে কাজ করে এমন যেকোনও প্যারামিটার দিয়ে Dynamic Links তৈরি করতে পারবেন। আরও বিবরণের জন্য API রেফারেন্স দেখুন।

নিম্নলিখিত উদাহরণটি বেশ কয়েকটি সাধারণ প্যারামিটার সেট সহ একটি Dynamic Link তৈরি করে:

Kotlin

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

আপনি নিম্নলিখিত পদ্ধতিতে Dynamic Link প্যারামিটার সেট করতে পারবেন:

DynamicLink প্যারামিটার
setLink

আপনার অ্যাপ যে লিঙ্ক খুলবে। আপনার অ্যাপ হ্যান্ডেল করতে পারে এমন একটি URL উল্লেখ করুন, সাধারণত অ্যাপের কন্টেন্ট বা পেলোড, যা অ্যাপ-নির্দিষ্ট লজিক শুরু করে (যেমন ব্যবহারকারীকে কুপন দিয়ে ক্রেডিট করা বা একটি স্বাগত স্ক্রিন দেখানো)। এই লিঙ্কটি অবশ্যই একটি ভাল-ফরম্যাট করা URL হতে হবে, সঠিকভাবে URL-এনকোড করা হতে হবে, HTTP বা HTTPS ব্যবহার করতে হবে এবং অন্য কোনও ডাইনামিক লিঙ্ক হতে পারবে না।

setDomainUriPrefix আপনার Dynamic Link URL প্রিফিক্স, যা আপনি Firebase কনসোলে খুঁজে পাবেন। Dynamic Link ডোমেন দেখতে নিচের উদাহরণের মতো হয়:
https://example.com/link
https://example.page.link
AndroidParameters
setFallbackUrl অ্যাপ ইনস্টল করা না থাকলে যে লিঙ্ক খুলতে হবে। অ্যাপ ইনস্টল করা না থাকলে, Play Store থেকে আপনার অ্যাপ ইনস্টল করা ছাড়া অন্য কিছু করতে এটি নির্দিষ্ট করুন, যেমন কন্টেন্টের মোবাইল ওয়েব ভার্সন খোলা বা আপনার অ্যাপের জন্য একটি প্রচারমূলক পৃষ্ঠা দেখানো।
setMinimumVersion আপনার অ্যাপের ন্যূনতম ভার্সনের versionCode যা লিঙ্কটি খুলতে পারে। ইনস্টল করা অ্যাপটি পুরনো ভার্সন হলে, ব্যবহারকারীকে অ্যাপ আপগ্রেড করার জন্য Play Store-এ নিয়ে যাওয়া হয়।
IosParameters
setAppStoreId আপনার অ্যাপের App Store আইডি, অ্যাপ ইনস্টল করা না থাকলে ব্যবহারকারীদের App Store-এ পাঠাতে ব্যবহৃত হয়
setFallbackUrl অ্যাপ ইনস্টল করা না থাকলে যে লিঙ্ক খুলতে হবে। অ্যাপ ইনস্টল করা না থাকলে, App Store থেকে আপনার অ্যাপ ইনস্টল করা ছাড়া অন্য কিছু করতে এটি নির্দিষ্ট করুন, যেমন কন্টেন্টের মোবাইল ওয়েব ভার্সন খোলা বা আপনার অ্যাপের জন্য একটি প্রচারমূলক পৃষ্ঠা দেখানো।
setCustomScheme আপনার অ্যাপের কাস্টম URL স্কিম, যদি আপনার অ্যাপের বান্ডেল আইডি ছাড়া অন্য কিছু হিসেবে সংজ্ঞায়িত করা হয়
setIpadFallbackUrl অ্যাপ ইনস্টল করা না থাকলে iPad-এ খোলার জন্য লিঙ্ক। অ্যাপ ইনস্টল করা না থাকলে, অ্যাপ স্টোর থেকে আপনার অ্যাপ ইনস্টল করা ছাড়া অন্য কিছু করতে এটি উল্লেখ করুন, যেমন কন্টেন্টের ওয়েব ভার্সন খোলা বা আপনার অ্যাপের জন্য একটি প্রচারমূলক পৃষ্ঠা দেখানো।
setIpadBundleId লিঙ্ক খোলার জন্য iPad-এ ব্যবহার করার জন্য iOS অ্যাপের বান্ডিল আইডি। Firebase কনসোলের ওভারভিউ পৃষ্ঠা থেকে অ্যাপটি আপনার প্রোজেক্টের সাথে কানেক্ট করতে হবে।
setMinimumVersion আপনার অ্যাপের ন্যূনতম ভার্সনের ভার্সন নম্বর যা লিঙ্কটি খুলতে পারে। অ্যাপ খোলা হলে এই ফ্ল্যাগ আপনার অ্যাপে পাস করা হয় এবং আপনার অ্যাপকে সিদ্ধান্ত নিতে হবে যে এটি নিয়ে কী করা হবে।
NavigationInfoParameters
setForcedRedirectEnabled '১' হিসেবে সেট করা থাকলে, Dynamic Link খোলার সময় অ্যাপ প্রিভিউ পৃষ্ঠা এড়িয়ে যান এবং তার পরিবর্তে অ্যাপ বা স্টোরে রিডাইরেক্ট করুন। অ্যাপ প্রিভিউ পৃষ্ঠা (ডিফল্ট হিসেবে চালু করা থাকে) ব্যবহারকারীদের আরও নির্ভরযোগ্যভাবে সবচেয়ে উপযুক্ত গন্তব্যে পাঠাতে পারে যখন তারা অ্যাপে Dynamic Links খোলে; তবে, আপনি যদি আশা করেন যে Dynamic Link শুধুমাত্র এমন অ্যাপে খোলা হবে যা এই পৃষ্ঠা ছাড়াই নির্ভরযোগ্যভাবে Dynamic Links খুলতে পারে, তাহলে আপনি এই প্যারামিটারের মাধ্যমে এটি বন্ধ করতে পারেন। এই প্যারামিটারটি শুধুমাত্র iOS-এ Dynamic Link-এর আচরণকে প্রভাবিত করবে।
SocialMetaTagParameters
setTitle Dynamic Link সোশ্যাল পোস্টে শেয়ার করা হলে যে শীর্ষক ব্যবহার করা হবে।
setDescription সোশ্যাল পোস্টে Dynamic Link শেয়ার করার সময় যে বিবরণ ব্যবহার করা হবে।
setImageUrl এই লিঙ্কের সাথে সম্পর্কিত কোনও ছবির URL। ছবির সাইজ অন্তত ৩০০x২০০ পিক্সেল এবং ৩০০ কেবির কম হতে হবে।
GoogleAnalyticsParameters
setSource
setMedium
setCampaign
setTerm
setContent
Google Play অ্যানালিটিক্স প্যারামিটার। এইসব প্যারামিটার (utm_source, utm_medium, utm_campaign, utm_term, utm_content) Play Store-এ পাস করা হয় এবং লিঙ্ক পেলোডে যোগ করা হয়।
ItunesConnectAnalyticsParameters
setProviderToken
setAffiliateToken
setCampaignToken
iTunes Connect অ্যানালিটিক্স প্যারামিটার। এইসব প্যারামিটার (pt, at, ct) App Store-এ পাস করা হয়।

একটি দীর্ঘ Dynamic Link ছোট করতে, অন্যান্য বিল্ডার পদ্ধতির সাথে প্যারামিটার সেট করার পরিবর্তে setLongLink ব্যবহার করে Dynamic Link-এর URL নির্দিষ্ট করুন:

Kotlin

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
                    // ...
                }
            }
        });