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:35.1.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:24.0.1")
    implementation("com.google.firebase:firebase-analytics:24.0.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() মেথড কল করুন।

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

    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 সিগন্যাল পাঠানো হয় এবং আপনি নতুন Remote Config ভার্সন প্রকাশ করার পরে অটোমেটিক পরিবর্তনগুলি ফেচ করা হয়।

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

  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 ভার্সন ১৭.০.০-এর আগে, ৬০ মিনিটের উইন্ডোতে ৫টি ফেচ অনুরোধের সীমা ছিল (নতুন ভার্সনে আরও বেশি অনুমোদিত সীমা রয়েছে)।

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

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

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

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