Android-এ রিমোট কনফিগ ব্যবহার করা শুরু করা

প্ল্যাটফর্ম বেছে নিন: iOS+ Android ওয়েব Flutter Unity C++


আপনি Firebase Remote Config ব্যবহার করে অ্যাপে প্যারামিটার নির্ধারণ করতে এবং ক্লাউডে সেগুলির ভ্যালু আপডেট করতে পারবেন। এর ফলে, অ্যাপ আপডেট ডিস্ট্রিবিউট না করেই অ্যাপের চেহারা ও ব্যবহারবিধি পরিবর্তন করতে পারবেন। এই নির্দেশিকা আপনাকে শুরু করার ধাপগুলি দেখায় এবং কিছু নমুনা কোড প্রদান করে, যার সবগুলিই firebase/quickstart-android GitHub রিপোজিটরি থেকে ক্লোন বা ডাউনলোড করার জন্য উপলভ্য।

ধাপ ১: আপনার অ্যাপে Firebase ও রিমোট কনফিগ SDK যোগ করুন

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

  2. Remote Config-এর জন্য, ব্যবহারকারীর প্রপার্টি ও দর্শকদের অ্যাপের কন্ডিশনাল টার্গেটিং ইনস্ট্যান্সের জন্য Google Analytics প্রয়োজন। আপনার প্রোজেক্টে চালু Google Analytics করেছেন কিনা তা নিশ্চিত করুন।

  3. আপনার মডিউল (অ্যাপ-লেভেল) Gradle ফাইলে (সাধারণত <project>/<app-module>/build.gradle.kts বা <project>/<app-module>/build.gradle), Android-এর জন্য Remote Config এবং Analytics লাইব্রেরির জন্য ডিপেন্ডেন্সি যোগ করুন। লাইব্রেরি ভার্সনিং কন্ট্রোল করতে Firebase Android BoM ব্যবহার করার সাজেশন দিই।

    এছাড়াও, Analytics সেট-আপ করার অংশ হিসেবে, আপনার অ্যাপে Google Analytics-এর জন্য Firebase SDK যোগ করতে হবে।

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:34.19.0"))
    
        // Add the dependencies for the Remote Config and Analytics libraries
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation("com.google.firebase:firebase-config")
    implementation("com.google.firebase:firebase-analytics")
    }

    Firebase Android BoM ব্যবহার করার মাধ্যমে, আপনার অ্যাপ সবসময় Firebase Android লাইব্রেরির মানানসই ভার্সন ব্যবহার করবে।

    (বিকল্প)  BoM ব্যবহার না করে Firebase লাইব্রেরি নির্ভরতা যোগ করুন

    আপনি Firebase BoM ব্যবহার না করার বিকল্প বেছে নিলে, আপনাকে অবশ্যই এর ডিপেন্ডেন্সি লাইনে প্রতিটি Firebase লাইব্রেরি ভার্সন উল্লেখ করতে হবে।

    মনে রাখবেন, আপনার অ্যাপে একাধিক Firebase লাইব্রেরি ব্যবহার করলে, লাইব্রেরি ভার্সন ম্যানেজ করার জন্য আমরা BoM ব্যবহার করার জন্য অত্যন্ত সাজেস্ট করি, এটি নিশ্চিত করে যে সব ভার্সনই মানানসই।

    dependencies {
        // Add the dependencies for the Remote Config and Analytics libraries
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation("com.google.firebase:firebase-config:23.1.0")
    implementation("com.google.firebase:firebase-analytics:23.2.0")
    }

ধাপ ২: Remote Config সিঙ্গলটন অবজেক্ট পান

Remote Config অবজেক্ট ইনস্ট্যান্স পান এবং ঘনঘন রিফ্রেশ করার অনুমতি দিতে ডেটা আনার ন্যূনতম ব্যবধান সেট করুন:

Kotlin

val remoteConfig: FirebaseRemoteConfig = Firebase.remoteConfig
val configSettings = remoteConfigSettings {
    minimumFetchIntervalInSeconds = 3600
}
remoteConfig.setConfigSettingsAsync(configSettings)

