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


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

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

  1. যদি আপনি ইতিমধ্যেই না করে থাকেন তাহলে আপনার Android প্রকল্পে Firebase যোগ করুন

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

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

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

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:33.7.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 লাইব্রেরি সংস্করণ তার নির্ভরতা লাইনে উল্লেখ করতে হবে।

    মনে রাখবেন যে আপনি যদি আপনার অ্যাপে একাধিক ফায়ারবেস লাইব্রেরি ব্যবহার করেন, আমরা দৃঢ়ভাবে লাইব্রেরি সংস্করণগুলি পরিচালনা করতে 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:22.0.1")
        implementation("com.google.firebase:firebase-analytics:22.1.2")
    }
    একটি কোটলিন-নির্দিষ্ট লাইব্রেরি মডিউল খুঁজছেন? অক্টোবর 2023 থেকে শুরু হচ্ছে ( Firebase BoM 32.5.0) , Kotlin এবং Java ডেভেলপাররা প্রধান লাইব্রেরি মডিউলের উপর নির্ভর করতে পারে (বিশদ বিবরণের জন্য, এই উদ্যোগ সম্পর্কে প্রায়শই জিজ্ঞাসিত প্রশ্ন দেখুন)।

ধাপ 2: 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);

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

বিকাশের সময়, এটি একটি অপেক্ষাকৃত কম ন্যূনতম আনার ব্যবধান সেট করার পরামর্শ দেওয়া হয়। আরও তথ্যের জন্য থ্রটলিং দেখুন।

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

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

  1. একটি মানচিত্র বস্তু বা আপনার অ্যাপের res/xml ফোল্ডারে সঞ্চিত একটি 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
    

    Firebase কনসোল

    1. প্যারামিটার ট্যাবে, মেনু খুলুন এবং ডিফল্ট মান ডাউনলোড করুন নির্বাচন করুন।

    2. অনুরোধ করা হলে, Android এর জন্য .xml সক্ষম করুন, তারপর ফাইল ডাউনলোড করুন ক্লিক করুন।

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

    Kotlin

    remoteConfig.setDefaultsAsync(R.xml.remote_config_defaults)

    Java

    mFirebaseRemoteConfig.setDefaultsAsync(R.xml.remote_config_defaults);

ধাপ 4: আপনার অ্যাপে ব্যবহার করার জন্য প্যারামিটার মান পান

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

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

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

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

ধাপ 6: মান আনুন এবং সক্রিয় করুন

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

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

ধাপ 7: রিয়েল টাইমে আপডেটের জন্য শুনুন

আপনি পরামিতি মান আনার পরে, আপনি 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 সংস্করণ 17.0.0 এর আগে, 60 মিনিটের উইন্ডোতে 5টি আনার অনুরোধের সীমা ছিল (নতুন সংস্করণগুলির আরও অনুমতিমূলক সীমা রয়েছে)।

অ্যাপ ডেভেলপমেন্টের সময়, আপনি আপনার অ্যাপ ডেভেলপ এবং পরীক্ষা করার সাথে সাথে আপনাকে দ্রুত পুনরাবৃত্তি করতে দিতে খুব ঘন ঘন কনফিগগুলি আনতে এবং সক্রিয় করতে চাইতে পারেন (প্রতি ঘন্টায় অনেক বার)। সার্ভারে কনফিগারেশন আপডেট করা হলে রিয়েল-টাইম Remote Config আপডেট স্বয়ংক্রিয়ভাবে ক্যাশে বাইপাস করে। 10 জন পর্যন্ত বিকাশকারীর সাথে একটি প্রকল্পে দ্রুত পুনরাবৃত্তির ব্যবস্থা করতে, আপনি সাময়িকভাবে একটি FirebaseRemoteConfigSettings অবজেক্ট সেট করতে পারেন যাতে আপনার অ্যাপে একটি কম ন্যূনতম আনয়ন ব্যবধান ( setMinimumFetchIntervalInSeconds ) থাকে।

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

  1. fetch(long)
  2. FirebaseRemoteConfigSettings.setMinimumFetchIntervalInSeconds(long) এ প্যারামিটার
  3. 12 ঘন্টার ডিফল্ট মান

একটি কাস্টম মানতে ন্যূনতম আনার ব্যবধান সেট করতে, FirebaseRemoteConfigSettings.Builder.setMinimumFetchIntervalInSeconds(long) ব্যবহার করুন।

পরবর্তী পদক্ষেপ

যদি আপনি ইতিমধ্যে না থাকেন তবে Remote Config ব্যবহারের কেসগুলি অন্বেষণ করুন এবং কিছু মূল ধারণা এবং উন্নত কৌশল ডকুমেন্টেশন সহ একবার দেখুন: