রিমোট কনফিগ টেমপ্লেট এবং সংস্করণ


Remote Config টেমপ্লেট হলো আপনার ফায়ারবেস প্রোজেক্টের জন্য তৈরি করা JSON-ফরম্যাটের প্যারামিটার এবং শর্তাবলীর একটি সেট। আপনি ক্লায়েন্ট টেমপ্লেট তৈরি করতে পারেন, যেখান থেকে আপনার অ্যাপ ভ্যালু সংগ্রহ করে, এবং সার্ভার টেমপ্লেটও তৈরি করতে পারেন, যেখান থেকে সার্ভার ক্লায়েন্টরা ভ্যালু সংগ্রহ করতে পারে।

এই বিভাগে ক্লায়েন্ট টেমপ্লেট নিয়ে আলোচনা করা হয়েছে। সার্ভার-নির্দিষ্ট টেমপ্লেট সম্পর্কে জানতে, সার্ভার টেমপ্লেট-এ ক্লিক করুন।

আপনি Firebase কনসোল ব্যবহার করে টেমপ্লেটটি পরিবর্তন ও পরিচালনা করেন, যা টেমপ্লেটের বিষয়বস্তু গ্রাফিক্যাল ফরম্যাটে প্রদর্শন করে।প্যারামিটার এবং শর্তাবলী ট্যাব।

আপনি আপনার ক্লায়েন্ট টেমপ্লেট পরিবর্তন ও পরিচালনা করার জন্য Remote Config REST API ও অ্যাডমিন SDK অথবা Firebase CLI- ও ব্যবহার করতে পারেন।

এখানে একটি ক্লায়েন্ট টেমপ্লেট ফাইলের উদাহরণ দেওয়া হলো:

      {
        "conditions": [
          {
            "name": "ios",
            "expression": "device.os == 'ios'"
          }
        ],
        "parameters": {
          "welcome_message": {
            "defaultValue": {
              "value": "Welcome to this sample app"
            },
            "conditionalValues": {
              "ios": {
                "value": "Welcome to this sample iOS app"
              }
            }
          },
          "welcome_message_caps": {
            "defaultValue": {
              "value": "false"
            }
          },
          "header_text": {
            "defaultValue": {
              "useInAppDefault": true
            }
          }
        },
        "version": {
          "versionNumber": "28",
          "updateTime": "2020-05-14T18:39:38.994Z",
          "updateUser": {
            "email": "user@google.com"
          },
          "updateOrigin": "CONSOLE",
          "updateType": "INCREMENTAL_UPDATE"
        }
      }

আপনি Firebase কনসোলের মাধ্যমে এই ভার্সন ম্যানেজমেন্টের কাজগুলো করতে পারেন:

  • সংরক্ষিত সমস্ত টেমপ্লেট সংস্করণ তালিকাভুক্ত করুন
  • একটি নির্দিষ্ট সংস্করণ পুনরুদ্ধার করুন
  • একটি নির্দিষ্ট ক্লায়েন্ট সংস্করণে ফিরে যান
  • পরিবর্তনের ইতিহাস পৃষ্ঠা থেকে Remote Config টেমপ্লেটগুলি মুছে ফেলুন

এছাড়াও আপনি Firebase CLI এবং Remote Config ব্যাকএন্ড API ব্যবহার করে টেমপ্লেট তালিকাভুক্ত করতে, টেমপ্লেট পুনরুদ্ধার করতে এবং টেমপ্লেট রোল ব্যাক করতে পারেন।

প্রতিটি টেমপ্লেট টাইপের জন্য আজীবন মোট ৩০০টি ভার্সন সংরক্ষণ করা যায় (৩০০টি ক্লায়েন্ট টেমপ্লেট এবং ৩০০টি সার্ভার টেমপ্লেট), যার মধ্যে মুছে ফেলা টেমপ্লেটগুলোর সংরক্ষিত ভার্সন নম্বরও অন্তর্ভুক্ত। যদি আপনি একটি প্রজেক্টের জীবনকালে প্রতি টেমপ্লেট টাইপের জন্য ৩০০টির বেশি ভার্সন প্রকাশ করেন, তবে সবচেয়ে পুরোনো ভার্সনগুলো মুছে ফেলা হয়, ফলে সেই টাইপের সর্বোচ্চ ৩০০টি ভার্সন বজায় থাকে।

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

আপনি প্রয়োজন অনুযায়ী Remote Config টেমপ্লেটগুলো মুছে ফেলতে পারেন।ইতিহাস পরিবর্তন করুনRemote Config কনসোলের পৃষ্ঠা।

