এই ডকুমেন্টটি বর্ণনা করে কিভাবে আপনি Remote Config টেমপ্লেট নামে পরিচিত JSON-ফরম্যাটেড প্যারামিটার এবং শর্তাবলীর সেট প্রোগ্রাম্যাটিকভাবে পড়তে এবং পরিবর্তন করতে পারেন। এটি আপনাকে ব্যাকএন্ডে টেমপ্লেট পরিবর্তন করতে দেয় যা ক্লায়েন্ট অ্যাপ ক্লায়েন্ট লাইব্রেরি ব্যবহার করে আনতে পারে।
এই নির্দেশিকায় বর্ণিত Remote Config REST API অথবা Admin SDK ব্যবহার করে, আপনি Firebase কনসোলে টেমপ্লেট পরিচালনাকে বাইপাস করে Remote Config পরিবর্তনগুলিকে সরাসরি আপনার নিজস্ব প্রক্রিয়ায় একীভূত করতে পারেন। উদাহরণস্বরূপ, Remote Config ব্যাকএন্ড API এর সাহায্যে, আপনি যা করতে পারেন:
- Remote Config আপডেটের সময়সূচী নির্ধারণ । ক্রোন জবের সাথে API কল ব্যবহার করে, আপনি নিয়মিত সময়সূচীতে Remote Config মান পরিবর্তন করতে পারেন।
- আপনার নিজস্ব মালিকানাধীন সিস্টেম থেকে Firebase Remote Config এ দক্ষতার সাথে রূপান্তর করার জন্য ব্যাচ ইম্পোর্ট কনফিগারেশন মান ।
Cloud Functions for Firebase সহ Remote Config ব্যবহার করুন , সার্ভার-সাইডের ইভেন্টের উপর ভিত্তি করে আপনার অ্যাপে মান পরিবর্তন করুন। উদাহরণস্বরূপ, আপনি আপনার অ্যাপে একটি নতুন বৈশিষ্ট্য প্রচার করতে Remote Config ব্যবহার করতে পারেন, এবং তারপরে যখন আপনি লক্ষ্য করবেন যে যথেষ্ট লোক নতুন বৈশিষ্ট্যটির সাথে ইন্টারঅ্যাক্ট করেছে তখন স্বয়ংক্রিয়ভাবে সেই প্রচারটি বন্ধ করে দিন।
এই নির্দেশিকার নিম্নলিখিত বিভাগগুলিতে Remote Config ব্যাকএন্ড API গুলির মাধ্যমে আপনি যে ক্রিয়াকলাপগুলি করতে পারেন তা বর্ণনা করা হয়েছে। REST API এর মাধ্যমে এই কাজগুলি সম্পাদন করে এমন কিছু কোড পর্যালোচনা করতে, এই নমুনা অ্যাপগুলির মধ্যে একটি দেখুন:
- ফায়ারবেস রিমোট কনফিগারেশন REST API জাভা কুইকস্টার্ট
- ফায়ারবেস রিমোট কনফিগারেশন REST API Node.js কুইকস্টার্ট
- ফায়ারবেস রিমোট কনফিগারেশন REST API পাইথন কুইকস্টার্ট
Firebase অ্যাডমিন SDK ব্যবহার করে রিমোট কনফিগারেশন পরিবর্তন করুন
Admin SDK হল সার্ভার লাইব্রেরির একটি সেট যা আপনাকে বিশেষায়িত পরিবেশ থেকে Firebase এর সাথে ইন্টারঅ্যাক্ট করতে দেয়। Remote Config আপডেট করার পাশাপাশি, Admin SDK Firebase প্রমাণীকরণ টোকেন তৈরি এবং যাচাইকরণ, Realtime Database থেকে পড়া এবং লেখা ইত্যাদি সক্ষম করে। Admin SDK পূর্বশর্ত এবং সেটআপ সম্পর্কে আরও জানতে, আপনার সার্ভারে Firebase অ্যাডমিন SDK যোগ করুন দেখুন।
একটি সাধারণ Remote Config ফ্লোতে, আপনি বর্তমান টেমপ্লেটটি পেতে পারেন, কিছু প্যারামিটার বা প্যারামিটার গ্রুপ এবং শর্তাবলী পরিবর্তন করতে পারেন, টেমপ্লেটটি যাচাই করতে পারেন এবং তারপর এটি প্রকাশ করতে পারেন। এই API কলগুলি করার আগে, আপনাকে SDK থেকে অনুরোধগুলি অনুমোদন করতে হবে।
SDK আরম্ভ করুন এবং API অনুরোধ অনুমোদন করুন
যখন আপনি কোনও প্যারামিটার ছাড়াই Admin SDK চালু করেন, তখন SDK Google অ্যাপ্লিকেশন ডিফল্ট শংসাপত্র ব্যবহার করে এবং FIREBASE_CONFIG
পরিবেশ ভেরিয়েবল থেকে বিকল্পগুলি পড়ে। যদি FIREBASE_CONFIG
ভেরিয়েবলের বিষয়বস্তু {
দিয়ে শুরু হয় তবে এটি একটি JSON অবজেক্ট হিসাবে পার্স করা হবে। অন্যথায় SDK ধরে নেয় যে স্ট্রিংটি বিকল্পগুলি ধারণকারী একটি JSON ফাইলের নাম।
উদাহরণস্বরূপ:
নোড.জেএস
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);
বর্তমান রিমোট কনফিগ টেমপ্লেটটি পান
Remote Config টেমপ্লেটগুলির সাথে কাজ করার সময়, মনে রাখবেন যে সেগুলি সংস্করণযুক্ত, এবং প্রতিটি সংস্করণ তৈরির সময় থেকে আপডেট দিয়ে প্রতিস্থাপনের সময় পর্যন্ত সীমিত জীবনকাল থাকে: 90 দিন, মোট 300টি সঞ্চিত সংস্করণের সীমা সহ। আরও তথ্যের জন্য টেমপ্লেট এবং সংস্করণ দেখুন।
Remote Config টেমপ্লেটের বর্তমান সক্রিয় সংস্করণটি JSON ফর্ম্যাটে পেতে আপনি ব্যাকএন্ড API ব্যবহার করতে পারেন।
A/B Testing পরীক্ষায় বিশেষভাবে ভেরিয়েন্ট হিসেবে তৈরি করা প্যারামিটার এবং প্যারামিটার মানগুলি রপ্তানি করা টেমপ্লেটগুলিতে অন্তর্ভুক্ত নয়।
টেমপ্লেটটি পেতে:
নোড.জেএস
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());
রিমোট কনফিগ প্যারামিটার পরিবর্তন করুন
আপনি প্রোগ্রাম্যাটিকভাবে Remote Config প্যারামিটার এবং প্যারামিটার গ্রুপ পরিবর্তন এবং যোগ করতে পারেন। উদাহরণস্বরূপ, "new_menu" নামক একটি বিদ্যমান প্যারামিটার গ্রুপে আপনি মৌসুমী তথ্য প্রদর্শন নিয়ন্ত্রণ করার জন্য একটি প্যারামিটার যোগ করতে পারেন:
নোড.জেএস
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 আপনাকে নতুন প্যারামিটার এবং প্যারামিটার গ্রুপ তৈরি করতে, অথবা ডিফল্ট মান, শর্তসাপেক্ষ মান এবং বিবরণ পরিবর্তন করতে দেয়। সকল ক্ষেত্রে, পরিবর্তন করার পরে আপনাকে স্পষ্টভাবে টেমপ্লেটটি প্রকাশ করতে হবে।
রিমোট কনফিগ শর্তাবলী পরিবর্তন করুন
আপনি প্রোগ্রাম্যাটিকভাবে Remote Config শর্তাবলী এবং শর্তসাপেক্ষ মান পরিবর্তন এবং যোগ করতে পারেন। উদাহরণস্বরূপ, একটি নতুন শর্ত যোগ করতে:
নোড.জেএস
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));
সকল ক্ষেত্রে, পরিবর্তন করার পর আপনাকে অবশ্যই টেমপ্লেটটি স্পষ্টভাবে প্রকাশ করতে হবে।
Remote Config ব্যাকএন্ড API গুলি বেশ কিছু শর্ত এবং তুলনামূলক অপারেটর প্রদান করে যা আপনি আপনার অ্যাপের আচরণ এবং চেহারা পরিবর্তন করতে ব্যবহার করতে পারেন। শর্তাবলী এবং এই শর্তগুলির জন্য সমর্থিত অপারেটরগুলি সম্পর্কে আরও জানতে, শর্তসাপেক্ষ অভিব্যক্তি রেফারেন্স দেখুন।
রিমোট কনফিগ টেমপ্লেট যাচাই করুন
ঐচ্ছিকভাবে, আপনি আপনার আপডেটগুলি প্রকাশ করার আগে যাচাই করতে পারেন, যেমনটি দেখানো হয়েছে:
নোড.জেএস
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 ব্যবহার করে পূর্ববর্তী সংস্করণে ফিরে যেতে পারেন। আপডেটে ত্রুটির ঝুঁকি কমাতে, আপনি প্রকাশের আগে যাচাই করতে পারেন।
Remote Config ব্যক্তিগতকরণ এবং শর্তাবলী ডাউনলোড করা টেমপ্লেটগুলিতে অন্তর্ভুক্ত করা হয়েছে, তাই অন্য কোনও প্রকল্পে প্রকাশ করার চেষ্টা করার সময় নিম্নলিখিত সীমাবদ্ধতাগুলি সম্পর্কে সচেতন থাকা গুরুত্বপূর্ণ:
ব্যক্তিগতকরণ এক প্রকল্প থেকে অন্য প্রকল্পে আমদানি করা যাবে না।
উদাহরণস্বরূপ, যদি আপনার প্রকল্পে ব্যক্তিগতকরণ সক্ষম করা থাকে এবং একটি টেমপ্লেট ডাউনলোড এবং সম্পাদনা করেন, তাহলে আপনি এটি একই প্রকল্পে প্রকাশ করতে পারেন, কিন্তু আপনি টেমপ্লেট থেকে ব্যক্তিগতকরণগুলি মুছে না ফেলা পর্যন্ত এটি অন্য কোনও প্রকল্পে প্রকাশ করতে পারবেন না।
শর্তাবলী এক প্রকল্প থেকে অন্য প্রকল্পে আমদানি করা যেতে পারে, তবে মনে রাখবেন যে প্রকাশের আগে লক্ষ্য প্রকল্পে যেকোনো নির্দিষ্ট শর্তাধীন মান (যেমন অ্যাপ আইডি বা অডিয়েন্স) থাকা উচিত।
উদাহরণস্বরূপ, যদি আপনার কাছে একটি Remote Config প্যারামিটার থাকে যা
iOS
এর একটি প্ল্যাটফর্ম মান নির্দিষ্ট করে এমন একটি শর্ত ব্যবহার করে, তাহলে টেমপ্লেটটি অন্য একটি প্রকল্পে প্রকাশ করা যেতে পারে, কারণ প্ল্যাটফর্ম মান যেকোনো প্রকল্পের জন্য একই। তবে, যদি এতে এমন একটি শর্ত থাকে যা একটি নির্দিষ্ট অ্যাপ আইডি বা ব্যবহারকারী দর্শকের উপর নির্ভর করে যা লক্ষ্য প্রকল্পে বিদ্যমান নেই, তাহলে যাচাইকরণ ব্যর্থ হবে।আপনি যে টেমপ্লেটটি প্রকাশ করার পরিকল্পনা করছেন তাতে যদি এমন শর্ত থাকে যা Google Analytics এর উপর নির্ভর করে, তাহলে লক্ষ্য প্রকল্পে Analytics সক্ষম করতে হবে।
নোড.জেএস
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
এ Remote Config REST API-এর প্রধান ক্ষমতা বর্ণনা করে। সম্পূর্ণ বিবরণের জন্য, API রেফারেন্স দেখুন।
API অনুরোধগুলি প্রমাণীকরণ এবং অনুমোদনের জন্য একটি অ্যাক্সেস টোকেন পান
ফায়ারবেস প্রকল্পগুলি গুগল পরিষেবা অ্যাকাউন্টগুলিকে সমর্থন করে, যা আপনি আপনার অ্যাপ সার্ভার বা বিশ্বস্ত পরিবেশ থেকে ফায়ারবেস সার্ভার API কল করতে ব্যবহার করতে পারেন। আপনি যদি স্থানীয়ভাবে কোড তৈরি করেন বা আপনার অ্যাপ্লিকেশনটি অন-প্রেমিসে স্থাপন করেন, তাহলে আপনি সার্ভার অনুরোধগুলি অনুমোদনের জন্য এই পরিষেবা অ্যাকাউন্টের মাধ্যমে প্রাপ্ত শংসাপত্রগুলি ব্যবহার করতে পারেন।
একটি পরিষেবা অ্যাকাউন্ট প্রমাণীকরণ করতে এবং Firebase পরিষেবাগুলিতে অ্যাক্সেস করার জন্য এটিকে অনুমোদন করতে, আপনাকে অবশ্যই JSON ফর্ম্যাটে একটি ব্যক্তিগত কী ফাইল তৈরি করতে হবে।
আপনার পরিষেবা অ্যাকাউন্টের জন্য একটি ব্যক্তিগত কী ফাইল তৈরি করতে:
Firebase কনসোলে, Settings > Service Accounts খুলুন।
নতুন প্রাইভেট কী তৈরি করুন ক্লিক করুন, তারপর কী তৈরি করুন ক্লিক করে নিশ্চিত করুন।
কীটি ধারণকারী JSON ফাইলটি নিরাপদে সংরক্ষণ করুন।
কোনও পরিষেবা অ্যাকাউন্টের মাধ্যমে অনুমোদন দেওয়ার সময়, আপনার অ্যাপ্লিকেশনে শংসাপত্র সরবরাহ করার জন্য আপনার কাছে দুটি বিকল্প রয়েছে। আপনি হয় GOOGLE_APPLICATION_CREDENTIALS পরিবেশ পরিবর্তনশীল সেট করতে পারেন, অথবা আপনি কোডে পরিষেবা অ্যাকাউন্ট কী-তে স্পষ্টভাবে পথটি পাস করতে পারেন। প্রথম বিকল্পটি আরও নিরাপদ এবং এটি দৃঢ়ভাবে সুপারিশ করা হয়।
পরিবেশ পরিবর্তনশীল সেট করতে:
আপনার সার্ভিস অ্যাকাউন্ট কী ধারণকারী JSON ফাইলের ফাইল পাথে GOOGLE_APPLICATION_CREDENTIALS পরিবেশগত ভেরিয়েবল সেট করুন। এই ভেরিয়েবলটি শুধুমাত্র আপনার বর্তমান শেল সেশনের ক্ষেত্রে প্রযোজ্য, তাই আপনি যদি একটি নতুন সেশন খোলেন, তাহলে ভেরিয়েবলটি আবার সেট করুন।
লিনাক্স বা ম্যাকওএস
export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/service-account-file.json"
জানালা
পাওয়ারশেলের সাথে:
$env:GOOGLE_APPLICATION_CREDENTIALS="C:\Users\username\Downloads\service-account-file.json"
উপরের ধাপগুলি সম্পন্ন করার পরে, অ্যাপ্লিকেশন ডিফল্ট ক্রেডেনশিয়ালস (ADC) আপনার ক্রেডেনশিয়ালগুলি পরোক্ষভাবে নির্ধারণ করতে সক্ষম হবে, যা আপনাকে নন-গুগল পরিবেশে পরীক্ষা করার সময় বা চালানোর সময় পরিষেবা অ্যাকাউন্ট ক্রেডেনশিয়ালগুলি ব্যবহার করার অনুমতি দেবে।
স্বল্পস্থায়ী OAuth 2.0 অ্যাক্সেস টোকেন পুনরুদ্ধার করতে আপনার পছন্দের ভাষার জন্য Google Auth লাইব্রেরির সাথে আপনার Firebase শংসাপত্রগুলি ব্যবহার করুন:
নোড.জেএস
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
স্কোপটি অনুরোধ করুন।
রিমোট কনফিগ টেমপ্লেটটি পরিবর্তন করুন
Remote Config টেমপ্লেটগুলির সাথে কাজ করার সময়, মনে রাখবেন যে সেগুলি সংস্করণযুক্ত, এবং প্রতিটি সংস্করণ তৈরির সময় থেকে আপডেট দিয়ে প্রতিস্থাপনের সময় পর্যন্ত সীমিত জীবনকাল থাকে: 90 দিন, মোট 300টি সঞ্চিত সংস্করণের সীমা সহ। আরও তথ্যের জন্য টেমপ্লেট এবং সংস্করণ দেখুন।
বর্তমান রিমোট কনফিগ টেমপ্লেটটি পান
Remote Config টেমপ্লেটের বর্তমান সক্রিয় সংস্করণটি JSON ফর্ম্যাটে পেতে আপনি ব্যাকএন্ড API ব্যবহার করতে পারেন।
A/B Testing পরীক্ষায় বিশেষভাবে ভেরিয়েন্ট হিসেবে তৈরি করা প্যারামিটার এবং প্যারামিটার মানগুলি রপ্তানি করা টেমপ্লেটগুলিতে অন্তর্ভুক্ত নয়।
নিম্নলিখিত কমান্ডগুলি ব্যবহার করুন:
সিআরএল
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
প্রত্যয় সহ একটি আপডেট করা etag এর অর্থ হল আপনার আপডেটটি সফলভাবে যাচাই করা হয়েছে। যেকোনো অ-200 প্রতিক্রিয়া নির্দেশ করে যে JSON ডেটাতে ত্রুটি রয়েছে যা প্রকাশের আগে আপনাকে অবশ্যই সংশোধন করতে হবে।
রিমোট কনফিগ টেমপ্লেট আপডেট করুন
একটি টেমপ্লেট উদ্ধার করে এবং আপনার পছন্দসই আপডেট সহ JSON কন্টেন্ট সংশোধন করে, আপনি এটি প্রকাশ করতে পারেন। এই বিভাগে বর্ণিত একটি টেমপ্লেট প্রকাশ করলে সম্পূর্ণ বিদ্যমান কনফিগারেশন টেমপ্লেটটি আপডেট করা ফাইল দিয়ে প্রতিস্থাপন করা হয় এবং নতুন সক্রিয় টেমপ্লেটটিকে প্রতিস্থাপন করা টেমপ্লেটের চেয়ে বড় সংস্করণ নম্বর এক নম্বর বরাদ্দ করা হয়।
প্রয়োজনে, আপনি REST API ব্যবহার করে পূর্ববর্তী সংস্করণে ফিরে যেতে পারেন। আপডেটে ত্রুটির ঝুঁকি কমাতে, আপনি প্রকাশের আগে যাচাই করতে পারেন।
Remote Config ব্যক্তিগতকরণ এবং শর্তাবলী ডাউনলোড করা টেমপ্লেটগুলিতে অন্তর্ভুক্ত করা হয়েছে, তাই অন্য কোনও প্রকল্পে প্রকাশ করার চেষ্টা করার সময় নিম্নলিখিত সীমাবদ্ধতাগুলি সম্পর্কে সচেতন থাকা গুরুত্বপূর্ণ:
ব্যক্তিগতকরণ এক প্রকল্প থেকে অন্য প্রকল্পে আমদানি করা যাবে না।
উদাহরণস্বরূপ, যদি আপনার প্রকল্পে ব্যক্তিগতকরণ সক্ষম করা থাকে এবং একটি টেমপ্লেট ডাউনলোড এবং সম্পাদনা করেন, তাহলে আপনি এটি একই প্রকল্পে প্রকাশ করতে পারেন, কিন্তু আপনি টেমপ্লেট থেকে ব্যক্তিগতকরণগুলি মুছে না ফেলা পর্যন্ত এটি অন্য কোনও প্রকল্পে প্রকাশ করতে পারবেন না।
শর্তাবলী এক প্রকল্প থেকে অন্য প্রকল্পে আমদানি করা যেতে পারে, তবে মনে রাখবেন যে প্রকাশের আগে লক্ষ্য প্রকল্পে যেকোনো নির্দিষ্ট শর্তাধীন মান (যেমন অ্যাপ আইডি বা অডিয়েন্স) থাকা উচিত।
উদাহরণস্বরূপ, যদি আপনার কাছে একটি Remote Config প্যারামিটার থাকে যা
iOS
এর একটি প্ল্যাটফর্ম মান নির্দিষ্ট করে এমন একটি শর্ত ব্যবহার করে, তাহলে টেমপ্লেটটি অন্য একটি প্রকল্পে প্রকাশ করা যেতে পারে, কারণ প্ল্যাটফর্ম মান যেকোনো প্রকল্পের জন্য একই। তবে, যদি এতে এমন একটি শর্ত থাকে যা একটি নির্দিষ্ট অ্যাপ আইডি বা ব্যবহারকারী দর্শকের উপর নির্ভর করে যা লক্ষ্য প্রকল্পে বিদ্যমান নেই, তাহলে যাচাইকরণ ব্যর্থ হবে।আপনি যে টেমপ্লেটটি প্রকাশ করার পরিকল্পনা করছেন তাতে যদি এমন শর্ত থাকে যা Google Analytics এর উপর নির্ভর করে, তাহলে লক্ষ্য প্রকল্পে Analytics সক্ষম করতে হবে।
সিআরএল
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 প্রদান করা হয়।
রিমোট কনফিগ শর্তাবলী পরিবর্তন করুন
আপনি প্রোগ্রাম্যাটিকভাবে Remote Config শর্তাবলী এবং শর্তসাপেক্ষ মান পরিবর্তন করতে পারেন। 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 ও সরবরাহ করা হয়।
Remote Config ব্যাকএন্ড API গুলি বেশ কিছু শর্ত এবং তুলনামূলক অপারেটর প্রদান করে যা আপনি আপনার অ্যাপের আচরণ এবং চেহারা পরিবর্তন করতে ব্যবহার করতে পারেন। শর্তাবলী এবং এই শর্তগুলির জন্য সমর্থিত অপারেটরগুলি সম্পর্কে আরও জানতে, শর্তসাপেক্ষ অভিব্যক্তি রেফারেন্স দেখুন।
HTTP ত্রুটি কোডগুলি
স্ট্যাটাস কোড | অর্থ |
---|---|
২০০ | সফলভাবে আপডেট করা হয়েছে |
৪০০ | একটি বৈধতা ত্রুটি ঘটেছে। উদাহরণস্বরূপ, অনুমোদিত সংখ্যার চেয়ে বেশি কী—২০০০—সম্বলিত একটি অনুরোধ ত্রুটি বার্তা সহ ৪০০ (খারাপ অনুরোধ) ফেরত দেবে, Param count too large । এছাড়াও, এই HTTPS স্থিতি কোডটি এই দুটি পরিস্থিতিতে ঘটতে পারে:
|
৪০১ | একটি অনুমোদন ত্রুটি ঘটেছে (কোনও অ্যাক্সেস টোকেন সরবরাহ করা হয়নি বা ক্লাউড ডেভেলপার কনসোলে আপনার প্রকল্পে Firebase Remote Config REST API যোগ করা হয়নি) |
৪০৩ | একটি প্রমাণীকরণ ত্রুটি ঘটেছে (ভুল অ্যাক্সেস টোকেন সরবরাহ করা হয়েছিল) |
৫০০ | একটি অভ্যন্তরীণ ত্রুটি ঘটেছে। যদি এই ত্রুটিটি ঘটে, তাহলে একটি Firebase সহায়তা টিকিট ফাইল করুন। |
২০০ স্ট্যাটাস কোডের অর্থ হল Remote Config টেমপ্লেট (প্রকল্পের জন্য প্যারামিটার, মান এবং শর্তাবলী) আপডেট করা হয়েছে এবং এখন এই প্রকল্প ব্যবহারকারী অ্যাপগুলির জন্য উপলব্ধ। অন্যান্য স্ট্যাটাস কোডগুলি নির্দেশ করে যে পূর্বে বিদ্যমান Remote Config টেমপ্লেটটি এখনও কার্যকর রয়েছে।
আপনার টেমপ্লেটে আপডেট জমা দেওয়ার পরে, আপনার পরিবর্তনগুলি প্রত্যাশা অনুযায়ী দেখাচ্ছে কিনা তা যাচাই করতে 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 এবং এর দ্বারা প্রদত্ত সুরক্ষা এড়াতে পারেন, Remote Config টেমপ্লেটটি নিম্নরূপ আপডেট করতে বাধ্য করে: If-Match: *
তবে, এই পদ্ধতিটি সুপারিশ করা হয় না কারণ এটি একাধিক ক্লায়েন্ট Remote Config Remote Config আপডেটগুলি হারানোর ঝুঁকি রাখে। API ব্যবহারকারী একাধিক ক্লায়েন্টের সাথে, অথবা API ক্লায়েন্ট এবং Firebase কনসোল ব্যবহারকারীদের থেকে বিরোধপূর্ণ আপডেটের সাথে এই ধরণের দ্বন্দ্ব ঘটতে পারে।
Remote Config টেমপ্লেট সংস্করণ পরিচালনার নির্দেশনার জন্য, রিমোট কনফিগ টেমপ্লেট এবং সংস্করণ দেখুন।