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


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

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

এই নির্দেশিকাটি আপনাকে শুরু করার ধাপগুলির মধ্যে দিয়ে হেঁটে যায় এবং কিছু নমুনা কোড প্রদান করে, যার সবকটিই Firebase/quickstart-unity GitHub সংগ্রহস্থল থেকে ক্লোন বা ডাউনলোড করার জন্য উপলব্ধ।

ধাপ 1: আপনার অ্যাপে রিমোট কনফিগ যোগ করুন

আপনি Remote Config ব্যবহার করার আগে, আপনাকে করতে হবে:

  • আপনার ইউনিটি প্রজেক্ট নিবন্ধন করুন এবং Firebase ব্যবহার করতে কনফিগার করুন।

    • আপনার ইউনিটি প্রোজেক্ট যদি আগে থেকেই Firebase ব্যবহার করে, তাহলে এটি ইতিমধ্যেই Firebase-এর জন্য নিবন্ধিত এবং কনফিগার করা আছে।

    • আপনার যদি ইউনিটি প্রজেক্ট না থাকে, আপনি একটি নমুনা অ্যাপ ডাউনলোড করতে পারেন।

  • আপনার ইউনিটি প্রোজেক্টে Firebase Unity SDK (বিশেষভাবে, FirebaseRemoteConfig.unitypackage ) যোগ করুন।

মনে রাখবেন যে আপনার ইউনিটি প্রোজেক্টে ফায়ারবেস যোগ করার জন্য ফায়ারবেস কনসোল এবং আপনার ওপেন ইউনিটি প্রোজেক্ট উভয়েরই কাজ জড়িত থাকে (উদাহরণস্বরূপ, আপনি কনসোল থেকে Firebase কনফিগার ফাইলগুলি ডাউনলোড করেন, তারপর সেগুলিকে আপনার ইউনিটি প্রোজেক্টে নিয়ে যান)।

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

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

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

(যখন SetDefaultsAsync() বলা হয় তখন নন-স্ট্রিং প্রপার্টি প্রপার্টির টাইপে রূপান্তরিত হবে)।

System.Collections.Generic.Dictionary<string, object> defaults =
  new System.Collections.Generic.Dictionary<string, object>();

// These are the values that are used if we haven't fetched data from the
// server
// yet, or if we ask for values that the server doesn't have:
defaults.Add("config_test_string", "default local string");
defaults.Add("config_test_int", 1);
defaults.Add("config_test_float", 1.0);
defaults.Add("config_test_bool", false);