Remote Config টেমপ্লেট সংস্করণগুলি পরিচালনা করুন

এই বিভাগে আপনার Remote Config টেমপ্লেটের ভার্সনগুলো কীভাবে পরিচালনা করবেন তা বর্ণনা করা হয়েছে।

প্রোগ্রাম্যাটিকভাবে কীভাবে টেমপ্লেট তৈরি, পরিবর্তন এবং সংরক্ষণ করতে হয় সে সম্পর্কে আরও বিস্তারিত জানতে, "প্রোগ্রাম্যাটিকভাবে Remote Config পরিবর্তন করুন" দেখুন।

Remote Config টেমপ্লেটের সমস্ত সংরক্ষিত সংস্করণ তালিকাভুক্ত করুন

আপনি Remote Config টেমপ্লেটের সমস্ত সংরক্ষিত ভার্সনের একটি তালিকা পেতে পারেন। এটি করতে:

Firebase কনসোল

প্যারামিটার ট্যাবে, উপরের ডানদিকে প্রদর্শিত 'ঘড়ি' আইকনটি নির্বাচন করুন। এটি পরিবর্তনের ইতিহাস পৃষ্ঠাটি খোলে, যেখানে ডানদিকের একটি তালিকা মেনুতে সমস্ত সংরক্ষিত টেমপ্লেট সংস্করণ তালিকাভুক্ত থাকে।

সংরক্ষিত প্রতিটি সংস্করণের জন্য প্রদর্শিত বিবরণে এই তথ্য অন্তর্ভুক্ত থাকে যে, পরিবর্তনগুলি কনসোল থেকে, REST API থেকে, রোলব্যাকের মাধ্যমে হয়েছে, নাকি টেমপ্লেটটি জোরপূর্বক সংরক্ষণের ফলে সৃষ্ট ক্রমবর্ধমান পরিবর্তন ছিল।

Firebase সিএলআই

firebase remoteconfig:versions:list

ফেরত আসা ভার্সনের সংখ্যা সীমিত করতে --limit অপশনটি ব্যবহার করুন। সব ভার্সন আনতে '0' পাস করুন।

নোড.জেএস

function listAllVersions() {
  admin.remoteConfig().listVersions()
    .then((listVersionsResult) => {
      console.log("Successfully fetched the list of versions");
      listVersionsResult.versions.forEach((version) => {
        console.log('version', JSON.stringify(version));
      });
    })
    .catch((error) => {
      console.log(error);
    });
}

জাভা

ListVersionsPage page = FirebaseRemoteConfig.getInstance().listVersionsAsync().get();
while (page != null) {
  for (Version version : page.getValues()) {
    System.out.println("Version: " + version.getVersionNumber());
  }
  page = page.getNextPage();
}

// Iterate through all versions. This will still retrieve versions in batches.
page = FirebaseRemoteConfig.getInstance().listVersionsAsync().get();
for (Version version : page.iterateAll()) {
  System.out.println("Version: " + version.getVersionNumber());
}

বিশ্রাম

curl --compressed -D headers -H "Authorization: Bearer <var>token</var>" -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/<var>my-project-id</var>/remoteConfig:listVersions

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

```json
{
  "versions": [{
    "version_number": "6",
    "update_time": "2022-05-12T02:38:54Z",
    "update_user": {
      "name": "Jane Smith",
      "email": "jane@developer.org",
      "imageUrl": "https://lh3.googleusercontent.com/a-/..."
    },
    "description": "One small change on the console",
    "origin": "CONSOLE",
    "update_type": "INCREMENTAL_UPDATE"
  }]
}
```

Remote Config টেমপ্লেটের একটি নির্দিষ্ট সংস্করণ পুনরুদ্ধার করুন

আপনি Remote Config টেমপ্লেটের যেকোনো নির্দিষ্ট সংরক্ষিত সংস্করণ পুনরুদ্ধার করতে পারেন। একটি সংরক্ষিত টেমপ্লেট সংস্করণ পুনরুদ্ধার করতে:

Firebase কনসোল

ডিফল্টরূপে, 'পরিবর্তনের ইতিহাস' ট্যাবের বিবরণ প্যানে বর্তমান সক্রিয় টেমপ্লেটটি প্রদর্শিত হয়। তালিকায় থাকা অন্য কোনো সংস্করণের বিবরণ দেখতে, ডানদিকের মেনু থেকে সেটি নির্বাচন করুন।