Java

FirebaseRemoteConfig mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance();
FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder()
        .setMinimumFetchIntervalInSeconds(3600)
        .build();
mFirebaseRemoteConfig.setConfigSettingsAsync(configSettings);

সিঙ্গেলটন অবজেক্টটি ইন-অ্যাপ ডিফল্ট প্যারামিটার ভ্যালু সেভ করতে, ব্যাকএন্ড থেকে আপডেট করা প্যারামিটার ভ্যালু ফেচ করতে এবং কখন ফেচ করা ভ্যালু আপনার অ্যাপে উপলভ্য করা হবে তা কন্ট্রোল করতে ব্যবহার করা হয়।

ডেভেলপমেন্টের সময়, তুলনামূলকভাবে কম ন্যূনতম ফেচ ইন্টারভ্যাল সেট করার জন্য সাজেস্ট করা হয়। আরও তথ্যের জন্য থ্রটলিং দেখুন।

ধাপ ৩: ইন-অ্যাপ ডিফল্ট প্যারামিটার ভ্যালু সেট করা

আপনি Remote Config অবজেক্টে ইন-অ্যাপ ডিফল্ট প্যারামিটার ভ্যালু সেট করতে পারবেন, যাতে আপনার অ্যাপ Remote Config ব্যাক-এন্ডের সাথে কানেক্ট করার আগে এটি যেভাবে কাজ করার কথা সেভাবেই কাজ করে এবং ব্যাক-এন্ডে কোনও ভ্যালু সেট করা না থাকলে যাতে ডিফল্ট ভ্যালু উপলভ্য থাকে।

  1. আপনার অ্যাপের res/xml ফোল্ডারে সেভ করা Map অবজেক্ট বা XML রিসোর্স ফাইল ব্যবহার করে প্যারামিটারের নাম ও ডিফল্ট প্যারামিটার ভ্যালুর একটি সেট সংজ্ঞায়িত করুন। ডিফল্ট প্যারামিটারের নাম ও ভ্যালু নির্ধারণ করতে Remote Config কুইকস্টার্ট স্যাম্পেল অ্যাপে XML ফাইল ব্যবহার করা হয়।

    আপনি যদি আগে থেকেই Remote Configব্যাকএন্ড প্যারামিটার ভ্যালু কনফিগার করে থাকেন, তাহলে আপনি একটি জেনারেট করা XML ফাইল ডাউনলোড করতে পারবেন যাতে সমস্ত ডিফল্ট ভ্যালু অন্তর্ভুক্ত থাকে এবং এটি আপনার অ্যাপের res/xml ডিরেক্টরিতে সেভ করতে পারবেন:

    REST

    curl --compressed -D headers -H "Authorization: Bearer token" -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig:downloadDefaults?format=XML -o remote_config_defaults.xml
    

    আপনি Google Cloud CLI বা Cloud Shell ব্যবহার করে নিচের কমান্ডটি রান করিয়ে বিয়ারার টোকেন জেনারেট করতে পারবেন:

    gcloud auth print-access-token
    

    এই টোকেনটি স্বল্পমেয়াদী, তাই আপনি যাচাইকরণ সংক্রান্ত সমস্যা পেলে আপনাকে এটি আবার তৈরি করতে হতে পারে।

    Firebase কনসোল

    1. Firebase কনসোলে, DevOps ও এনগেজমেন্ট > রিমোট কনফিগ > প্যারামিটার পৃষ্ঠায় যান।

    2. মেনু খুলুন এবং ডিফল্ট ভ্যালু ডাউনলোড করুন বিকল্প বেছে নিন।

    3. প্রম্পট করা হলে, Android-এর জন্য .xml চালু করুন, তারপর ফাইল ডাউনলোড করুন বিকল্পে ক্লিক করুন।

  2. Remote Config অবজেক্টে এইসব ভ্যালু যোগ করতে setDefaultsAsync(int), নিচে দেখানো পদ্ধতি অনুসরণ করুন:

    Kotlin

    remoteConfig.setDefaultsAsync(R.xml.remote_config_defaults)

    Java

    mFirebaseRemoteConfig.setDefaultsAsync(R.xml.remote_config_defaults);