Firebase.RemoteConfig.FirebaseRemoteConfig.DefaultInstance.SetDefaultsAsync(defaults)
  .ContinueWithOnMainThread(task => {

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

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

এই মানগুলি পেতে, GetValue() ব্যবহার করুন, একটি আর্গুমেন্ট হিসাবে প্যারামিটার কী প্রদান করুন। এটি একটি ConfigValue প্রদান করে, যার বৈশিষ্ট্য রয়েছে মানটিকে বিভিন্ন বেস প্রকারে রূপান্তর করার জন্য।

ধাপ 4: প্যারামিটার মান সেট করুন

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

ধাপ 5: মান আনুন এবং সক্রিয় করুন (প্রয়োজন হিসাবে)

রিমোট কনফিগার ব্যাকএন্ড থেকে প্যারামিটার মান আনতে, FetchAsync() পদ্ধতিতে কল করুন। ব্যাকএন্ডে আপনি যে মান সেট করেছেন তা রিমোট কনফিগার অবজেক্টে আনা এবং ক্যাশে করা হয়।

// Start a fetch request.
// FetchAsync only fetches new data if the current data is older than the provided
// timespan.  Otherwise it assumes the data is "recent enough", and does nothing.
// By default the timespan is 12 hours, and for production apps, this is a good
// number. For this example though, it's set to a timespan of zero, so that
// changes in the console will always show up immediately.
public Task FetchDataAsync() {
  DebugLog("Fetching data...");
  System.Threading.Tasks.Task fetchTask =
  Firebase.RemoteConfig.FirebaseRemoteConfig.DefaultInstance.FetchAsync(
      TimeSpan.Zero);
  return fetchTask.ContinueWithOnMainThread(FetchComplete);
}

উপরের কোডে, FetchComplete হল একটি পদ্ধতি যার স্বাক্ষর ContinueWithOnMainThread() এর ওভারলোডগুলির একটির প্যারামিটারের সাথে মেলে।

নীচের নমুনা কোডে, FetchComplete পদ্ধতিটি পূর্ববর্তী টাস্ক ( fetchTask ) পাস করেছে, যা FetchComplete এটি শেষ হয়েছে কিনা তা নির্ধারণ করতে দেয়। কোডটি Info.LastFetchStatus ব্যবহার করে তারপর ফিনিসটি সফল হয়েছে কিনা তা নির্ধারণ করতে। যদি তাই হয়, Remote Config প্যারামিটার মানগুলি তারপর ActivateAsync() ব্যবহার করে সক্রিয় করা হয়।

private void FetchComplete(Task fetchTask) {
  if (!fetchTask.IsCompleted) {
    Debug.LogError("Retrieval hasn't finished.");
    return;
  }

  var remoteConfig = FirebaseRemoteConfig.DefaultInstance;
  var info = remoteConfig.Info;
  if(info.LastFetchStatus != LastFetchStatus.Success) {
    Debug.LogError($"{nameof(FetchComplete)} was unsuccessful\n{nameof(info.LastFetchStatus)}: {info.LastFetchStatus}");
    return;
  }

  // Fetch successful. Parameter values must be activated to use.
  remoteConfig.ActivateAsync()
    .ContinueWithOnMainThread(
      task => {
        Debug.Log($"Remote data loaded and ready for use. Last fetch time {info.FetchTime}.");
    });
}

FetchAsync() ব্যবহার করে আনা মানগুলি স্থানীয়ভাবে ক্যাশে করা হয় যখন ফেচ সম্পূর্ণ হয়, কিন্তু ActivateAsync() চালু না করা পর্যন্ত উপলব্ধ করা হয় না। এটি আপনাকে নিশ্চিত করতে দেয় যে নতুন মানগুলি গণনার মাঝামাঝি প্রয়োগ করা হয়নি বা অন্য সময়ে যা সমস্যা বা অদ্ভুত আচরণের কারণ হতে পারে।

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

আপনি পরামিতি মান আনার পরে, আপনি রিমোট কনফিগার ব্যাকএন্ড থেকে আপডেট শুনতে রিয়েল-টাইম রিমোট কনফিগ ব্যবহার করতে পারেন। রিয়েল-টাইম রিমোট কনফিগ আপডেটগুলি উপলব্ধ থাকলে সংযুক্ত ডিভাইসগুলিতে সংকেত দেয় এবং আপনি একটি নতুন রিমোট কনফিগ সংস্করণ প্রকাশ করার পরে স্বয়ংক্রিয়ভাবে পরিবর্তনগুলি আনয়ন করে৷

রিয়েল-টাইম আপডেটগুলি Android এবং Apple প্ল্যাটফর্মগুলির জন্য Firebase Unity SDK v11.0.0+ এবং উচ্চতর দ্বারা সমর্থিত।

  1. আপনার অ্যাপে, আপডেটের জন্য শোনা শুরু করতে একটি OnConfigUpdateListener যোগ করুন এবং স্বয়ংক্রিয়ভাবে কোনো নতুন বা আপডেট করা প্যারামিটার মান আনুন। তারপরে, আপডেট ইভেন্টগুলি প্রক্রিয়া করতে একটি ConfigUpdateListenerEventHandler তৈরি করুন। নিম্নলিখিত উদাহরণটি আপডেটের জন্য শোনে এবং একটি আপডেট করা স্বাগত বার্তা প্রদর্শন করতে নতুন আনা মান ব্যবহার করে।
// Invoke the listener.
void Start()
{
  Firebase.RemoteConfig.FirebaseRemoteConfig.DefaultInstance.OnConfigUpdateListener
    += ConfigUpdateListenerEventHandler;
}

// Handle real-time Remote Config events.
void ConfigUpdateListenerEventHandler(
   object sender, Firebase.RemoteConfig.ConfigUpdateEventArgs args) {
  if (args.Error != Firebase.RemoteConfig.RemoteConfigError.None) {
    Debug.Log(String.Format("Error occurred while listening: {0}", args.Error));
    return;
  }

  Debug.Log("Updated keys: " + string.Join(", ", args.UpdatedKeys));
  // Activate all fetched values and then display a welcome message.
  remoteConfig.ActivateAsync().ContinueWithOnMainThread(
    task => {
        DisplayWelcomeMessage();
    });
}

// Stop the listener.
void OnDestroy() {
    Firebase.RemoteConfig.FirebaseRemoteConfig.DefaultInstance.OnConfigUpdateListener
      -= ConfigUpdateListenerEventHandler;
}

পরের বার যখন আপনি আপনার রিমোট কনফিগারেশনের একটি নতুন সংস্করণ প্রকাশ করবেন, যে ডিভাইসগুলি আপনার অ্যাপটি চালাচ্ছে এবং পরিবর্তনগুলি শুনছে সেগুলি সমাপ্তি হ্যান্ডলারকে কল করবে৷

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

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