বর্তমানে নির্বাচিত সংস্করণ এবং অন্য যেকোনো সংরক্ষিত সংস্করণের মধ্যে বিস্তারিত পার্থক্য দেখতে, যেকোনো অনির্বাচিত সংস্করণের কনটেক্সট মেনুর উপর মাউস নিয়ে যান এবং 'নির্বাচিত সংস্করণের সাথে তুলনা করুন' (Compare with selected version) বিকল্পটি নির্বাচন করুন।

Firebase সিএলআই

firebase remoteconfig:get -v VERSION_NUMBER

ঐচ্ছিকভাবে, আপনি -o, FILENAME ব্যবহার করে আউটপুটটি একটি নির্দিষ্ট ফাইলে লিখতে পারেন।

নোড.জেএস

টেমপ্লেটের সর্বশেষ সংস্করণ পেতে getTemplate() কোনো আর্গুমেন্ট ছাড়া ব্যবহার করুন, অথবা কোনো নির্দিষ্ট সংস্করণ পেতে getTemplateAtVersion() ব্যবহার করুন।

// Get template version: 6
admin.remoteConfig().getTemplateAtVersion('6')
  .then((template) => {
    console.log("Successfully fetched the template with ETag: " + template.etag);
  })
  .catch((error) => {
    console.log(error);
  });

জাভা

Template template = FirebaseRemoteConfig.getInstance().getTemplateAtVersionAsync(versionNumber).get();
// See the ETag of the fetched template.
System.out.println("Successfully fetched the template with ETag: " + template.getETag());

বিশ্রাম

curl --compressed -D headers -H "Authorization: Bearer <var>token</var>" -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/<var>my-project-id</var>/remoteConfig?version_number=6

URL প্যারামিটার ?version_number শুধুমাত্র GET অপারেশনের জন্য বৈধ; আপডেটের ভার্সন নম্বর নির্দিষ্ট করতে আপনি এটি ব্যবহার করতে পারবেন না। ?version_number প্যারামিটার ছাড়া একটি অনুরূপ GET অনুরোধ বর্তমান সক্রিয় টেমপ্লেটটি পুনরুদ্ধার করবে।

Remote Config টেমপ্লেটের একটি নির্দিষ্ট সংরক্ষিত সংস্করণে ফিরে যান

আপনি টেমপ্লেটের যেকোনো সংরক্ষিত সংস্করণে ফিরে যেতে পারেন। একটি টেমপ্লেটে পূর্বাবস্থায় ফিরে যেতে:

Firebase কনসোল

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

Firebase সিএলআই

firebase remoteconfig:rollback -v VERSION_NUMBER

নোড.জেএস

// Roll back to template version: 6
admin.remoteConfig().rollback('6')
  .then((template) => {
    console.log("Successfully rolled back to template version 6.");
    console.log("New ETag: " + template.etag);
  })
  .catch((error) => {
    console.log('Error trying to rollback:', e);
  })

জাভা

try {
  Template template = FirebaseRemoteConfig.getInstance().rollbackAsync(versionNumber).get();
  System.out.println("Successfully rolled back to template version: " + versionNumber);
  System.out.println("New ETag: " + template.getETag());
} catch (ExecutionException e) {
  if (e.getCause() instanceof FirebaseRemoteConfigException) {
    FirebaseRemoteConfigException rcError = (FirebaseRemoteConfigException) e.getCause();
    System.out.println("Error trying to rollback template.");
    System.out.println(rcError.getMessage());
  }
}

বিশ্রাম

সংরক্ষিত Remote Config টেমপ্লেটে ফিরে যেতে, :rollback কাস্টম মেথডটি ব্যবহার করে একটি HTTP POST রিকোয়েস্ট পাঠান এবং রিকোয়েস্ট বডিতে প্রয়োগ করার জন্য নির্দিষ্ট ভার্সনটি উল্লেখ করুন। উদাহরণস্বরূপ:

curl --compressed -D headers -H "Authorization: Bearer <var>token</var>" -H "Content-Type: application/json" -X POST https://firebaseremoteconfig.googleapis.com/v1/projects/<var>my-project-id</var>/remoteConfig:rollback -d '{"version_number": 6}'

প্রতিক্রিয়াটিতে বর্তমানে সক্রিয় সংরক্ষিত টেমপ্লেটের বিষয়বস্তু এবং তার নতুন সংস্করণের মেটাডেটা অন্তর্ভুক্ত রয়েছে।