ধাপ ৪: আপনার অ্যাপে ব্যবহার করার জন্য প্যারামিটার ভ্যালু পান

এখন আপনি Remote Config অবজেক্ট থেকে প্যারামিটারের ভ্যালু পেতে পারেন। আপনি ব্যাকএন্ডে ভ্যালু সেট করলে, সেগুলি নিয়ে আসুন এবং তারপরে অ্যাক্টিভেট করুন, সেইসব ভ্যালু আপনার অ্যাপে উপলভ্য হবে। অন্যথায়, আপনি setDefaultsAsync(int) ব্যবহার করে কনফিগার করা অ্যাপ-মধ্যস্থ প্যারামিটার ভ্যালু পাবেন। এইসব ভ্যালু পেতে, নিম্নলিখিত কোডে তালিকাভুক্ত পদ্ধতি কল করুন যা আপনার অ্যাপের প্রত্যাশিত ডেটা টাইপের সাথে ম্যাপ করে, আর্গুমেন্ট হিসেবে প্যারামিটার কী প্রদান করে:

ধাপ ৫: Remote Config ব্যাকএন্ডে প্যারামিটার ভ্যালু সেট করুন

Firebase কনসোল বা Remote Config ব্যাকএন্ড এপিআই ব্যবহার করে, আপনি নতুন সার্ভার-সাইড ডিফল্ট ভ্যালু তৈরি করতে পারবেন যা আপনার পছন্দসই কন্ডিশনাল লজিক বা ব্যবহারকারী টার্গেটিং অনুযায়ী ইন-অ্যাপ ভ্যালুকে ওভাররাইড করে। এই বিভাগে, এই ভ্যালু তৈরি করার জন্য Firebase কনসোলের ধাপগুলি বর্ণনা করা হয়েছে।

  1. Firebase কনসোলে, DevOps ও এনগেজমেন্ট > রিমোট কনফিগ > প্যারামিটার পৃষ্ঠায় যান।

  2. আপনার অ্যাপে সংজ্ঞায়িত প্যারামিটারের মতো একই নামের প্যারামিটার সংজ্ঞায়িত করুন। প্রতিটি প্যারামিটারের জন্য, আপনি একটি ডিফল্ট মান সেট করতে পারেন (যা অবশেষে সংশ্লিষ্ট ইন-অ্যাপ ডিফল্ট মানকে ওভাররাইড করবে) এবং আপনি শর্তসাপেক্ষ মানও সেট করতে পারেন। আরও জানতে, Remote Config প্যারামিটার ও শর্তাবলী দেখুন।

  3. কাস্টম সিগন্যাল কন্ডিশন ব্যবহার করলে, অ্যাট্রিবিউট ও সেগুলির ভ্যালু নির্ধারণ করুন। নিচের উদাহরণ থেকে বোঝা যায় যে কীভাবে কাস্টম সিগন্যাল কন্ডিশন নির্ধারণ করতে হয়।

    Kotlin

            val customSignals = customSignals {
                put("city", "Tokyo")
                put("preferred_event_category", "sports")
            }
    
            remoteConfig.setCustomSignals(customSignals)
        

    Java

            CustomSignals customSignals = new CustomSignals.Builder()
                .put("city", "Tokyo")
                .put("preferred_event_category", "sports")
                .build();
    
            mFirebaseRemoteConfig.setCustomSignals(customSignals);
    
        

