Android-এ Firebase ডায়নামিক লিঙ্ক পাওয়া

আপনার তৈরি করা Firebase Dynamic Links পেতে, আপনাকে অবশ্যই অ্যাপে Dynamic Links SDK অন্তর্ভুক্ত করতে হবে এবং Dynamic Link-এ পাস করা ডেটা পেতে অ্যাপ লোড হওয়ার সময় FirebaseDynamicLinks.getDynamicLink() মেথড কল করতে হবে।

  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 বিভাগ খুলুন। আপনাকে পরিষেবার শর্তাবলীতে সম্মতি দিতে বলা হলে, তা করুন।

প্লেন ডিপ লিঙ্কের মতো, আপনাকে অবশ্যই অ্যাক্টিভিটিতে একটি নতুন ইনটেন্ট ফিল্টার যোগ করতে হবে যা আপনার অ্যাপের জন্য ডিপ লিঙ্ক ম্যানেজ করে। ইনটেন্ট ফিল্টারটি আপনার ডোমেনের ডিপ লিঙ্কগুলি ক্যাচ করবে, কারণ 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 কনফিগ ফাইল অন্তর্ভুক্ত করুন।
    • FirebaseDynamicLinks.getDynamicLink()-এ কল করার আগে FirebaseAnalytics.getInstance()-এ কল করুন।

Android 6.0 (API লেভেল 23) এবং তার পরবর্তী ভার্সনে, আপনার অ্যাপ আগে থেকেই ইনস্টল করা থাকলে, Android অ্যাপ লিঙ্ক ব্যবহার করে সরাসরি Dynamic Links ম্যানেজ করার জন্য আপনার অ্যাপ সেট-আপ করতে পারবেন।

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 এখন সরাসরি আপনার অ্যাপে পাঠানো হবে। আপনি যে অ্যাক্টিভিটিতে অ্যাপ লিঙ্ক ইনটেন্ট ফিল্টার যোগ করেছেন, সেখানে getDynamicLink() কল করে ডিপ লিঙ্ক এবং অন্যান্য Dynamic Link ডেটা পেতে পারবেন (ডিপ লিঙ্ক ম্যানেজ করুন-এ যেমন বর্ণনা করা হয়েছে)।

মনে রাখবেন: অ্যাপ লিঙ্কের মাধ্যমে ইনভোক করলে ব্যবহারকারী সরাসরি অ্যাপে চলে যান, তাই প্রয়োজনীয় ন্যূনতম ভার্সন ডায়নামিক লিঙ্ক মেনে চলতে পারে না। তাই অ্যাপটি খোলা হলে, আপনাকে PackageInfo.versionCode-এর সাথে ডায়নামিক লিঙ্কের ন্যূনতম ভার্সন ( getminimumappversion) তুলনা করতে হবে এবং প্রয়োজন হলে getUpdateAppIntent ব্যবহার করে ব্যবহারকারীকে অ্যাপ আপগ্রেড করার জন্য রিডাইরেক্ট করতে হবে।