অ্যান্ড্রয়েডে রিমোট কনফিগ দিয়ে শুরু করুন

প্ল্যাটফর্ম নির্বাচন করুন: iOS+ অ্যান্ড্রয়েড ওয়েব ফ্লাটার ইউনিটি C++


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

ধাপ ১: আপনার অ্যাপে Firebase এবং Remote Config SDK যোগ করুন

  1. যদি আগে থেকে না করে থাকেন, তাহলে আপনার অ্যান্ড্রয়েড প্রজেক্টে ফায়ারবেস যোগ করুন

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

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

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

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:34.11.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 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.0.1")
    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);

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

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

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

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

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

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

    বিশ্রাম

    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. প্যারামিটার ট্যাবে, মেনুটি খুলুন এবং 'Download default values' নির্বাচন করুন।

    2. নির্দেশিত হলে, Android-এর জন্য .xml সক্রিয় করুন, তারপর 'Download file'-এ ক্লিক করুন।

  2. দেখানো অনুযায়ী, setDefaultsAsync(int) ব্যবহার করে এই মানগুলি Remote Config অবজেক্টে যোগ করুন:

    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 ব্যাকএন্ড API ব্যবহার করে, আপনি নতুন সার্ভার-সাইড ডিফল্ট ভ্যালু তৈরি করতে পারেন যা আপনার কাঙ্ক্ষিত শর্তাধীন লজিক বা ইউজার টার্গেটিং অনুযায়ী অ্যাপের ভেতরের ভ্যালুগুলোকে ওভাররাইড করবে। এই বিভাগে এই ভ্যালুগুলো তৈরি করার জন্য Firebase কনসোলের ধাপগুলো বর্ণনা করা হয়েছে।

  1. Firebase কনসোলে আপনার প্রজেক্টটি খুলুন।
  2. Remote Config ড্যাশবোর্ড দেখতে মেনু থেকে Remote Config নির্বাচন করুন।
  3. আপনার অ্যাপে সংজ্ঞায়িত প্যারামিটারগুলোর মতোই একই নামে প্যারামিটার নির্ধারণ করুন। প্রতিটি প্যারামিটারের জন্য, আপনি একটি ডিফল্ট মান সেট করতে পারেন (যা অবশেষে অ্যাপের সংশ্লিষ্ট ডিফল্ট মানকে ওভাররাইড করবে), এবং আপনি শর্তসাপেক্ষ মানও সেট করতে পারেন। আরও জানতে, Remote Config প্যারামিটার এবং শর্তাবলী দেখুন।
  4. কাস্টম সিগন্যাল কন্ডিশন ব্যবহার করলে, অ্যাট্রিবিউট এবং তাদের মান নির্ধারণ করুন। নিচের উদাহরণগুলোতে দেখানো হয়েছে কীভাবে একটি কাস্টম সিগন্যাল কন্ডিশন নির্ধারণ করতে হয়।

    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 নতুন সংস্করণ প্রকাশ করার পর স্বয়ংক্রিয়ভাবে পরিবর্তনগুলো ফেচ করে নেয়।

Firebase এসডিকে ফর Android ভি২১.৩.০+ ( Firebase BoM ৩১.২.৪+) দ্বারা রিয়েল-টাইম আপডেট সমর্থিত।

  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) ব্যবহার করুন।