ধাপ ৬: ভ্যালু নিয়ে এসে অ্যাক্টিভেট করা

  1. Remote Config ব্যাকএন্ড থেকে প্যারামিটার ভ্যালু ফেচ করতে, fetch() মেথড কল করুন। ব্যাকএন্ডে আপনি যেসব ভ্যালু সেট করেন সেগুলি Remote Config অবজেক্টে ফেচ ও স্টোর করা হয়।
  2. আপনার অ্যাপের জন্য ফেচ করা প্যারামিটার ভ্যালু উপলভ্য করতে, activate() মেথড কল করুন।

    যেসব ক্ষেত্রে আপনি একটি কলের মাধ্যমে ভ্যালু নিয়ে এসে অ্যাক্টিভেট করতে চান, সেখানে আপনি fetchAndActivate() অনুরোধ ব্যবহার করে Remote Config ব্যাকএন্ড থেকে ভ্যালু নিয়ে এসে অ্যাপের জন্য উপলভ্য করতে পারেন:

    Kotlin

    remoteConfig.fetchAndActivate()
        .addOnCompleteListener(this) { task ->
            if (task.isSuccessful) {
                val updated = task.result
                Log.d(TAG, "Config params updated: $updated")
                Toast.makeText(
                    this,
                    "Fetch and activate succeeded",
                    Toast.LENGTH_SHORT,
                ).show()
            } else {
                Toast.makeText(
                    this,
                    "Fetch failed",
                    Toast.LENGTH_SHORT,
                ).show()
            }
            displayWelcomeMessage()
        }

    Java

    mFirebaseRemoteConfig.fetchAndActivate()
            .addOnCompleteListener(this, new OnCompleteListener<Boolean>() {
                @Override
                public void onComplete(@NonNull Task<Boolean> task) {
                    if (task.isSuccessful()) {
                        boolean updated = task.getResult();
                        Log.d(TAG, "Config params updated: " + updated);
                        Toast.makeText(MainActivity.this, "Fetch and activate succeeded",
                                Toast.LENGTH_SHORT).show();
    
                    } else {
                        Toast.makeText(MainActivity.this, "Fetch failed",
                                Toast.LENGTH_SHORT).show();
                    }
                    displayWelcomeMessage();
                }
            });

যেহেতু এই আপডেট করা প্যারামিটার ভ্যালু আপনার অ্যাপের আচরণ ও চেহারাকে প্রভাবিত করে, তাই আপনাকে এমন সময়ে ফেচ করা ভ্যালু অ্যাক্টিভেট করতে হবে যা আপনার ব্যবহারকারীর জন্য মসৃণ অভিজ্ঞতা নিশ্চিত করে, যেমন ব্যবহারকারী পরের বার আপনার অ্যাপ খুললে। আরও তথ্য ও উদাহরণের জন্য রিমোট কনফিগার লোডিং স্ট্র্যাটেজি দেখুন।

ধাপ ৭: রিয়েল-টাইমে আপডেট শুনুন

প্যারামিটার ভ্যালু ফেচ করার পরে, আপনি রিয়েল-টাইম Remote Config ব্যবহার করে Remote Config ব্যাকএন্ড থেকে আপডেট শুনতে পারবেন। আপডেট উপলভ্য হলে কানেক্ট করা ডিভাইসে রিয়েল-টাইম Remote Config সিগন্যাল পাঠায় এবং আপনি নতুন Remote Config ভার্সন প্রকাশ করার পরে অটোমেটিক পরিবর্তনগুলি ফেচ করে।