মনে রাখবেন যে এই রোলব্যাক অপারেশনটি কার্যকরভাবে একটি নতুন নম্বরযুক্ত সংস্করণ তৈরি করে। উদাহরণস্বরূপ, সংস্করণ ১০ থেকে সংস্করণ ৬-এ রোলব্যাক করলে কার্যকরভাবে সংস্করণ ৬-এর একটি নতুন অনুলিপি তৈরি হয়, যা মূল সংস্করণ থেকে কেবল এই দিক দিয়ে আলাদা যে এর সংস্করণ নম্বরটি হলো ১১। মূল সংস্করণ ৬ তখনও সংরক্ষিত থাকে, যদি না সেটির মেয়াদ শেষ হয়ে গিয়ে থাকে, এবং সংস্করণ ১১ সক্রিয় টেমপ্লেট হয়ে যায়।

একটি Remote Config টেমপ্লেট মুছে ফেলুন

আপনি Firebase কনসোল থেকে Remote Config টেমপ্লেট ডিলিট করতে পারেন। একটি Remote Config টেমপ্লেট ডিলিট করতে:

১. Remote Config প্যারামিটারস পৃষ্ঠা থেকে, চেঞ্জ হিস্ট্রি-তে ক্লিক করুন।
  1. যে টেমপ্লেটটি মুছতে চান, সেটিতে যান, More'- এ ক্লিক করুন, তারপর 'Delete' নির্বাচন করুন।

  2. মুছে ফেলার বিষয়টি নিশ্চিত করতে বলা হলে, ডিলিট-এ ক্লিক করুন।

Remote Config টেমপ্লেট ডাউনলোড এবং প্রকাশ করুন

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

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

ধরা যাক, আপনার একাধিক প্রজেক্ট আছে যা আপনার সফটওয়্যার ডেভেলপমেন্ট লাইফসাইকেলের বিভিন্ন পর্যায়কে প্রতিনিধিত্ব করে, যেমন ডেভেলপমেন্ট, টেস্ট, স্টেজিং এবং প্রোডাকশন এনভায়রনমেন্ট। এক্ষেত্রে, আপনি আপনার স্টেজিং প্রজেক্ট থেকে একটি সম্পূর্ণ পরীক্ষিত টেমপ্লেট ডাউনলোড করে এবং সেটিকে আপনার প্রোডাকশন প্রজেক্টে পাবলিশ করার মাধ্যমে স্টেজিং এনভায়রনমেন্ট থেকে প্রোডাকশন এনভায়রনমেন্টে উন্নীত করতে পারেন।

আপনি এই পদ্ধতিটি ব্যবহার করে এক প্রজেক্ট থেকে অন্য প্রজেক্টে কনফিগারেশন স্থানান্তর করতে পারেন, অথবা কোনো প্রতিষ্ঠিত প্রজেক্ট থেকে প্যারামিটার ও ভ্যালু দিয়ে একটি নতুন প্রজেক্ট পূরণ করতে পারেন।

A/B Testing এক্সপেরিমেন্টে ভ্যারিয়েন্ট হিসেবে বিশেষভাবে তৈরি করা প্যারামিটার এবং প্যারামিটার ভ্যালুগুলো এক্সপোর্ট করা টেমপ্লেটে অন্তর্ভুক্ত করা হয় না।

Remote Config টেমপ্লেট রপ্তানি ও আমদানি করতে:

  1. বর্তমান Remote Config টেমপ্লেটটি ডাউনলোড করুন
  2. Remote Config টেমপ্লেটটি যাচাই করুন
  3. Remote Config টেমপ্লেটটি প্রকাশ করুন

বর্তমান রিমোট কনফিগ টেমপ্লেটটি ডাউনলোড করুন

সক্রিয় Remote Config টেমপ্লেটটি JSON ফরম্যাটে ডাউনলোড করতে নিম্নলিখিতটি ব্যবহার করুন:

Firebase কনসোল

  1. Remote Config প্যারামিটার বা কন্ডিশন ট্যাব থেকে, মেনুটি খুলুন এবং ডাউনলোড কারেন্ট কনফিগ ফাইল নির্বাচন করুন।
  2. নির্দেশিত হলে, ‘Download config file’-এ ক্লিক করুন, ফাইলটি যেখানে সংরক্ষণ করতে চান সেই স্থানটি বেছে নিন, তারপর ‘Save’-এ ক্লিক করুন।

Firebase সিএলআই

firebase remoteconfig:get -o filename

নোড.জেএস

