ওয়েবে রিমোট কনফিগ দিয়ে শুরু করুন

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


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

ধাপ ১: Remote Config এসডিকে যোগ করুন এবং চালু করুন

  1. যদি আগে থেকে না করে থাকেন, তাহলে Firebase JS SDK ইনস্টল করুন এবং Firebase চালু করুন

  2. Remote Config জেএস এসডিকে যোগ করুন এবং Remote Config ইনিশিয়ালাইজ করুন:

Web

import { initializeApp } from "firebase/app";
import { getRemoteConfig } from "firebase/remote-config";

// TODO: Replace the following with your app's Firebase project configuration
// See: https://firebase.google.com/docs/web/learn-more#config-object
const firebaseConfig = {
  // ...
};

// Initialize Firebase
const app = initializeApp(firebaseConfig);


// Initialize Remote Config and get a reference to the service
const remoteConfig = getRemoteConfig(app);

Web

import firebase from "firebase/compat/app";
import "firebase/compat/remote-config";

// TODO: Replace the following with your app's Firebase project configuration
// See: https://firebase.google.com/docs/web/learn-more#config-object
const firebaseConfig = {
  // ...
};

// Initialize Firebase
firebase.initializeApp(firebaseConfig);


// Initialize Remote Config and get a reference to the service
const remoteConfig = firebase.remoteConfig();

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

ধাপ ২: সর্বনিম্ন ফেচ ব্যবধান সেট করুন

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

Web

// The default and recommended production fetch interval for Remote Config is 12 hours
remoteConfig.settings.minimumFetchIntervalMillis = 3600000;

Web

remoteConfig.settings.minimumFetchIntervalMillis = 3600000;

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

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

Web

remoteConfig.defaultConfig = {
  "welcome_message": "Welcome"
};

Web

remoteConfig.defaultConfig = {
  "welcome_message": "Welcome"
};

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

বিশ্রাম

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

আপনি Google Cloud CLI অথবা Cloud Shell ব্যবহার করে নিম্নলিখিত কমান্ডটি চালিয়ে একটি বেয়ারার টোকেন তৈরি করতে পারেন:

gcloud auth print-access-token

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

Firebase কনসোল

  1. প্যারামিটার ট্যাবে, মেনুটি খুলুন এবং 'Download default values' নির্বাচন করুন।
  2. নির্দেশিত হলে, ওয়েবের জন্য .json সক্রিয় করুন, তারপর 'Download file'-এ ক্লিক করুন।

নিম্নলিখিত উদাহরণগুলি আপনার অ্যাপে ডিফল্ট মান আমদানি এবং সেট করার দুটি ভিন্ন উপায় দেখায়। প্রথম উদাহরণটি fetch ব্যবহার করে, যা আপনার অ্যাপ বান্ডেলে অন্তর্ভুক্ত `defaults` ফাইলে একটি HTTP অনুরোধ পাঠাবে:

  const rcDefaultsFile = await fetch('remote_config_defaults.json');
  const rcDefaultsJson = await rcDefaultsFile.json();
  remoteConfig.defaultConfig = rcDefaultsJson;
  

পরবর্তী উদাহরণটিতে require ব্যবহার করা হয়েছে, যা বিল্ড টাইমে ভ্যালুগুলোকে আপনার অ্যাপে কম্পাইল করে।

  let rcDefaults = require('./remote_config_defaults.json');
  remoteConfig.defaultConfig = rcDefaults;

ধাপ ৪: আপনার অ্যাপে ব্যবহার করার জন্য প্যারামিটার মানগুলো সংগ্রহ করুন।

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

Web

import { getValue } from "firebase/remote-config";

const val = getValue(remoteConfig, "welcome_messsage");

Web

const val = remoteConfig.getValue("welcome_messsage");

ধাপ ৫: প্যারামিটারের মান নির্ধারণ করুন

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

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

      let customSignals = {
         "city": "Tokyo",
         "preferred_event_category": "sports"
      }
    
      setCustomSignals(config, customSignals);

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

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

যেসব ক্ষেত্রে আপনি একটি কলেই ভ্যালু ফেচ এবং অ্যাক্টিভেট করতে চান, সেখানে এই উদাহরণে দেখানো অনুযায়ী fetchAndActivate() ব্যবহার করুন:

Web

import { fetchAndActivate } from "firebase/remote-config";

fetchAndActivate(remoteConfig)
  .then(() => {
    // ...
  })
  .catch((err) => {
    // ...
  });

Web

remoteConfig.fetchAndActivate()
  .then(() => {
    // ...
  })
  .catch((err) => {
    // ...
  });

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

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

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

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

      onConfigUpdate(remoteConfig, {
         next: (configUpdate) => {
            console.log("Updated keys:", configUpdate.getUpdatedKeys());
            if (configUpdate.getUpdatedKeys().has("welcome_message")) {
               activate(remoteConfig).then(() => {
               showWelcomeMessage();
               });
            }
         },
         error: (error) => {
            console.log("Config update error:", error);
         },
         complete: () => {
            console.log("Listening stopped.");
         }
      });
  2. পরবর্তী বার যখন আপনি আপনার Remote Config -এর কোনো নতুন সংস্করণ প্রকাশ করবেন, তখন যে ডিভাইসগুলিতে আপনার অ্যাপটি চলছে এবং পরিবর্তনের জন্য অপেক্ষা করছে, সেগুলি কমপ্লিশন হ্যান্ডলারকে কল করবে।

থ্রটলিং

যদি কোনো অ্যাপ অল্প সময়ের মধ্যে অনেক বেশিবার ডেটা ফেচ করে, তাহলে ফেচ কলগুলো থ্রটল করা হতে পারে। এমন ক্ষেত্রে, SDK একটি FETCH_THROTTLE এরর দেখায়। আপনাকে এই এররটি ক্যাচ করে এক্সপোনেনশিয়াল ব্যাকঅফ মোডে পুনরায় চেষ্টা করার পরামর্শ দেওয়া হচ্ছে, যেখানে পরবর্তী ফেচ রিকোয়েস্টগুলোর মধ্যে দীর্ঘ বিরতি দিতে হবে।

অ্যাপ ডেভেলপমেন্টের সময়, আপনার অ্যাপ ডেভেলপ ও টেস্ট করার সাথে সাথে দ্রুত পুনরাবৃত্তি করার জন্য আপনার খুব ঘন ঘন (ঘন্টায় অনেকবার) ক্যাশে রিফ্রেশ করার প্রয়োজন হতে পারে। একাধিক ডেভেলপার নিয়ে কাজ করা কোনো প্রজেক্টে দ্রুত পুনরাবৃত্তির সুবিধা দিতে, আপনি আপনার অ্যাপে সাময়িকভাবে একটি কম সর্বনিম্ন ফেচ ইন্টারভ্যাল সহ একটি প্রপার্টি ( Settings.minimumFetchIntervalMillis ) যোগ করতে পারেন।

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

  1. Settings.minimumFetchIntervalMillis এর প্যারামিটার।
  2. ডিফল্ট মান ১২ ঘণ্টা।