Firebase SDK for Android v21.3.0+ (Firebase BoM v31.2.4+) ভার্সনে রিয়েল-টাইম আপডেট কাজ করে।

  1. আপনার অ্যাপে, আপডেট শোনার জন্য addOnConfigUpdateListener() ব্যবহার করুন এবং অটোমেটিক নতুন প্যারামিটার ভ্যালু ফেচ করুন। আপডেট করা কনফিগারেশন অ্যাক্টিভেট করতে onUpdate() কলব্যাক প্রয়োগ করুন।

    Kotlin

    remoteConfig.addOnConfigUpdateListener(object : ConfigUpdateListener {
            override fun onUpdate(configUpdate : ConfigUpdate) {
            Log.d(TAG, "Updated keys: " + configUpdate.updatedKeys);
    
            if (configUpdate.updatedKeys.contains("welcome_message")) {
                remoteConfig.activate().addOnCompleteListener {
                    displayWelcomeMessage()
                }
            }
            }
    
            override fun onError(error : FirebaseRemoteConfigException) {
                Log.w(TAG, "Config update error with code: " + error.code, error)
            }
        })
        

    Java

        mFirebaseRemoteConfig.addOnConfigUpdateListener(new ConfigUpdateListener() {
            @Override
            public void onUpdate(ConfigUpdate configUpdate) {
                Log.d(TAG, "Updated keys: " + configUpdate.getUpdatedKeys());
                mFirebaseRemoteConfig.activate().addOnCompleteListener(new OnCompleteListener<Boolean>() {
                    @Override
                    public void onComplete(@NonNull Task<Boolean> task) {
                        displayWelcomeMessage();
                    }
                });
            }
            @Override
            public void onError(FirebaseRemoteConfigException error) {
                Log.w(TAG, "Config update error with code: " + error.getCode(), error);
            }
        });
        
  2. পরের বার আপনার Remote Config-এর নতুন ভার্সন প্রকাশ করলে, যেসব ডিভাইস আপনার অ্যাপ চালাচ্ছে এবং পরিবর্তনের জন্য অপেক্ষা করছে, সেগুলি ConfigUpdateListener কল করবে।

থ্রটলিং

কোনও অ্যাপ অল্প সময়ের মধ্যে অনেকবার ডেটা ফেচ করলে, ফেচ কল থ্রটল করা হয় এবং SDK FirebaseRemoteConfigFetchThrottledException রিটার্ন করে। SDK ভার্সন 17.0.0-এর আগে, ৬০ মিনিটের উইন্ডোতে ৫টি ফেচ অনুরোধের সীমা ছিল (নতুন ভার্সনে আরও বেশি অনুমোদিত সীমা আছে)।

অ্যাপ ডেভেলপমেন্টের সময়, আপনি হয়ত খুব ঘনঘন (প্রতি ঘণ্টায় অনেকবার) কনফিগারেশন ফেচ ও অ্যাক্টিভেট করতে চাইবেন, যাতে আপনি অ্যাপ ডেভেলপ ও টেস্ট করার সময় দ্রুত পুনরাবৃত্তি করতে পারেন। রিয়েল-টাইম Remote Config আপডেট, সার্ভারে কনফিগারেশন আপডেট করা হলে, অটোমেটিক ক্যাশে বাইপাস করে। ১০ জন পর্যন্ত ডেভেলপার সহ কোনও প্রজেক্টে দ্রুত ইটারেশন অ্যাকোমোডেট করতে, আপনি সাময়িকভাবে FirebaseRemoteConfigSettings অবজেক্টে ডেটা আনার ন্যূনতম ব্যবধান কম (setMinimumFetchIntervalInSeconds) সেট করতে পারেন।

Remote Config-এর জন্য ডিফল্ট ন্যূনতম ফেচ ইন্টারভ্যাল হল ১২ ঘণ্টা, যার অর্থ হল, ১২ ঘণ্টার উইন্ডোতে, যতগুলি ফেচ কল করা হোক না কেন, ব্যাকএন্ড থেকে কনফিগারেশন একবারের বেশি ফেচ করা হবে না। বিশেষ করে, নিম্নলিখিত ক্রম অনুসারে ন্যূনতম ফেচ ইন্টারভ্যাল নির্ধারণ করা হয়:

  1. fetch(long)-এর প্যারামিটার
  2. প্যারামিটারটি হল FirebaseRemoteConfigSettings.setMinimumFetchIntervalInSeconds(long)
  3. ১২ ঘণ্টার ডিফল্ট ভ্যালু

কাস্টম ভ্যালুতে ন্যূনতম ফেচ ইন্টারভ্যাল সেট করতে, FirebaseRemoteConfigSettings.Builder.setMinimumFetchIntervalInSeconds(long) ব্যবহার করুন।