function getTemplate() {
  var config = admin.remoteConfig();
  config.getTemplate()
      .then(function (template) {
        console.log('ETag from server: ' + template.etag);
        var templateStr = JSON.stringify(template);
        fs.writeFileSync('config.json', templateStr);
      })
      .catch(function (err) {
        console.error('Unable to get template');
        console.error(err);
      });
}

জাভা

Template template = FirebaseRemoteConfig.getInstance().getTemplateAsync().get();
// See the ETag of the fetched template.
System.out.println("ETag from server: " + template.getETag());

বিশ্রাম

curl --compressed -D headers -H "Authorization: Bearer token" -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig -o filename

এই কমান্ডটি JSON পেলোডকে একটি ফাইলে এবং হেডারগুলোকে (ETag সহ) একটি আলাদা headers ফাইলে আউটপুট করে।

রিমোট কনফিগ টেমপ্লেটটি যাচাই করুন

আপনি Firebase Admin SDK বা REST API ব্যবহার করে আপনার টেমপ্লেট আপডেটগুলো প্রকাশ করার আগে যাচাই করতে পারেন। আপনি যখন Firebase CLI বা Firebase কনসোল থেকে প্রকাশ করার চেষ্টা করেন, তখনও টেমপ্লেটগুলো যাচাই করা হয়।

টেমপ্লেট যাচাইকরণ প্রক্রিয়াটি প্যারামিটার এবং শর্তের জন্য ডুপ্লিকেট কী, অবৈধ শর্তের নাম বা অস্তিত্বহীন শর্ত, অথবা ভুল ফরম্যাটের ই-ট্যাগের মতো ত্রুটিগুলি পরীক্ষা করে। উদাহরণস্বরূপ, অনুমোদিত সংখ্যার (২০০০) চেয়ে বেশি কী সম্বলিত একটি অনুরোধ " Param count too large ত্রুটি বার্তাটি ফেরত দেবে।

নোড.জেএস

function validateTemplate(template) {
  admin.remoteConfig().validateTemplate(template)
      .then(function (validatedTemplate) {
        // The template is valid and safe to use.
        console.log('Template was valid and safe to use');
      })
      .catch(function (err) {
        console.error('Template is invalid and cannot be published');
        console.error(err);
      });
}

জাভা

try {
  Template validatedTemplate = FirebaseRemoteConfig.getInstance()
          .validateTemplateAsync(template).get();
  System.out.println("Template was valid and safe to use");
} catch (ExecutionException e) {
  if (e.getCause() instanceof FirebaseRemoteConfigException) {
    FirebaseRemoteConfigException rcError = (FirebaseRemoteConfigException) e.getCause();
    System.out.println("Template is invalid and cannot be published");
    System.out.println(rcError.getMessage());
  }
}

বিশ্রাম

আপনার প্রকাশ অনুরোধে ?validate_only=true ইউআরএল প্যারামিটারটি যুক্ত করে টেমপ্লেট আপডেটগুলি যাচাই করুন:

curl --compressed -H "Content-Type: application/json; UTF8" -H "If-Match: last-returned-etag" -H "Authorization: Bearer token" -X PUT https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig?validate_only=true -d @filename

যদি আপনার টেমপ্লেটটি সফলভাবে যাচাই করা হয়, তাহলে `curl` কমান্ডটি আপনার জমা দেওয়া JSON টেমপ্লেটটি ফেরত দেবে এবং সংরক্ষিত headers ফাইলে আপনি একটি HTTP/2 স্ট্যাটাস 200 ও -0 সাফিক্স সহ একটি আপডেট করা ETag পাবেন। যদি আপনার টেমপ্লেটটি যাচাই করা না হয়, তাহলে আপনি JSON রেসপন্সে যাচাইকরণ ত্রুটি পাবেন এবং আপনার headers ফাইলে একটি নন-200 রেসপন্স থাকবে (এবং কোনো ETag থাকবে না)।

Remote Config টেমপ্লেটটি প্রকাশ করুন

একটি টেমপ্লেট ডাউনলোড করার পর, JSON কন্টেন্টে প্রয়োজনীয় পরিবর্তন করে এবং তা যাচাই করে, আপনি এটি একটি প্রজেক্টে প্রকাশ করতে পারেন।

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

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

আপনার টেমপ্লেটটি প্রকাশ করতে নিম্নলিখিত কমান্ডগুলি ব্যবহার করুন:

