প্রোগ্রামগতভাবে দূরবর্তী কনফিগারেশন পরিবর্তন করুন

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

এই নির্দেশিকায় বর্ণিত রিমোট কনফিগ REST API বা অ্যাডমিন SDK ব্যবহার করে, আপনি Firebase কনসোলে টেমপ্লেট পরিচালনাকে বাইপাস করে আপনার নিজের প্রক্রিয়াগুলিতে সরাসরি রিমোট কনফিগার পরিবর্তনগুলিকে একীভূত করতে পারেন। উদাহরণস্বরূপ, রিমোট কনফিগ ব্যাকএন্ড API এর সাথে, আপনি করতে পারেন:

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

    রেমোট কনফিগ ব্যাকএন্ড কাস্টম টুল এবং সার্ভারের সাথে ইন্টারঅ্যাক্ট করে ডায়াগ্রাম

এই গাইডের নিম্নলিখিত বিভাগগুলি আপনি রিমোট কনফিগ ব্যাকএন্ড API-এর সাথে করতে পারেন এমন ক্রিয়াকলাপগুলি বর্ণনা করে৷ REST API-এর মাধ্যমে এই কাজগুলি সম্পাদন করে এমন কিছু কোড পর্যালোচনা করতে, এই নমুনা অ্যাপগুলির মধ্যে একটি দেখুন:

Firebase অ্যাডমিন SDK ব্যবহার করে রিমোট কনফিগারেশন পরিবর্তন করুন

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

একটি সাধারণ রিমোট কনফিগারেশন ফ্লোতে, আপনি বর্তমান টেমপ্লেট পেতে পারেন, কিছু প্যারামিটার বা প্যারামিটার গ্রুপ এবং শর্তাবলী পরিবর্তন করতে পারেন, টেমপ্লেটটি যাচাই করতে পারেন এবং তারপরে এটি প্রকাশ করতে পারেন। সেই API কলগুলি করার আগে, আপনাকে অবশ্যই SDK থেকে অনুরোধগুলি অনুমোদন করতে হবে৷

SDK শুরু করুন এবং API অনুরোধ অনুমোদন করুন

আপনি যখন কোনো প্যারামিটার ছাড়াই অ্যাডমিন SDK শুরু করেন, তখন SDK Google অ্যাপ্লিকেশন ডিফল্ট শংসাপত্র ব্যবহার করে এবং FIREBASE_CONFIG পরিবেশ পরিবর্তনশীল থেকে বিকল্পগুলি পড়ে৷ যদি FIREBASE_CONFIG ভেরিয়েবলের বিষয়বস্তু একটি { দিয়ে শুরু হয় তবে এটি JSON অবজেক্ট হিসাবে পার্স করা হবে। অন্যথায় SDK অনুমান করে যে স্ট্রিংটি একটি JSON ফাইলের নাম যেখানে বিকল্পগুলি রয়েছে৷

উদাহরণ স্বরূপ:

Node.js

const admin = require('firebase-admin');
admin.initializeApp();

জাভা

FileInputStream serviceAccount = new FileInputStream("service-account.json");
FirebaseOptions options = FirebaseOptions.builder()
        .setCredentials(GoogleCredentials.fromStream(serviceAccount))
        .build();
FirebaseApp.initializeApp(options);

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

রিমোট কনফিগ টেমপ্লেটগুলির সাথে কাজ করার সময়, মনে রাখবেন যে সেগুলি সংস্করণ করা হয়েছে, এবং প্রতিটি সংস্করণ তৈরির সময় থেকে আপনি এটিকে একটি আপডেটের সাথে প্রতিস্থাপন করার সময় পর্যন্ত একটি সীমিত জীবনকাল রয়েছে: 90 দিন, মোট 300টি সংরক্ষিত সংস্করণের সীমা সহ। আরও তথ্যের জন্য টেমপ্লেট এবং সংস্করণ দেখুন।

আপনি JSON ফর্ম্যাটে রিমোট কনফিগার টেমপ্লেটের বর্তমান সক্রিয় সংস্করণ পেতে ব্যাকএন্ড API ব্যবহার করতে পারেন।

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

টেমপ্লেট পেতে:

Node.js

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

দূরবর্তী কনফিগার পরামিতি পরিবর্তন করুন

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

Node.js

function addParameterToGroup(template) {
  template.parameterGroups['new_menu'].parameters['spring_season'] = {
    defaultValue: {
      useInAppDefault: true
    },
    description: 'spring season menu visibility.',
  };
}

জাভা

template.getParameterGroups().get("new_menu").getParameters()
        .put("spring_season", new Parameter()
                .setDefaultValue(ParameterValue.inAppDefault())
                .setDescription("spring season menu visibility.")
        );

API আপনাকে নতুন প্যারামিটার এবং প্যারামিটার গ্রুপ তৈরি করতে বা ডিফল্ট মান, শর্তাধীন মান এবং বিবরণ পরিবর্তন করতে দেয়। সব ক্ষেত্রে, পরিবর্তন করার পর আপনাকে স্পষ্টভাবে টেমপ্লেট প্রকাশ করতে হবে।

দূরবর্তী কনফিগার অবস্থা পরিবর্তন করুন

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

Node.js

function addNewCondition(template) {
  template.conditions.push({
    name: 'android_en',
    expression: 'device.os == \'android\' && device.country in [\'us\', \'uk\']',
    tagColor: 'BLUE',
  });
}

জাভা

template.getConditions().add(new Condition("android_en",
        "device.os == 'android' && device.country in ['us', 'uk']", TagColor.BLUE));

সব ক্ষেত্রে, পরিবর্তন করার পর আপনাকে স্পষ্টভাবে টেমপ্লেট প্রকাশ করতে হবে।

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

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

ঐচ্ছিকভাবে, আপনি আপনার আপডেটগুলি প্রকাশ করার আগে যাচাই করতে পারেন, যেমন দেখানো হয়েছে:

Node.js

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

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

রিমোট কনফিগারেশন টেমপ্লেট প্রকাশ করুন

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

প্রয়োজনে, আপনি পূর্ববর্তী সংস্করণে ফিরে যেতে REST API ব্যবহার করতে পারেন। একটি আপডেটে ত্রুটির ঝুঁকি কমাতে, আপনি প্রকাশ করার আগে যাচাই করতে পারেন৷

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

  • ব্যক্তিগতকরণ প্রকল্প থেকে প্রকল্প আমদানি করা যাবে না.

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

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

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

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

Node.js

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

REST API ব্যবহার করে রিমোট কনফিগারেশন পরিবর্তন করুন

এই বিভাগটি https://firebaseremoteconfig.googleapis.com এ রিমোট কনফিগ REST API-এর প্রধান ক্ষমতাগুলি বর্ণনা করে। সম্পূর্ণ বিবরণের জন্য, API রেফারেন্স দেখুন।

API অনুরোধগুলিকে প্রমাণীকরণ এবং অনুমোদন করতে একটি অ্যাক্সেস টোকেন পান৷

Firebase প্রকল্পগুলি Google পরিষেবা অ্যাকাউন্টগুলিকে সমর্থন করে, যা আপনি আপনার অ্যাপ সার্ভার বা বিশ্বস্ত পরিবেশ থেকে Firebase সার্ভার API কল করতে ব্যবহার করতে পারেন৷ আপনি যদি স্থানীয়ভাবে কোড ডেভেলপ করছেন বা আপনার অ্যাপ্লিকেশনটি প্রাঙ্গনে স্থাপন করছেন, আপনি সার্ভার অনুরোধ অনুমোদন করতে এই পরিষেবা অ্যাকাউন্টের মাধ্যমে প্রাপ্ত শংসাপত্রগুলি ব্যবহার করতে পারেন৷

একটি পরিষেবা অ্যাকাউন্ট প্রমাণীকরণ করতে এবং এটিকে Firebase পরিষেবাগুলি অ্যাক্সেস করার অনুমোদন দিতে, আপনাকে অবশ্যই JSON ফর্ম্যাটে একটি ব্যক্তিগত কী ফাইল তৈরি করতে হবে৷

আপনার পরিষেবা অ্যাকাউন্টের জন্য একটি ব্যক্তিগত কী ফাইল তৈরি করতে:

  1. Firebase কনসোলে, সেটিংস > পরিষেবা অ্যাকাউন্ট খুলুন।

  2. জেনারেট নিউ প্রাইভেট কী ক্লিক করুন, তারপর জেনারেট কী ক্লিক করে নিশ্চিত করুন।

  3. কী আছে এমন JSON ফাইলটি নিরাপদে সংরক্ষণ করুন।

একটি পরিষেবা অ্যাকাউন্টের মাধ্যমে অনুমোদন করার সময়, আপনার আবেদনে শংসাপত্রগুলি প্রদান করার জন্য আপনার কাছে দুটি বিকল্প রয়েছে৷ আপনি হয় GOOGLE_APPLICATION_CREDENTIALS এনভায়রনমেন্ট ভেরিয়েবল সেট করতে পারেন, অথবা আপনি কোডে পরিষেবা অ্যাকাউন্ট কী-এর পথটি স্পষ্টভাবে পাস করতে পারেন৷ প্রথম বিকল্পটি আরো নিরাপদ এবং দৃঢ়ভাবে সুপারিশ করা হয়।

পরিবেশ পরিবর্তনশীল সেট করতে:

এনভায়রনমেন্ট ভেরিয়েবল GOOGLE_APPLICATION_CREDENTIALS কে JSON ফাইলের ফাইল পাথে সেট করুন যাতে আপনার পরিষেবা অ্যাকাউন্ট কী রয়েছে। এই ভেরিয়েবলটি শুধুমাত্র আপনার বর্তমান শেল সেশনে প্রযোজ্য, তাই আপনি যদি একটি নতুন সেশন খোলেন, তাহলে ভেরিয়েবলটি আবার সেট করুন।

লিনাক্স বা ম্যাকোস

export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/service-account-file.json"

উইন্ডোজ

PowerShell এর সাথে:

$env:GOOGLE_APPLICATION_CREDENTIALS="C:\Users\username\Downloads\service-account-file.json"

আপনি উপরের ধাপগুলি সম্পন্ন করার পরে, অ্যাপ্লিকেশন ডিফল্ট শংসাপত্র (ADC) আপনার প্রমাণপত্রগুলিকে স্পষ্টভাবে নির্ধারণ করতে সক্ষম হয়, যা আপনাকে নন-Google পরিবেশে পরীক্ষা বা চালানোর সময় পরিষেবা অ্যাকাউন্টের শংসাপত্রগুলি ব্যবহার করার অনুমতি দেয়।

একটি স্বল্পকালীন OAuth 2.0 অ্যাক্সেস টোকেন পুনরুদ্ধার করতে আপনার পছন্দের ভাষার জন্য Google Auth লাইব্রেরির সাথে একসাথে আপনার Firebase শংসাপত্রগুলি ব্যবহার করুন:

node.js

 function getAccessToken() {
  return admin.credential.applicationDefault().getAccessToken()
      .then(accessToken => {
        return accessToken.access_token;
      })
      .catch(err => {
        console.error('Unable to get access token');
        console.error(err);
      });
}

এই উদাহরণে, Google API ক্লায়েন্ট লাইব্রেরি একটি JSON ওয়েব টোকেন বা JWT দিয়ে অনুরোধটি প্রমাণীকরণ করে। আরও তথ্যের জন্য, JSON ওয়েব টোকেন দেখুন।

পাইথন

def _get_access_token():
  """Retrieve a valid access token that can be used to authorize requests.

  :return: Access token.
  """
  credentials = ServiceAccountCredentials.from_json_keyfile_name(
      'service-account.json', SCOPES)
  access_token_info = credentials.get_access_token()
  return access_token_info.access_token

জাভা

public static String getAccessToken() throws IOException {
  GoogleCredentials googleCredentials = GoogleCredentials
          .fromStream(new FileInputStream("service-account.json"))
          .createScoped(Arrays.asList(SCOPES));
  googleCredentials.refreshAccessToken();
  return googleCredentials.getAccessToken().getTokenValue();
}

আপনার অ্যাক্সেস টোকেনের মেয়াদ শেষ হওয়ার পরে, একটি আপডেট অ্যাক্সেস টোকেন পুনরুদ্ধার করতে টোকেন রিফ্রেশ পদ্ধতিটি স্বয়ংক্রিয়ভাবে কল করা হয়।

Remote Config-এ অ্যাক্সেস অনুমোদন করতে, https://www.googleapis.com/auth/firebase.remoteconfig স্কোপের অনুরোধ করুন।

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

রিমোট কনফিগ টেমপ্লেটগুলির সাথে কাজ করার সময়, মনে রাখবেন যে সেগুলি সংস্করণ করা হয়েছে, এবং প্রতিটি সংস্করণ তৈরির সময় থেকে আপনি এটিকে একটি আপডেটের সাথে প্রতিস্থাপন করার সময় পর্যন্ত একটি সীমিত জীবনকাল রয়েছে: 90 দিন, মোট 300টি সংরক্ষিত সংস্করণের সীমা সহ। আরও তথ্যের জন্য টেমপ্লেট এবং সংস্করণ দেখুন।

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

আপনি JSON ফর্ম্যাটে রিমোট কনফিগার টেমপ্লেটের বর্তমান সক্রিয় সংস্করণ পেতে ব্যাকএন্ড API ব্যবহার করতে পারেন।

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

নিম্নলিখিত কমান্ড ব্যবহার করুন:

cURL

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

এই কমান্ডটি একটি ফাইলে JSON পেলোড এবং একটি পৃথক ফাইলে হেডার (Etag সহ) আউটপুট করে।

কাঁচা HTTP অনুরোধ

Host: firebaseremoteconfig.googleapis.com

GET /v1/projects/my-project-id/remoteConfig HTTP/1.1
Authorization: Bearer token
Accept-Encoding: gzip

এই API কলটি একটি পৃথক শিরোনাম সহ নিম্নলিখিত JSON প্রদান করে যার মধ্যে একটি ETag রয়েছে যা আপনি পরবর্তী অনুরোধের জন্য ব্যবহার করেন।

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

ঐচ্ছিকভাবে, আপনি আপনার আপডেটগুলি প্রকাশ করার আগে যাচাই করতে পারেন৷ আপনার প্রকাশের অনুরোধে URL প্যারামিটার যুক্ত করে টেমপ্লেট আপডেটগুলি যাচাই করুন ?validate_only=true । প্রতিক্রিয়ায়, একটি স্ট্যাটাস কোড 200 এবং প্রত্যয় সহ একটি আপডেট করা ইটাগ -0 এর অর্থ হল আপনার আপডেটটি সফলভাবে যাচাই করা হয়েছে। যেকোন-200 প্রতিক্রিয়া নির্দেশ করে যে JSON ডেটাতে ত্রুটি রয়েছে যা প্রকাশ করার আগে আপনাকে অবশ্যই সংশোধন করতে হবে।

রিমোট কনফিগারেশন টেমপ্লেট আপডেট করুন

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

প্রয়োজনে, আপনি পূর্ববর্তী সংস্করণে ফিরে যেতে REST API ব্যবহার করতে পারেন। একটি আপডেটে ত্রুটির ঝুঁকি কমাতে, আপনি প্রকাশ করার আগে যাচাই করতে পারেন৷

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

  • ব্যক্তিগতকরণ প্রকল্প থেকে প্রকল্প আমদানি করা যাবে না.

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

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

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

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

cURL

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 কমান্ডের জন্য, আপনি ফাইলের নাম অনুসরণ করে "@" অক্ষর ব্যবহার করে বিষয়বস্তু নির্দিষ্ট করতে পারেন।

কাঁচা HTTP অনুরোধ

Host: firebaseremoteconfig.googleapis.com
PUT /v1/projects/my-project-id/remoteConfig HTTP/1.1
Content-Length: size
Content-Type: application/json; UTF8
Authorization: Bearer token
If-Match: expected ETag
Accept-Encoding: gzip
JSON_HERE

যেহেতু এটি একটি লেখার অনুরোধ, ETag এই কমান্ড দ্বারা পরিবর্তিত হয় এবং পরবর্তী PUT কমান্ডের প্রতিক্রিয়া শিরোনামে একটি আপডেট করা ETag প্রদান করা হয়।

দূরবর্তী কনফিগার অবস্থা পরিবর্তন করুন

আপনি প্রোগ্রাম্যাটিকভাবে দূরবর্তী কনফিগার অবস্থা এবং শর্তাধীন মান পরিবর্তন করতে পারেন। REST API-এর সাহায্যে, টেমপ্লেট প্রকাশ করার আগে শর্তগুলি পরিবর্তন করতে আপনাকে অবশ্যই সরাসরি টেমপ্লেটটি সম্পাদনা করতে হবে।

{
  "conditions": [{
    "name": "android_english",
    "expression": "device.os == 'android' && device.country in ['us', 'uk']",
    "tagColor": "BLUE"
  }, {
    "name": "tenPercent",
    "expression": "percent <= 10",
    "tagColor": "BROWN"
  }],
  "parameters": {
    "welcome_message": {
      "defaultValue": {
        "value": "Welcome to this sample app"
      },
      "conditionalValues": {
        "tenPercent": {
          "value": "Welcome to this new sample app"
        }
      },
      "description": "The sample app's welcome message"
    },
    "welcome_message_caps": {
      "defaultValue": {
        "value": "false"
      },
      "conditionalValues": {
        "android_english": {
          "value": "true"
        }
      },
      "description": "Whether the welcome message should be displayed in all capital letters."
    }
  }
}

উপরের পরিবর্তনগুলি প্রথমে শর্তগুলির একটি সেট সংজ্ঞায়িত করে এবং তারপরে প্রতিটি প্যারামিটারের জন্য ডিফল্ট মান এবং শর্ত-ভিত্তিক পরামিতি ( শর্তাধীন মান ) মানগুলিকে সংজ্ঞায়িত করে৷ এটি প্রতিটি উপাদানের জন্য একটি ঐচ্ছিক বিবরণ যোগ করে; কোড মন্তব্যের মত, এগুলি বিকাশকারীর ব্যবহারের জন্য এবং অ্যাপে প্রদর্শিত হয় না। সংস্করণ নিয়ন্ত্রণের উদ্দেশ্যে একটি ETag প্রদান করা হয়।

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

HTTP ত্রুটি কোড

স্ট্যাটাস কোড অর্থ
200 সফলভাবে আপডেট
400 একটি বৈধতা ত্রুটি ঘটেছে. উদাহরণ স্বরূপ, একটি অনুরোধ যাতে অনুমোদিত সংখ্যক কী-2000-এর চেয়ে বেশি থাকে তা ত্রুটি বার্তা সহ 400 (খারাপ অনুরোধ) ফেরত দেবে, Param count too large । এছাড়াও, এই HTTPS স্ট্যাটাস কোড এই দুটি পরিস্থিতিতে ঘটতে পারে:
  • একটি সংস্করণের অমিল ত্রুটি ঘটেছে কারণ আপনি শেষবার একটি ETag মান পুনরুদ্ধার করার পর থেকে মান এবং শর্তগুলির সেট আপডেট করা হয়েছে৷ এটি সমাধান করার জন্য, একটি নতুন টেমপ্লেট এবং ETag মান পেতে আপনার একটি GET কমান্ড ব্যবহার করা উচিত, টেমপ্লেট আপডেট করুন এবং তারপর সেই টেমপ্লেট এবং নতুন ETag মান ব্যবহার করে জমা দিন৷
  • একটি PUT কমান্ড (আপডেট রিমোট কনফিগার টেমপ্লেট অনুরোধ) একটি If-Match শিরোনাম উল্লেখ না করেই করা হয়েছিল৷
401 একটি অনুমোদন ত্রুটি ঘটেছে (কোনও অ্যাক্সেস টোকেন প্রদান করা হয়নি বা Firebase রিমোট কনফিগার REST API ক্লাউড বিকাশকারী কনসোলে আপনার প্রকল্পে যোগ করা হয়নি)
403 একটি প্রমাণীকরণ ত্রুটি ঘটেছে (ভুল অ্যাক্সেস টোকেন প্রদান করা হয়েছে)
500 একটি অভ্যন্তরীণ ত্রুটি ঘটেছে. এই ত্রুটি দেখা দিলে, একটি Firebase সমর্থন টিকিট ফাইল করুন

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

আপনি আপনার টেমপ্লেটে আপডেটগুলি জমা দেওয়ার পরে, আপনার পরিবর্তনগুলি প্রত্যাশিতভাবে প্রদর্শিত হচ্ছে কিনা তা যাচাই করতে Firebase কনসোলে যান৷ এটি অত্যন্ত গুরুত্বপূর্ণ কারণ শর্তগুলির ক্রম কীভাবে মূল্যায়ন করা হয় তা প্রভাবিত করে (প্রথম শর্ত যা true মূল্যায়ন করে তা কার্যকর হয়)।

ETag ব্যবহার এবং জোরপূর্বক আপডেট

Remote Config REST API রেস অবস্থা এবং সম্পদের ওভারল্যাপিং আপডেট প্রতিরোধ করতে একটি সত্তা ট্যাগ (ETag) ব্যবহার করে। ETags সম্পর্কে আরও জানতে, ETag - HTTP দেখুন।

REST API-এর জন্য, Google সুপারিশ করে যে আপনি সাম্প্রতিক GET কমান্ড দ্বারা প্রদত্ত ETag ক্যাশে করুন এবং PUT কমান্ড ইস্যু করার সময় If-Match অনুরোধ শিরোনামে সেই ETag মানটি ব্যবহার করুন। যদি আপনার PUT কমান্ডের ফলাফল একটি HTTPS স্ট্যাটাস কোড 409 হয়, তাহলে আপনার পরবর্তী PUT কমান্ডের সাথে ব্যবহার করার জন্য একটি নতুন ETag এবং টেমপ্লেট অর্জন করতে আপনাকে একটি নতুন GET কমান্ড ইস্যু করা উচিত।

আপনি রিমোট কনফিগারেশন টেমপ্লেটকে নিম্নোক্তভাবে আপডেট করতে বাধ্য করার মাধ্যমে ETag এবং এটি থেকে সুরক্ষা প্রদান করতে পারেন: If-Match: * তবে, এই পদ্ধতির সুপারিশ করা হয় না কারণ এটি আপনার রিমোট কনফিগারেশনের আপডেটগুলি হারানোর ঝুঁকি নিয়ে থাকে টেমপ্লেট যদি একাধিক ক্লায়েন্ট রিমোট কনফিগ টেমপ্লেট আপডেট করে। API ব্যবহার করে একাধিক ক্লায়েন্টের সাথে বা API ক্লায়েন্ট এবং Firebase কনসোল ব্যবহারকারীদের থেকে বিরোধপূর্ণ আপডেটের সাথে এই ধরনের দ্বন্দ্ব ঘটতে পারে।

রিমোট কনফিগার টেমপ্লেট সংস্করণ পরিচালনার বিষয়ে নির্দেশনার জন্য, দূরবর্তী কনফিগার টেমপ্লেট এবং সংস্করণ দেখুন।