Firebase কনসোল

  1. Remote Config প্যারামিটার বা কন্ডিশন ট্যাব থেকে, মেনুটি খুলুন এবং 'Publish from a file' নির্বাচন করুন।
  2. নির্দেশিত হলে, ব্রাউজ- এ ক্লিক করুন, এরপর আপনি যে Remote Config ফাইলটি প্রকাশ করতে চান সেটি খুঁজে বের করে নির্বাচন করুন, তারপর সিলেক্ট-এ ক্লিক করুন।
  3. ফাইলটি যাচাই করা হবে এবং সফল হলে, আপনি 'প্রকাশ করুন' (Publish) বোতামে ক্লিক করে কনফিগারেশনটি আপনার অ্যাপ ও ব্যবহারকারীদের জন্য অবিলম্বে উপলব্ধ করতে পারেন।

নোড.জেএস

function publishTemplate() {
  var config = admin.remoteConfig();
  var template = config.createTemplateFromJSON(
      fs.readFileSync('config.json', 'UTF8'));
  config.publishTemplate(template)
      .then(function (updatedTemplate) {
        console.log('Template has been published');
        console.log('ETag from server: ' + updatedTemplate.etag);
      })
      .catch(function (err) {
        console.error('Unable to publish template.');
        console.error(err);
      });
}

জাভা

try {
  Template publishedTemplate = FirebaseRemoteConfig.getInstance()
          .publishTemplateAsync(template).get();
  System.out.println("Template has been published");
  // See the ETag of the published template.
  System.out.println("ETag from server: " + publishedTemplate.getETag());
} catch (ExecutionException e) {
  if (e.getCause() instanceof FirebaseRemoteConfigException) {
    FirebaseRemoteConfigException rcError = (FirebaseRemoteConfigException) e.getCause();
    System.out.println("Unable to publish template.");
    System.out.println(rcError.getMessage());
  }
}

বিশ্রাম

curl --compressed -H "Content-Type: application/json; UTF8" -H "If-Match: last-returned-etag" -H "Authorization: Bearer token" -X PUT https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig -d @filename

এই curl কমান্ডের জন্য, আপনি "@" চিহ্নের পরে ফাইলের নামটি লিখে কন্টেন্ট নির্দিষ্ট করতে পারেন।

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

  • এক প্রজেক্ট থেকে অন্য প্রজেক্টে ব্যক্তিগতকরণ আমদানি করা যায় না।

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

  • শর্তাবলী এক প্রজেক্ট থেকে অন্য প্রজেক্টে ইম্পোর্ট করা যায়, কিন্তু মনে রাখবেন যে পাবলিশ করার আগে যেকোনো নির্দিষ্ট শর্তাধীন ভ্যালু (যেমন অ্যাপ আইডি বা অডিয়েন্স) টার্গেট প্রজেক্টে অবশ্যই বিদ্যমান থাকতে হবে।

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

  • আপনি যে টেমপ্লেটটি প্রকাশ করার পরিকল্পনা করছেন, তাতে যদি Google Analytics নির্ভর শর্ত থাকে, তাহলে টার্গেট প্রজেক্টটিতে Analytics অবশ্যই সক্রিয় থাকতে হবে।

Remote Config টেমপ্লেটের ডিফল্টগুলি ডাউনলোড করুন

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

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

আপনি এই ফাইলগুলো অ্যান্ড্রয়েড অ্যাপের জন্য XML ফরম্যাটে, iOS অ্যাপের জন্য প্রপার্টি লিস্ট (plist) ফরম্যাটে এবং ওয়েব অ্যাপের জন্য JSON ফরম্যাটে ডাউনলোড করতে পারেন।

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

টেমপ্লেট ডিফল্ট ধারণকারী একটি ফাইল ডাউনলোড করতে:

বিশ্রাম

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

আপনি কোন ফাইল ফরম্যাট ডাউনলোড করতে চান, তার উপর নির্ভর করে format ভ্যালু হিসেবে XML , PLIST বা JSON ব্যবহার করুন।

Firebase কনসোল

  1. প্যারামিটার ট্যাবে, মেনুটি খুলুন এবং 'Download default values' নির্বাচন করুন।
  2. নির্দেশিত হলে, আপনি যে ফাইল ফরম্যাটটি ডাউনলোড করতে চান তার সাথে সম্পর্কিত রেডিও বাটনে ক্লিক করুন এবং তারপরে 'Download file'-এ ক্লিক করুন।

আপনার অ্যাপে Remote Config ডিফল্ট মানগুলো ইম্পোর্ট করার বিষয়ে আরও তথ্যের জন্য, দেখুন: