এই দস্তাবেজটি বর্ণনা করে যে আপনি কীভাবে প্রোগ্রাম্যাটিকভাবে JSON- ফর্ম্যাট করা প্যারামিটার এবং Remote Config টেমপ্লেট হিসাবে পরিচিত শর্তগুলির সেট পড়তে এবং সংশোধন করতে পারেন৷ এটি আপনাকে ব্যাকএন্ডে টেমপ্লেট পরিবর্তন করতে দেয় যা ক্লায়েন্ট অ্যাপ ক্লায়েন্ট লাইব্রেরি ব্যবহার করে আনতে পারে।
এই নির্দেশিকায় বর্ণিত 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 জাভা কুইকস্টার্ট
- Firebase Remote Config REST API Node.js Quickstart
- ফায়ারবেস রিমোট কনফিগ REST API পাইথন কুইকস্টার্ট
Firebase অ্যাডমিন SDK ব্যবহার করে রিমোট কনফিগারেশন পরিবর্তন করুন
Admin SDK হল সার্ভার লাইব্রেরির একটি সেট যা আপনাকে বিশেষ সুবিধাপ্রাপ্ত পরিবেশ থেকে Firebase-এর সাথে ইন্টারঅ্যাক্ট করতে দেয়। Remote Config আপডেটগুলি সম্পাদন করার পাশাপাশি, Admin SDK ফায়ারবেস প্রমাণীকরণ টোকেন তৈরি এবং যাচাইকরণ, Realtime Database থেকে পড়া এবং লেখা ইত্যাদি সক্ষম করে৷ Admin SDK পূর্বশর্ত এবং সেটআপ সম্পর্কে আরও জানতে, আপনার সার্ভারে Firebase অ্যাডমিন SDK যোগ করুন দেখুন।
একটি সাধারণ Remote Config ফ্লোতে, আপনি বর্তমান টেমপ্লেট পেতে পারেন, কিছু প্যারামিটার বা প্যারামিটার গ্রুপ এবং শর্তাবলী পরিবর্তন করতে পারেন, টেমপ্লেটটি যাচাই করতে পারেন এবং তারপরে এটি প্রকাশ করতে পারেন। সেই API কলগুলি করার আগে, আপনাকে অবশ্যই SDK থেকে অনুরোধগুলি অনুমোদন করতে হবে৷
SDK শুরু করুন এবং API অনুরোধ অনুমোদন করুন
আপনি যখন কোনো প্যারামিটার ছাড়াই Admin 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);
বর্তমান রিমোট কনফিগারেশন টেমপ্লেট পান
Remote Config টেমপ্লেটগুলির সাথে কাজ করার সময়, মনে রাখবেন যে সেগুলি সংস্করণ করা হয়েছে, এবং প্রতিটি সংস্করণ তৈরির সময় থেকে আপনি এটিকে একটি আপডেটের সাথে প্রতিস্থাপন করার সময় পর্যন্ত একটি সীমিত জীবনকাল রয়েছে: 90 দিন, মোট 300টি সংরক্ষিত সংস্করণের সীমা সহ। আরও তথ্যের জন্য টেমপ্লেট এবং সংস্করণ দেখুন।
আপনি JSON ফর্ম্যাটে Remote Config টেমপ্লেটের বর্তমান সক্রিয় সংস্করণ পেতে ব্যাকএন্ড API ব্যবহার করতে পারেন।
পরামিতি এবং পরামিতি মানগুলি বিশেষভাবে একটি A/B Testing পরীক্ষায় বৈকল্পিক হিসাবে তৈরি করা রপ্তানি করা টেমপ্লেটগুলিতে অন্তর্ভুক্ত নয়৷
টেমপ্লেট পেতে:
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());
দূরবর্তী কনফিগার পরামিতি পরিবর্তন করুন
আপনি প্রোগ্রামগতভাবে Remote Config পরামিতি এবং প্যারামিটার গ্রুপগুলি সংশোধন এবং যোগ করতে পারেন। উদাহরণস্বরূপ, "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 আপনাকে নতুন প্যারামিটার এবং প্যারামিটার গ্রুপ তৈরি করতে বা ডিফল্ট মান, শর্তাধীন মান এবং বিবরণ পরিবর্তন করতে দেয়। সব ক্ষেত্রে, পরিবর্তন করার পর আপনাকে স্পষ্টভাবে টেমপ্লেট প্রকাশ করতে হবে।
দূরবর্তী কনফিগার অবস্থা পরিবর্তন করুন
আপনি প্রোগ্রামগতভাবে Remote Config শর্তাবলী এবং শর্তসাপেক্ষ মানগুলি সংশোধন এবং যোগ করতে পারেন। উদাহরণস্বরূপ, একটি নতুন শর্ত যোগ করতে:
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));
সব ক্ষেত্রে, পরিবর্তন করার পর আপনাকে স্পষ্টভাবে টেমপ্লেট প্রকাশ করতে হবে।
Remote Config ব্যাকএন্ড 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 ব্যবহার করতে পারেন। একটি আপডেটে ত্রুটির ঝুঁকি কমাতে, আপনি প্রকাশ করার আগে যাচাই করতে পারেন৷
Remote Config ব্যক্তিগতকরণ এবং শর্তাবলী ডাউনলোড করা টেমপ্লেটগুলিতে অন্তর্ভুক্ত করা হয়েছে, তাই একটি ভিন্ন প্রকল্পে প্রকাশ করার চেষ্টা করার সময় নিম্নলিখিত সীমাবদ্ধতাগুলি সম্পর্কে সচেতন হওয়া গুরুত্বপূর্ণ:
ব্যক্তিগতকরণ প্রকল্প থেকে প্রকল্প আমদানি করা যাবে না.
উদাহরণস্বরূপ, আপনি যদি আপনার প্রকল্পে ব্যক্তিগতকরণ সক্ষম করে থাকেন এবং একটি টেমপ্লেট ডাউনলোড এবং সম্পাদনা করেন, আপনি একই প্রকল্পে এটি প্রকাশ করতে পারেন, তবে আপনি টেমপ্লেট থেকে ব্যক্তিগতকরণগুলি মুছে না দেওয়া পর্যন্ত আপনি এটিকে একটি ভিন্ন প্রকল্পে প্রকাশ করতে পারবেন না৷
শর্তাবলী প্রজেক্ট থেকে প্রোজেক্টে আমদানি করা যেতে পারে, কিন্তু মনে রাখবেন যে কোনো নির্দিষ্ট শর্তাধীন মান (যেমন অ্যাপ আইডি বা শ্রোতা), প্রকাশের আগে লক্ষ্য প্রকল্পে থাকা উচিত।
উদাহরণস্বরূপ, যদি আপনার কাছে একটি Remote Config প্যারামিটার থাকে যা
iOS
এর একটি প্ল্যাটফর্ম মান নির্দিষ্ট করে এমন একটি শর্ত ব্যবহার করে, টেমপ্লেটটি অন্য প্রকল্পে প্রকাশ করা যেতে পারে, কারণ প্ল্যাটফর্মের মান যেকোনো প্রকল্পের জন্য একই। যাইহোক, যদি এটিতে এমন একটি শর্ত থাকে যা একটি নির্দিষ্ট অ্যাপ আইডি বা ব্যবহারকারী দর্শকের উপর নির্ভর করে যা লক্ষ্য প্রকল্পে বিদ্যমান নেই, তাহলে বৈধতা ব্যর্থ হবে।আপনি যে টেমপ্লেটটি প্রকাশ করার পরিকল্পনা করছেন তাতে যদি এমন শর্ত থাকে যা Google Analytics উপর নির্ভর করে, তাহলে লক্ষ্য প্রকল্পে Analytics সক্রিয় করা আবশ্যক।
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
এ Remote Config REST API-এর প্রধান ক্ষমতাগুলি বর্ণনা করে। সম্পূর্ণ বিবরণের জন্য, API রেফারেন্স দেখুন।
API অনুরোধগুলিকে প্রমাণীকরণ এবং অনুমোদন করতে একটি অ্যাক্সেস টোকেন পান৷
Firebase প্রকল্পগুলি Google পরিষেবা অ্যাকাউন্টগুলিকে সমর্থন করে, যা আপনি আপনার অ্যাপ সার্ভার বা বিশ্বস্ত পরিবেশ থেকে Firebase সার্ভার API কল করতে ব্যবহার করতে পারেন৷ আপনি যদি স্থানীয়ভাবে কোড ডেভেলপ করছেন বা আপনার অ্যাপ্লিকেশনটি প্রাঙ্গনে স্থাপন করছেন, আপনি সার্ভার অনুরোধ অনুমোদন করতে এই পরিষেবা অ্যাকাউন্টের মাধ্যমে প্রাপ্ত শংসাপত্রগুলি ব্যবহার করতে পারেন৷
একটি পরিষেবা অ্যাকাউন্ট প্রমাণীকরণ করতে এবং এটিকে Firebase পরিষেবাগুলি অ্যাক্সেস করার অনুমোদন দিতে, আপনাকে অবশ্যই JSON ফর্ম্যাটে একটি ব্যক্তিগত কী ফাইল তৈরি করতে হবে৷
আপনার পরিষেবা অ্যাকাউন্টের জন্য একটি ব্যক্তিগত কী ফাইল তৈরি করতে:
Firebase কনসোলে, সেটিংস > পরিষেবা অ্যাকাউন্ট খুলুন।
জেনারেট নিউ প্রাইভেট কী ক্লিক করুন, তারপর জেনারেট কী ক্লিক করে নিশ্চিত করুন।
কী আছে এমন 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
স্কোপের অনুরোধ করুন।
রিমোট কনফিগ টেমপ্লেট পরিবর্তন করুন
Remote Config টেমপ্লেটগুলির সাথে কাজ করার সময়, মনে রাখবেন যে সেগুলি সংস্করণ করা হয়েছে, এবং প্রতিটি সংস্করণ তৈরির সময় থেকে আপনি এটিকে একটি আপডেটের সাথে প্রতিস্থাপন করার সময় পর্যন্ত একটি সীমিত জীবনকাল রয়েছে: 90 দিন, মোট 300টি সংরক্ষিত সংস্করণের সীমা সহ। আরও তথ্যের জন্য টেমপ্লেট এবং সংস্করণ দেখুন।
বর্তমান রিমোট কনফিগারেশন টেমপ্লেট পান
আপনি JSON ফর্ম্যাটে Remote Config টেমপ্লেটের বর্তমান সক্রিয় সংস্করণ পেতে ব্যাকএন্ড API ব্যবহার করতে পারেন।
পরামিতি এবং পরামিতি মানগুলি বিশেষভাবে একটি A/B Testing পরীক্ষায় বৈকল্পিক হিসাবে তৈরি করা রপ্তানি করা টেমপ্লেটগুলিতে অন্তর্ভুক্ত নয়৷
নিম্নলিখিত কমান্ড ব্যবহার করুন:
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 ব্যবহার করতে পারেন। একটি আপডেটে ত্রুটির ঝুঁকি কমাতে, আপনি প্রকাশ করার আগে যাচাই করতে পারেন৷
Remote Config ব্যক্তিগতকরণ এবং শর্তাবলী ডাউনলোড করা টেমপ্লেটগুলিতে অন্তর্ভুক্ত করা হয়েছে, তাই একটি ভিন্ন প্রকল্পে প্রকাশ করার চেষ্টা করার সময় নিম্নলিখিত সীমাবদ্ধতাগুলি সম্পর্কে সচেতন হওয়া গুরুত্বপূর্ণ:
ব্যক্তিগতকরণ প্রকল্প থেকে প্রকল্প আমদানি করা যাবে না.
উদাহরণস্বরূপ, আপনি যদি আপনার প্রকল্পে ব্যক্তিগতকরণ সক্ষম করে থাকেন এবং একটি টেমপ্লেট ডাউনলোড এবং সম্পাদনা করেন, আপনি একই প্রকল্পে এটি প্রকাশ করতে পারেন, তবে আপনি টেমপ্লেট থেকে ব্যক্তিগতকরণগুলি মুছে না দেওয়া পর্যন্ত আপনি এটিকে একটি ভিন্ন প্রকল্পে প্রকাশ করতে পারবেন না৷
শর্তাবলী প্রজেক্ট থেকে প্রোজেক্টে আমদানি করা যেতে পারে, কিন্তু মনে রাখবেন যে কোনো নির্দিষ্ট শর্তাধীন মান (যেমন অ্যাপ আইডি বা শ্রোতা), প্রকাশের আগে লক্ষ্য প্রকল্পে থাকা উচিত।
উদাহরণস্বরূপ, যদি আপনার কাছে একটি Remote Config প্যারামিটার থাকে যা
iOS
এর একটি প্ল্যাটফর্ম মান নির্দিষ্ট করে এমন একটি শর্ত ব্যবহার করে, টেমপ্লেটটি অন্য প্রকল্পে প্রকাশ করা যেতে পারে, কারণ প্ল্যাটফর্মের মান যেকোনো প্রকল্পের জন্য একই। যাইহোক, যদি এটিতে এমন একটি শর্ত থাকে যা একটি নির্দিষ্ট অ্যাপ আইডি বা ব্যবহারকারী দর্শকের উপর নির্ভর করে যা লক্ষ্য প্রকল্পে বিদ্যমান নেই, তাহলে বৈধতা ব্যর্থ হবে।আপনি যে টেমপ্লেটটি প্রকাশ করার পরিকল্পনা করছেন তাতে যদি এমন শর্ত থাকে যা Google Analytics উপর নির্ভর করে, তাহলে লক্ষ্য প্রকল্পে Analytics সক্রিয় করা আবশ্যক।
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 প্রদান করা হয়।
দূরবর্তী কনফিগার অবস্থা পরিবর্তন করুন
আপনি প্রোগ্রাম্যাটিকভাবে 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 ত্রুটি কোড
স্ট্যাটাস কোড | অর্থ |
---|---|
200 | সফলভাবে আপডেট করা হয়েছে |
400 | একটি বৈধতা ত্রুটি ঘটেছে. উদাহরণ স্বরূপ, একটি অনুরোধ যাতে অনুমোদিত সংখ্যক কী-2000-এর চেয়ে বেশি থাকে তা ত্রুটি বার্তা সহ 400 (খারাপ অনুরোধ) ফেরত দেবে, Param count too large । এছাড়াও, এই HTTPS স্ট্যাটাস কোড এই দুটি পরিস্থিতিতে ঘটতে পারে:
|
401 | একটি অনুমোদন ত্রুটি ঘটেছে (কোনও অ্যাক্সেস টোকেন প্রদান করা হয়নি বা Firebase Remote Config REST API ক্লাউড বিকাশকারী কনসোলে আপনার প্রকল্পে যোগ করা হয়নি) |
403 | একটি প্রমাণীকরণ ত্রুটি ঘটেছে (ভুল অ্যাক্সেস টোকেন প্রদান করা হয়েছে) |
500 | একটি অভ্যন্তরীণ ত্রুটি ঘটেছে৷ এই ত্রুটি দেখা দিলে, একটি Firebase সমর্থন টিকিট ফাইল করুন |
200-এর একটি স্ট্যাটাস কোডের অর্থ হল 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
কমান্ড ইস্যু করা উচিত।
আপনি Remote Config টেমপ্লেটকে নিম্নোক্তভাবে আপডেট করতে বাধ্য করার মাধ্যমে ETag এবং এটি থেকে সুরক্ষা প্রদান করতে পারেন: If-Match: *
তবে, এই পদ্ধতির সুপারিশ করা হয় না কারণ এটি আপনার Remote Config আপডেটগুলি হারানোর ঝুঁকি নিয়ে থাকে টেমপ্লেট যদি একাধিক ক্লায়েন্ট Remote Config টেমপ্লেট আপডেট করে। API ব্যবহার করে একাধিক ক্লায়েন্টের সাথে বা API ক্লায়েন্ট এবং Firebase কনসোল ব্যবহারকারীদের থেকে বিরোধপূর্ণ আপডেটের সাথে এই ধরনের দ্বন্দ্ব ঘটতে পারে।
Remote Config টেমপ্লেট সংস্করণ পরিচালনার বিষয়ে নির্দেশনার জন্য, দূরবর্তী কনফিগার টেমপ্লেট এবং সংস্করণ দেখুন।
,এই দস্তাবেজটি বর্ণনা করে যে আপনি কীভাবে প্রোগ্রাম্যাটিকভাবে JSON- ফর্ম্যাট করা প্যারামিটার এবং Remote Config টেমপ্লেট হিসাবে পরিচিত শর্তগুলির সেট পড়তে এবং সংশোধন করতে পারেন৷ এটি আপনাকে ব্যাকএন্ডে টেমপ্লেট পরিবর্তন করতে দেয় যা ক্লায়েন্ট অ্যাপ ক্লায়েন্ট লাইব্রেরি ব্যবহার করে আনতে পারে।
এই নির্দেশিকায় বর্ণিত 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 জাভা কুইকস্টার্ট
- Firebase Remote Config REST API Node.js Quickstart
- ফায়ারবেস রিমোট কনফিগ REST API পাইথন কুইকস্টার্ট
Firebase অ্যাডমিন SDK ব্যবহার করে রিমোট কনফিগারেশন পরিবর্তন করুন
Admin SDK হল সার্ভার লাইব্রেরির একটি সেট যা আপনাকে বিশেষ সুবিধাপ্রাপ্ত পরিবেশ থেকে Firebase-এর সাথে ইন্টারঅ্যাক্ট করতে দেয়। Remote Config আপডেটগুলি সম্পাদন করার পাশাপাশি, Admin SDK ফায়ারবেস প্রমাণীকরণ টোকেন তৈরি এবং যাচাইকরণ, Realtime Database থেকে পড়া এবং লেখা ইত্যাদি সক্ষম করে৷ Admin SDK পূর্বশর্ত এবং সেটআপ সম্পর্কে আরও জানতে, আপনার সার্ভারে Firebase অ্যাডমিন SDK যোগ করুন দেখুন।
একটি সাধারণ Remote Config ফ্লোতে, আপনি বর্তমান টেমপ্লেট পেতে পারেন, কিছু প্যারামিটার বা প্যারামিটার গ্রুপ এবং শর্তাবলী পরিবর্তন করতে পারেন, টেমপ্লেটটি যাচাই করতে পারেন এবং তারপরে এটি প্রকাশ করতে পারেন। সেই API কলগুলি করার আগে, আপনাকে অবশ্যই SDK থেকে অনুরোধগুলি অনুমোদন করতে হবে৷
SDK শুরু করুন এবং API অনুরোধ অনুমোদন করুন
আপনি যখন কোনো প্যারামিটার ছাড়াই Admin 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);
বর্তমান রিমোট কনফিগারেশন টেমপ্লেট পান
Remote Config টেমপ্লেটগুলির সাথে কাজ করার সময়, মনে রাখবেন যে সেগুলি সংস্করণ করা হয়েছে, এবং প্রতিটি সংস্করণ তৈরির সময় থেকে আপনি এটিকে একটি আপডেটের সাথে প্রতিস্থাপন করার সময় পর্যন্ত একটি সীমিত জীবনকাল রয়েছে: 90 দিন, মোট 300টি সংরক্ষিত সংস্করণের সীমা সহ। আরও তথ্যের জন্য টেমপ্লেট এবং সংস্করণ দেখুন।
আপনি JSON ফর্ম্যাটে Remote Config টেমপ্লেটের বর্তমান সক্রিয় সংস্করণ পেতে ব্যাকএন্ড API ব্যবহার করতে পারেন।
পরামিতি এবং পরামিতি মানগুলি বিশেষভাবে একটি A/B Testing পরীক্ষায় বৈকল্পিক হিসাবে তৈরি করা রপ্তানি করা টেমপ্লেটগুলিতে অন্তর্ভুক্ত নয়৷
টেমপ্লেট পেতে:
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());
দূরবর্তী কনফিগার পরামিতি পরিবর্তন করুন
আপনি প্রোগ্রামগতভাবে Remote Config পরামিতি এবং প্যারামিটার গ্রুপগুলি সংশোধন এবং যোগ করতে পারেন। উদাহরণস্বরূপ, "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 আপনাকে নতুন প্যারামিটার এবং প্যারামিটার গ্রুপ তৈরি করতে বা ডিফল্ট মান, শর্তাধীন মান এবং বিবরণ পরিবর্তন করতে দেয়। সব ক্ষেত্রে, পরিবর্তন করার পর আপনাকে স্পষ্টভাবে টেমপ্লেট প্রকাশ করতে হবে।
দূরবর্তী কনফিগার অবস্থা পরিবর্তন করুন
আপনি প্রোগ্রাম্যাটিকভাবে Remote Config অবস্থা এবং শর্তাধীন মানগুলি সংশোধন এবং যোগ করতে পারেন। উদাহরণস্বরূপ, একটি নতুন শর্ত যোগ করতে:
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));
সব ক্ষেত্রে, পরিবর্তন করার পর আপনাকে স্পষ্টভাবে টেমপ্লেট প্রকাশ করতে হবে।
Remote Config ব্যাকএন্ড 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 ব্যবহার করতে পারেন। একটি আপডেটে ত্রুটির ঝুঁকি কমাতে, আপনি প্রকাশ করার আগে যাচাই করতে পারেন৷
Remote Config ব্যক্তিগতকরণ এবং শর্তাবলী ডাউনলোড করা টেমপ্লেটগুলিতে অন্তর্ভুক্ত করা হয়েছে, তাই একটি ভিন্ন প্রকল্পে প্রকাশ করার চেষ্টা করার সময় নিম্নলিখিত সীমাবদ্ধতাগুলি সম্পর্কে সচেতন হওয়া গুরুত্বপূর্ণ:
ব্যক্তিগতকরণ প্রকল্প থেকে প্রকল্প আমদানি করা যাবে না.
উদাহরণস্বরূপ, আপনি যদি আপনার প্রকল্পে ব্যক্তিগতকরণ সক্ষম করে থাকেন এবং একটি টেমপ্লেট ডাউনলোড এবং সম্পাদনা করেন, আপনি একই প্রকল্পে এটি প্রকাশ করতে পারেন, তবে আপনি টেমপ্লেট থেকে ব্যক্তিগতকরণগুলি মুছে না দেওয়া পর্যন্ত আপনি এটিকে একটি ভিন্ন প্রকল্পে প্রকাশ করতে পারবেন না৷
শর্তাবলী প্রজেক্ট থেকে প্রোজেক্টে আমদানি করা যেতে পারে, কিন্তু মনে রাখবেন যে কোনো নির্দিষ্ট শর্তাধীন মান (যেমন অ্যাপ আইডি বা শ্রোতা), প্রকাশের আগে লক্ষ্য প্রকল্পে থাকা উচিত।
উদাহরণস্বরূপ, যদি আপনার কাছে একটি Remote Config প্যারামিটার থাকে যা
iOS
এর একটি প্ল্যাটফর্ম মান নির্দিষ্ট করে এমন একটি শর্ত ব্যবহার করে, টেমপ্লেটটি অন্য প্রকল্পে প্রকাশ করা যেতে পারে, কারণ প্ল্যাটফর্মের মান যেকোনো প্রকল্পের জন্য একই। যাইহোক, যদি এটিতে এমন একটি শর্ত থাকে যা একটি নির্দিষ্ট অ্যাপ আইডি বা ব্যবহারকারী দর্শকের উপর নির্ভর করে যা লক্ষ্য প্রকল্পে বিদ্যমান নেই, তাহলে বৈধতা ব্যর্থ হবে।আপনি যে টেমপ্লেটটি প্রকাশ করার পরিকল্পনা করছেন তাতে যদি এমন শর্ত থাকে যা Google Analytics উপর নির্ভর করে, তাহলে লক্ষ্য প্রকল্পে Analytics সক্রিয় করা আবশ্যক।
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
এ Remote Config REST API-এর প্রধান ক্ষমতাগুলি বর্ণনা করে। সম্পূর্ণ বিবরণের জন্য, API রেফারেন্স দেখুন।
API অনুরোধগুলিকে প্রমাণীকরণ এবং অনুমোদন করতে একটি অ্যাক্সেস টোকেন পান৷
Firebase প্রকল্পগুলি Google পরিষেবা অ্যাকাউন্টগুলিকে সমর্থন করে, যা আপনি আপনার অ্যাপ সার্ভার বা বিশ্বস্ত পরিবেশ থেকে Firebase সার্ভার API কল করতে ব্যবহার করতে পারেন৷ আপনি যদি স্থানীয়ভাবে কোড ডেভেলপ করছেন বা আপনার অ্যাপ্লিকেশনটি প্রাঙ্গনে স্থাপন করছেন, আপনি সার্ভার অনুরোধ অনুমোদন করতে এই পরিষেবা অ্যাকাউন্টের মাধ্যমে প্রাপ্ত শংসাপত্রগুলি ব্যবহার করতে পারেন৷
একটি পরিষেবা অ্যাকাউন্ট প্রমাণীকরণ করতে এবং এটিকে Firebase পরিষেবাগুলি অ্যাক্সেস করার অনুমোদন দিতে, আপনাকে অবশ্যই JSON ফর্ম্যাটে একটি ব্যক্তিগত কী ফাইল তৈরি করতে হবে৷
আপনার পরিষেবা অ্যাকাউন্টের জন্য একটি ব্যক্তিগত কী ফাইল তৈরি করতে:
Firebase কনসোলে, সেটিংস > পরিষেবা অ্যাকাউন্ট খুলুন।
জেনারেট নিউ প্রাইভেট কী ক্লিক করুন, তারপর জেনারেট কী ক্লিক করে নিশ্চিত করুন।
কী আছে এমন 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
স্কোপের অনুরোধ করুন।
রিমোট কনফিগ টেমপ্লেট পরিবর্তন করুন
Remote Config টেমপ্লেটগুলির সাথে কাজ করার সময়, মনে রাখবেন যে সেগুলি সংস্করণ করা হয়েছে, এবং প্রতিটি সংস্করণ তৈরির সময় থেকে আপনি এটিকে একটি আপডেটের সাথে প্রতিস্থাপন করার সময় পর্যন্ত একটি সীমিত জীবনকাল রয়েছে: 90 দিন, মোট 300টি সংরক্ষিত সংস্করণের সীমা সহ। আরও তথ্যের জন্য টেমপ্লেট এবং সংস্করণ দেখুন।
বর্তমান রিমোট কনফিগারেশন টেমপ্লেট পান
আপনি JSON ফর্ম্যাটে Remote Config টেমপ্লেটের বর্তমান সক্রিয় সংস্করণ পেতে ব্যাকএন্ড API ব্যবহার করতে পারেন।
পরামিতি এবং পরামিতি মানগুলি বিশেষভাবে একটি A/B Testing পরীক্ষায় বৈকল্পিক হিসাবে তৈরি করা রপ্তানি করা টেমপ্লেটগুলিতে অন্তর্ভুক্ত নয়৷
নিম্নলিখিত কমান্ড ব্যবহার করুন:
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 ব্যবহার করতে পারেন। একটি আপডেটে ত্রুটির ঝুঁকি কমাতে, আপনি প্রকাশ করার আগে যাচাই করতে পারেন৷
Remote Config ব্যক্তিগতকরণ এবং শর্তাবলী ডাউনলোড করা টেমপ্লেটগুলিতে অন্তর্ভুক্ত করা হয়েছে, তাই একটি ভিন্ন প্রকল্পে প্রকাশ করার চেষ্টা করার সময় নিম্নলিখিত সীমাবদ্ধতাগুলি সম্পর্কে সচেতন হওয়া গুরুত্বপূর্ণ:
ব্যক্তিগতকরণ প্রকল্প থেকে প্রকল্প আমদানি করা যাবে না.
উদাহরণস্বরূপ, আপনি যদি আপনার প্রকল্পে ব্যক্তিগতকরণ সক্ষম করে থাকেন এবং একটি টেমপ্লেট ডাউনলোড এবং সম্পাদনা করেন, আপনি একই প্রকল্পে এটি প্রকাশ করতে পারেন, তবে আপনি টেমপ্লেট থেকে ব্যক্তিগতকরণগুলি মুছে না দেওয়া পর্যন্ত আপনি এটিকে একটি ভিন্ন প্রকল্পে প্রকাশ করতে পারবেন না৷
শর্তাবলী প্রজেক্ট থেকে প্রোজেক্টে আমদানি করা যেতে পারে, কিন্তু মনে রাখবেন যে কোনো নির্দিষ্ট শর্তাধীন মান (যেমন অ্যাপ আইডি বা শ্রোতা), প্রকাশের আগে লক্ষ্য প্রকল্পে থাকা উচিত।
উদাহরণস্বরূপ, যদি আপনার কাছে একটি Remote Config প্যারামিটার থাকে যা
iOS
এর একটি প্ল্যাটফর্ম মান নির্দিষ্ট করে এমন একটি শর্ত ব্যবহার করে, টেমপ্লেটটি অন্য প্রকল্পে প্রকাশ করা যেতে পারে, কারণ প্ল্যাটফর্মের মান যেকোনো প্রকল্পের জন্য একই। যাইহোক, যদি এটিতে এমন একটি শর্ত থাকে যা একটি নির্দিষ্ট অ্যাপ আইডি বা ব্যবহারকারী দর্শকের উপর নির্ভর করে যা লক্ষ্য প্রকল্পে বিদ্যমান নেই, তাহলে বৈধতা ব্যর্থ হবে।আপনি যে টেমপ্লেটটি প্রকাশ করার পরিকল্পনা করছেন তাতে যদি এমন শর্ত থাকে যা Google Analytics উপর নির্ভর করে, তাহলে লক্ষ্য প্রকল্পে Analytics সক্রিয় করা আবশ্যক।
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 প্রদান করা হয়।
দূরবর্তী কনফিগার অবস্থা পরিবর্তন করুন
আপনি প্রোগ্রাম্যাটিকভাবে 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 ত্রুটি কোড
স্ট্যাটাস কোড | অর্থ |
---|---|
200 | সফলভাবে আপডেট করা হয়েছে |
400 | একটি বৈধতা ত্রুটি ঘটেছে. উদাহরণস্বরূপ, অনুমোদিত কীগুলির চেয়ে বেশি সংখ্যার চেয়ে বেশি যুক্ত একটি অনুরোধ - 2000 - ত্রুটি বার্তার সাথে 400 (খারাপ অনুরোধ) ফিরিয়ে দেবে, Param count too large । এছাড়াও, এই এইচটিটিপিএস স্থিতি কোডটি এই দুটি পরিস্থিতিতে ঘটতে পারে:
|
401 | একটি অনুমোদনের ত্রুটি ঘটেছে (কোনও অ্যাক্সেস টোকেন সরবরাহ করা হয়নি বা ফায়ারবেস Remote Config রেস্ট এপিআই ক্লাউড বিকাশকারী কনসোলে আপনার প্রকল্পে যুক্ত হয়নি) |
403 | একটি প্রমাণীকরণের ত্রুটি ঘটেছে (ভুল অ্যাক্সেস টোকেন সরবরাহ করা হয়েছিল) |
500 | একটি অভ্যন্তরীণ ত্রুটি ঘটেছে। যদি এই ত্রুটিটি ঘটে থাকে তবে ফায়ারবেস সমর্থন টিকিট ফাইল করুন |
200 এর একটি স্থিতি কোডের অর্থ হ'ল Remote Config টেম্পলেট (প্রকল্পের জন্য পরামিতি, মান এবং শর্তাদি) আপডেট করা হয়েছে এবং এখন এই প্রকল্পটি ব্যবহার করে এমন অ্যাপ্লিকেশনগুলিতে উপলব্ধ। অন্যান্য স্থিতি কোডগুলি ইঙ্গিত দেয় যে পূর্বে বিদ্যমান Remote Config টেম্পলেটটি এখনও কার্যকর রয়েছে।
আপনি আপনার টেমপ্লেটে আপডেট জমা দেওয়ার পরে, আপনার পরিবর্তনগুলি প্রত্যাশার মতো প্রদর্শিত হবে তা যাচাই করতে Firebase কনসোলে যান। এটি সমালোচনামূলক কারণ শর্তগুলির ক্রমগুলি কীভাবে তাদের মূল্যায়ন করা হয় তা প্রভাবিত করে (প্রথম শর্ত যা true
মূল্যায়ন করে) কার্যকর হয়)।
ETAG ব্যবহার এবং জোরপূর্বক আপডেটগুলি
Remote Config আরইএসটি এপিআই রেসের শর্তাদি এবং সংস্থানগুলিতে ওভারল্যাপিং আপডেটগুলি রোধ করতে একটি সত্তা ট্যাগ (ইটিএজি) ব্যবহার করে। ইটিএজি সম্পর্কে আরও জানতে, ETAG - http দেখুন।
আরইএসটি এপিআইয়ের জন্য, গুগল সুপারিশ করে যে আপনি সর্বাধিক সাম্প্রতিক GET
কমান্ড দ্বারা সরবরাহিত ইটিএজি ক্যাশে ক্যাশে করুন এবং PUT
কমান্ড জারি করার সময় If-Match
অনুরোধ শিরোনামে সেই ইটিএজি মানটি ব্যবহার করুন। যদি আপনার PUT
কমান্ডের ফলাফল কোনও HTTPS স্ট্যাটাস কোড 409 এ ফলাফল করে তবে আপনার পরবর্তী PUT
কমান্ডের সাথে ব্যবহার করার জন্য আপনার একটি নতুন ইটিএজি এবং টেমপ্লেট অর্জনের জন্য একটি নতুন GET
কমান্ড জারি করা উচিত।
Remote Config টেম্পলেটটিকে নিম্নরূপ আপডেট করতে বাধ্য করে আপনি ইটিএজি এবং এটি যে সুরক্ষা সরবরাহ করে তা থেকে রক্ষা করতে পারেন: If-Match: *
তবে, এই পদ্ধতির প্রস্তাব দেওয়া হয় না কারণ এটি আপনার Remote Config আপডেটগুলি ক্ষতির কারণ হতে পারে বলে ঝুঁকির কারণ হয় টেমপ্লেট যদি একাধিক ক্লায়েন্ট Remote Config টেম্পলেট আপডেট করে থাকে। এপিআই ব্যবহার করে একাধিক ক্লায়েন্টের সাথে বা এপিআই ক্লায়েন্ট এবং Firebase কনসোল ব্যবহারকারীদের বিরোধী আপডেটের সাথে এই ধরণের দ্বন্দ্ব দেখা দিতে পারে।
Remote Config টেম্পলেট সংস্করণগুলি পরিচালনার জন্য গাইডেন্সের জন্য, রিমোট কনফিগার টেম্পলেট এবং সংস্করণ দেখুন।
,এই দস্তাবেজটি বর্ণনা করে যে আপনি কীভাবে প্রোগ্রামিকভাবে JSON- ফর্ম্যাটেড প্যারামিটার এবং Remote Config টেম্পলেট হিসাবে পরিচিত শর্তগুলির সেটটি পড়তে এবং সংশোধন করতে পারেন। এটি আপনাকে ক্লায়েন্ট লাইব্রেরি ব্যবহার করে ক্লায়েন্ট অ্যাপ্লিকেশন আনতে পারে এমন ব্যাকএন্ডে টেমপ্লেট পরিবর্তন করতে দেয়।
এই গাইডে বর্ণিত Remote Config আরইএসটি এপিআই বা Admin SDK এস ব্যবহার করে আপনি Firebase কনসোলে টেমপ্লেটটি পরিচালনা করতে পারেন আপনার নিজস্ব প্রক্রিয়াগুলিতে সরাসরি Remote Config পরিবর্তনগুলি সংহত করতে। উদাহরণস্বরূপ, Remote Config ব্যাকেন্ড এপিআই সহ, আপনি পারেন:
- Remote Config আপডেটগুলি নির্ধারণ করা । ক্রোন কাজের সাথে একত্রে এপিআই কলগুলি ব্যবহার করে আপনি নিয়মিত সময়সূচীতে Remote Config মানগুলি পরিবর্তন করতে পারেন।
- ব্যাচ আমদানি কনফিগার মানগুলি আপনার নিজস্ব মালিকানাধীন সিস্টেম থেকে Firebase Remote Config দক্ষতার সাথে রূপান্তর করতে।
Cloud Functions for Firebase সাথে Remote Config ব্যবহার করুন , সার্ভার-সাইড ঘটে এমন ইভেন্টগুলির উপর ভিত্তি করে আপনার অ্যাপ্লিকেশনটিতে মান পরিবর্তন করুন। উদাহরণস্বরূপ, আপনি আপনার অ্যাপ্লিকেশনটিতে একটি নতুন বৈশিষ্ট্য প্রচার করতে Remote Config ব্যবহার করতে পারেন এবং তারপরে আপনি পর্যাপ্ত পরিমাণে লোকেরা নতুন বৈশিষ্ট্যের সাথে ইন্টারঅ্যাক্ট করেছেন তা সনাক্ত করার পরে সেই প্রচারটি স্বয়ংক্রিয়ভাবে বন্ধ করে দিতে পারেন।
এই গাইডের নিম্নলিখিত বিভাগগুলি Remote Config ব্যাকেন্ড এপিআইগুলির সাথে আপনি করতে পারেন এমন অপারেশনগুলি বর্ণনা করে। রেস্ট এপিআইয়ের মাধ্যমে এই কাজগুলি সম্পাদন করে এমন কিছু কোড পর্যালোচনা করতে, এই নমুনা অ্যাপ্লিকেশনগুলির মধ্যে একটি দেখুন:
- ফায়ারবেস রিমোট কনফিগারেশন রেস্ট এপিআই জাভা কুইকস্টার্ট
- ফায়ারবেস রিমোট কনফিগারেশন রেস্ট এপিআই নোড.জেএস কুইকস্টার্ট
- ফায়ারবেস রিমোট কনফিগারেশন রেস্ট এপিআই পাইথন কুইকস্টার্ট
ফায়ারবেস অ্যাডমিন এসডিকে ব্যবহার করে রিমোট কনফিগারেশন সংশোধন করুন
Admin SDK হ'ল সার্ভার লাইব্রেরির একটি সেট যা আপনাকে সুবিধাযুক্ত পরিবেশ থেকে ফায়ারবেসের সাথে ইন্টারঅ্যাক্ট করতে দেয়। Remote Config আপডেটগুলি সম্পাদন করার পাশাপাশি, Admin SDK ফায়ারবেস অ্যাথ টোকেনগুলির প্রজন্ম এবং যাচাইকরণ, Realtime Database থেকে পড়া এবং লেখার জন্য এবং আরও অনেক কিছুই সক্ষম করে। Admin SDK পূর্বশর্ত এবং সেটআপ সম্পর্কে আরও জানতে, আপনার সার্ভারে ফায়ারবেস অ্যাডমিন এসডিকে যুক্ত করুন ।
একটি সাধারণ Remote Config প্রবাহে, আপনি বর্তমান টেম্পলেটটি পেতে পারেন, কিছু পরামিতি বা প্যারামিটার গ্রুপ এবং শর্তাদি সংশোধন করতে পারেন, টেমপ্লেটটিকে বৈধতা দিতে পারেন এবং তারপরে এটি প্রকাশ করতে পারেন। এই এপিআই কলগুলি করার আগে আপনাকে অবশ্যই এসডিকে থেকে অনুরোধগুলি অনুমোদিত করতে হবে।
এসডিকে আরম্ভ করুন এবং এপিআই অনুরোধগুলি অনুমোদিত করুন
আপনি যখন কোনও পরামিতি ছাড়াই Admin SDK আরম্ভ করেন, তখন এসডিকে গুগল অ্যাপ্লিকেশন ডিফল্ট শংসাপত্রগুলি ব্যবহার করে এবং FIREBASE_CONFIG
পরিবেশের পরিবর্তনশীল থেকে বিকল্পগুলি পড়ে। যদি FIREBASE_CONFIG
ভেরিয়েবলের বিষয়বস্তু একটি {
দিয়ে শুরু হয় তবে এটি জেএসএন অবজেক্ট হিসাবে পার্স করা হবে। অন্যথায় এসডিকে ধরে নিয়েছে যে স্ট্রিংটি বিকল্পগুলি সমন্বিত একটি জেএসএন ফাইলের নাম।
যেমন:
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);
বর্তমান রিমোট কনফিগার টেম্পলেট পান
Remote Config টেম্পলেটগুলির সাথে কাজ করার সময়, মনে রাখবেন যে সেগুলি সংস্করণযুক্ত এবং প্রতিটি সংস্করণে তার সৃষ্টির সময় থেকে আপনি এটি একটি আপডেটের সাথে প্রতিস্থাপনের সময় পর্যন্ত সীমিত জীবনকাল রয়েছে: 90 দিন, মোট 300 টি সঞ্চিত সংস্করণ সহ। আরও তথ্যের জন্য টেমপ্লেট এবং সংস্করণ দেখুন।
আপনি জেএসএন ফর্ম্যাটে Remote Config টেম্পলেটটির বর্তমান সক্রিয় সংস্করণ পেতে ব্যাকএন্ড এপিআই ব্যবহার করতে পারেন।
প্যারামিটার এবং প্যারামিটার মানগুলি বিশেষত A/B Testing পরীক্ষায় রূপগুলি হিসাবে তৈরি করা রফতানি টেম্পলেটগুলিতে অন্তর্ভুক্ত নয়।
টেমপ্লেট পেতে:
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());
রিমোট কনফিগারেশন পরামিতিগুলি সংশোধন করুন
আপনি প্রোগ্রামিকভাবে Remote Config প্যারামিটার এবং প্যারামিটার গ্রুপগুলি সংশোধন করতে এবং যুক্ত করতে পারেন। উদাহরণস্বরূপ, "নিউ_মেনু" নামে একটি বিদ্যমান প্যারামিটার গ্রুপে আপনি মৌসুমী তথ্যের প্রদর্শন নিয়ন্ত্রণ করতে একটি প্যারামিটার যুক্ত করতে পারেন:
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.") );
এপিআই আপনাকে নতুন পরামিতি এবং প্যারামিটার গ্রুপ তৈরি করতে, বা ডিফল্ট মান, শর্তাধীন মান এবং বিবরণ পরিবর্তন করতে দেয়। সমস্ত ক্ষেত্রে, আপনাকে অবশ্যই পরিবর্তনগুলি করার পরে স্পষ্টভাবে টেমপ্লেটটি প্রকাশ করতে হবে।
রিমোট কনফিগার শর্তগুলি সংশোধন করুন
আপনি প্রোগ্রামিকভাবে Remote Config শর্তাদি এবং শর্তসাপেক্ষ মানগুলি সংশোধন করতে এবং যুক্ত করতে পারেন। উদাহরণস্বরূপ, একটি নতুন শর্ত যুক্ত করতে:
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));
সমস্ত ক্ষেত্রে, আপনাকে অবশ্যই পরিবর্তনগুলি করার পরে স্পষ্টভাবে টেমপ্লেটটি প্রকাশ করতে হবে।
Remote Config ব্যাকেন্ড এপিআইগুলি বেশ কয়েকটি শর্ত এবং তুলনা অপারেটর সরবরাহ করে যা আপনি আপনার অ্যাপ্লিকেশনটির আচরণ এবং উপস্থিতি পরিবর্তন করতে ব্যবহার করতে পারেন। শর্তাদি সম্পর্কে আরও জানতে এবং এই শর্তগুলির জন্য অপারেটরগুলি সমর্থন করে, শর্তাধীন এক্সপ্রেশন রেফারেন্স দেখুন।
রিমোট কনফিগার টেম্পলেটটি বৈধ করুন
Ally চ্ছিকভাবে, আপনি আপনার আপডেটগুলি প্রকাশের আগে যাচাই করতে পারেন, যেমন দেখানো হয়েছে:
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 এপিআই ব্যবহার করতে পারেন। কোনও আপডেটে ত্রুটির ঝুঁকি হ্রাস করতে, আপনি প্রকাশের আগে বৈধতা দিতে পারেন।
Remote Config ব্যক্তিগতকরণ এবং শর্তাদি ডাউনলোড করা টেম্পলেটগুলিতে অন্তর্ভুক্ত করা হয়েছে, সুতরাং কোনও ভিন্ন প্রকল্পে প্রকাশের চেষ্টা করার সময় নিম্নলিখিত সীমাবদ্ধতাগুলি সম্পর্কে সচেতন হওয়া গুরুত্বপূর্ণ:
প্রকল্প থেকে প্রকল্পে ব্যক্তিগতকরণ আমদানি করা যায় না।
উদাহরণস্বরূপ, যদি আপনার প্রকল্পে ব্যক্তিগতকরণ সক্ষম থাকে এবং একটি টেম্পলেট ডাউনলোড এবং সম্পাদনা করে থাকে তবে আপনি এটি একই প্রকল্পে প্রকাশ করতে পারেন, তবে আপনি টেমপ্লেট থেকে ব্যক্তিগতকরণগুলি মুছে না দিলে আপনি এটি অন্য কোনও প্রকল্পে প্রকাশ করতে পারবেন না।
প্রকল্পগুলি থেকে প্রকল্পে শর্তাবলী আমদানি করা যেতে পারে তবে নোট করুন যে প্রকাশের আগে লক্ষ্য প্রকল্পে কোনও নির্দিষ্ট শর্তসাপেক্ষ মান (যেমন অ্যাপ আইডি বা শ্রোতাদের মতো) উপস্থিত থাকা উচিত।
উদাহরণস্বরূপ, যদি আপনার কাছে একটি Remote Config প্যারামিটার থাকে যা এমন একটি শর্ত ব্যবহার করে যা
iOS
প্ল্যাটফর্ম মান নির্দিষ্ট করে তবে টেমপ্লেটটি অন্য প্রকল্পে প্রকাশিত হতে পারে, কারণ প্ল্যাটফর্মের মানগুলি যে কোনও প্রকল্পের জন্য একই। তবে, যদি এটিতে এমন একটি শর্ত থাকে যা কোনও নির্দিষ্ট অ্যাপ্লিকেশন আইডি বা ব্যবহারকারী দর্শকদের উপর নির্ভর করে যা লক্ষ্য প্রকল্পে বিদ্যমান নেই তবে বৈধতা ব্যর্থ হবে।আপনি যে টেমপ্লেটে প্রকাশের পরিকল্পনা করছেন তাতে যদি এমন শর্ত থাকে যা Google Analytics উপর নির্ভর করে তবে Analytics অবশ্যই লক্ষ্য প্রকল্পে সক্ষম করতে হবে।
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
এ Remote Config REST এপিআইয়ের প্রধান ক্ষমতাগুলি বর্ণনা করে। সম্পূর্ণ বিশদের জন্য, এপিআই রেফারেন্স দেখুন।
এপিআই অনুরোধগুলি প্রমাণীকরণ এবং অনুমোদনের জন্য একটি অ্যাক্সেস টোকেন পান
ফায়ারবেস প্রকল্পগুলি গুগল পরিষেবা অ্যাকাউন্টগুলিকে সমর্থন করে, যা আপনি আপনার অ্যাপ্লিকেশন সার্ভার বা বিশ্বস্ত পরিবেশ থেকে ফায়ারবেস সার্ভার এপিআইগুলিকে কল করতে ব্যবহার করতে পারেন। আপনি যদি স্থানীয়ভাবে কোড বিকাশ করছেন বা আপনার অ্যাপ্লিকেশন অন-প্রাঙ্গনে স্থাপন করছেন, আপনি সার্ভারের অনুরোধগুলি অনুমোদনের জন্য এই পরিষেবা অ্যাকাউন্টের মাধ্যমে প্রাপ্ত শংসাপত্রগুলি ব্যবহার করতে পারেন।
কোনও পরিষেবা অ্যাকাউন্ট প্রমাণীকরণ করতে এবং এটি ফায়ারবেস পরিষেবাগুলি অ্যাক্সেস করার জন্য অনুমোদিত করতে, আপনাকে অবশ্যই জেএসএন ফর্ম্যাটে একটি ব্যক্তিগত কী ফাইল তৈরি করতে হবে।
আপনার পরিষেবা অ্যাকাউন্টের জন্য একটি ব্যক্তিগত কী ফাইল তৈরি করতে:
Firebase কনসোলে, সেটিংস > পরিষেবা অ্যাকাউন্ট খুলুন।
জেনারেট নিউ প্রাইভেট কী ক্লিক করুন, তারপর জেনারেট কী ক্লিক করে নিশ্চিত করুন।
কী আছে এমন JSON ফাইলটি নিরাপদে সংরক্ষণ করুন।
কোনও পরিষেবা অ্যাকাউন্টের মাধ্যমে অনুমোদনের সময়, আপনার অ্যাপ্লিকেশনটিতে শংসাপত্র সরবরাহ করার জন্য আপনার কাছে দুটি পছন্দ রয়েছে। আপনি হয় GOOGLE_APPLICATION_CREDENTIALS এনভায়রনমেন্ট ভেরিয়েবল সেট করতে পারেন, বা আপনি কোডের পরিষেবা অ্যাকাউন্ট কীতে স্পষ্টভাবে পথটি পাস করতে পারেন। প্রথম বিকল্পটি আরও সুরক্ষিত এবং দৃ strongly ়ভাবে সুপারিশ করা হয়।
পরিবেশের পরিবর্তনশীল সেট করতে:
আপনার পরিষেবা অ্যাকাউন্ট কী ধারণ করে এমন জেএসএন ফাইলের ফাইল পাথটিতে পরিবেশের পরিবর্তনশীল GOOGLE_APPLICATION_CREDENTIALS সেট করুন। এই ভেরিয়েবলটি শুধুমাত্র আপনার বর্তমান শেল সেশনে প্রযোজ্য, তাই আপনি যদি একটি নতুন সেশন খোলেন, তাহলে ভেরিয়েবলটি আবার সেট করুন।
লিনাক্স বা ম্যাকোস
export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/service-account-file.json"
উইন্ডোজ
PowerShell এর সাথে:
$env:GOOGLE_APPLICATION_CREDENTIALS="C:\Users\username\Downloads\service-account-file.json"
আপনি উপরের পদক্ষেপগুলি শেষ করার পরে, অ্যাপ্লিকেশন ডিফল্ট শংসাপত্রগুলি (এডিসি) আপনার শংসাপত্রগুলি সুস্পষ্টভাবে নির্ধারণ করতে সক্ষম হয়, আপনাকে অ-গুগল পরিবেশে পরীক্ষা করার সময় বা চলাকালীন পরিষেবা অ্যাকাউন্টের শংসাপত্রগুলি ব্যবহার করতে দেয়।
আপনার পছন্দসই ভাষার জন্য গুগল অ্যাথ লাইব্রেরির সাথে একসাথে আপনার ফায়ারবেস শংসাপত্রগুলি ব্যবহার করুন একটি স্বল্প-কালীন OAuth 2.0 অ্যাক্সেস টোকেন পুনরুদ্ধার করতে:
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);
});
}
এই উদাহরণে, গুগল এপিআই ক্লায়েন্ট লাইব্রেরি একটি জেএসএন ওয়েব টোকেন বা জেডাব্লুটি দিয়ে অনুরোধটি প্রমাণীকরণ করে। আরও তথ্যের জন্য, জেএসএন ওয়েব টোকেনগুলি দেখুন।
পাইথন
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 টেম্পলেটটির বর্তমান সক্রিয় সংস্করণ পেতে ব্যাকএন্ড এপিআই ব্যবহার করতে পারেন।
প্যারামিটার এবং প্যারামিটার মানগুলি বিশেষত A/B Testing পরীক্ষায় রূপগুলি হিসাবে তৈরি করা রফতানি টেম্পলেটগুলিতে অন্তর্ভুক্ত নয়।
নিম্নলিখিত কমান্ড ব্যবহার করুন:
cURL
curl --compressed -D headers -H "Authorization: Bearer token" -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig -o filename
এই কমান্ডটি একটি ফাইলে JSON পে -লোড এবং শিরোনামগুলি (ইটিএজি সহ) একটি পৃথক ফাইলে আউটপুট দেয়।
কাঁচা http অনুরোধ
Host: firebaseremoteconfig.googleapis.com GET /v1/projects/my-project-id/remoteConfig HTTP/1.1 Authorization: Bearer token Accept-Encoding: gzip
এই এপিআই কলটি পৃথক শিরোনাম সহ নিম্নলিখিত জেএসএনকে ফেরত দেয় যার মধ্যে একটি ইটিএজি অন্তর্ভুক্ত রয়েছে যা আপনি পরবর্তী অনুরোধের জন্য ব্যবহার করেন।
রিমোট কনফিগার টেম্পলেটটি বৈধ করুন
Ally চ্ছিকভাবে, আপনি আপনার আপডেটগুলি প্রকাশের আগে যাচাই করতে পারেন। আপনার প্রকাশের অনুরোধটি ইউআরএল প্যারামিটারটির সাথে যুক্ত করে টেম্পলেট আপডেটগুলি বৈধ করুন ?validate_only=true
। প্রতিক্রিয়াতে, একটি স্ট্যাটাস কোড 200 এবং প্রত্যয় -0
সহ একটি আপডেট হওয়া ইটিএজি এর অর্থ আপনার আপডেটটি সফলভাবে বৈধ হয়েছে। যে কোনও অন -200 প্রতিক্রিয়া ইঙ্গিত দেয় যে JSON ডেটাতে এমন ত্রুটি রয়েছে যা আপনাকে প্রকাশের আগে সংশোধন করতে হবে।
রিমোট কনফিগার টেম্পলেট আপডেট করুন
একটি টেম্পলেট পুনরুদ্ধার করে এবং আপনার পছন্দসই আপডেটগুলি দিয়ে জেএসএন সামগ্রীটি সংশোধন করে আপনি এটি প্রকাশ করতে পারেন। এই বিভাগে বর্ণিত হিসাবে একটি টেম্পলেট প্রকাশ করা সম্পূর্ণ বিদ্যমান কনফিগারেশন টেম্পলেটটি আপডেট করা ফাইলের সাথে প্রতিস্থাপন করে এবং নতুন সক্রিয় টেম্পলেটটি এটি প্রতিস্থাপন করা টেমপ্লেটটির চেয়ে বড় সংস্করণ এক নম্বর বরাদ্দ করা হয়েছে।
যদি প্রয়োজন হয় তবে আপনি পূর্ববর্তী সংস্করণে ফিরে রোল করতে REST এপিআই ব্যবহার করতে পারেন। কোনও আপডেটে ত্রুটির ঝুঁকি হ্রাস করতে, আপনি প্রকাশের আগে বৈধতা দিতে পারেন।
Remote Config ব্যক্তিগতকরণ এবং শর্তাদি ডাউনলোড করা টেম্পলেটগুলিতে অন্তর্ভুক্ত করা হয়েছে, সুতরাং কোনও ভিন্ন প্রকল্পে প্রকাশের চেষ্টা করার সময় নিম্নলিখিত সীমাবদ্ধতাগুলি সম্পর্কে সচেতন হওয়া গুরুত্বপূর্ণ:
প্রকল্প থেকে প্রকল্পে ব্যক্তিগতকরণ আমদানি করা যায় না।
উদাহরণস্বরূপ, যদি আপনার প্রকল্পে ব্যক্তিগতকরণ সক্ষম থাকে এবং একটি টেম্পলেট ডাউনলোড এবং সম্পাদনা করে থাকে তবে আপনি এটি একই প্রকল্পে প্রকাশ করতে পারেন, তবে আপনি টেমপ্লেট থেকে ব্যক্তিগতকরণগুলি মুছে না দিলে আপনি এটি অন্য কোনও প্রকল্পে প্রকাশ করতে পারবেন না।
প্রকল্পগুলি থেকে প্রকল্পে শর্তাবলী আমদানি করা যেতে পারে তবে নোট করুন যে প্রকাশের আগে লক্ষ্য প্রকল্পে কোনও নির্দিষ্ট শর্তসাপেক্ষ মান (যেমন অ্যাপ আইডি বা শ্রোতাদের মতো) উপস্থিত থাকা উচিত।
উদাহরণস্বরূপ, যদি আপনার কাছে একটি Remote Config প্যারামিটার থাকে যা এমন একটি শর্ত ব্যবহার করে যা
iOS
প্ল্যাটফর্ম মান নির্দিষ্ট করে তবে টেমপ্লেটটি অন্য প্রকল্পে প্রকাশিত হতে পারে, কারণ প্ল্যাটফর্মের মানগুলি যে কোনও প্রকল্পের জন্য একই। তবে, যদি এটিতে এমন একটি শর্ত থাকে যা কোনও নির্দিষ্ট অ্যাপ্লিকেশন আইডি বা ব্যবহারকারী দর্শকদের উপর নির্ভর করে যা লক্ষ্য প্রকল্পে বিদ্যমান নেই তবে বৈধতা ব্যর্থ হবে।আপনি যে টেমপ্লেটে প্রকাশের পরিকল্পনা করছেন তাতে যদি এমন শর্ত থাকে যা Google Analytics উপর নির্ভর করে তবে Analytics অবশ্যই লক্ষ্য প্রকল্পে সক্ষম করতে হবে।
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
যেহেতু এটি একটি লেখার অনুরোধ, ইটিএজি এই কমান্ড দ্বারা সংশোধন করা হয়েছে এবং পরবর্তী PUT
কমান্ডের প্রতিক্রিয়া শিরোনামগুলিতে একটি আপডেট হওয়া ইটিএজি সরবরাহ করা হয়েছে।
রিমোট কনফিগার শর্তগুলি সংশোধন করুন
আপনি প্রোগ্রামিকভাবে Remote Config শর্ত এবং শর্তসাপেক্ষ মানগুলি সংশোধন করতে পারেন। REST এপিআই দিয়ে, আপনাকে অবশ্যই টেমপ্লেট প্রকাশের আগে শর্তগুলি সংশোধন করতে সরাসরি টেমপ্লেটটি সম্পাদনা করতে হবে।
{ "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." } } }
উপরের পরিবর্তনগুলি প্রথমে শর্তগুলির একটি সেটকে সংজ্ঞায়িত করে এবং তারপরে প্রতিটি প্যারামিটারের জন্য ডিফল্ট মান এবং শর্ত-ভিত্তিক প্যারামিটার ( শর্তাধীন মান ) মানগুলি সংজ্ঞায়িত করে। এটি প্রতিটি উপাদানগুলির জন্য একটি al চ্ছিক বিবরণও যুক্ত করে; কোড মন্তব্যের মতো, এগুলি বিকাশকারী ব্যবহারের জন্য এবং অ্যাপটিতে প্রদর্শিত হয় না। সংস্করণ নিয়ন্ত্রণের উদ্দেশ্যে একটি ইটিএজিও সরবরাহ করা হয়।
Remote Config ব্যাকেন্ড এপিআইগুলি বেশ কয়েকটি শর্ত এবং তুলনা অপারেটর সরবরাহ করে যা আপনি আপনার অ্যাপ্লিকেশনটির আচরণ এবং উপস্থিতি পরিবর্তন করতে ব্যবহার করতে পারেন। শর্তাদি সম্পর্কে আরও জানতে এবং এই শর্তগুলির জন্য অপারেটরগুলি সমর্থন করে, শর্তাধীন এক্সপ্রেশন রেফারেন্স দেখুন।
এইচটিটিপি ত্রুটি কোডগুলি
স্ট্যাটাস কোড | অর্থ |
---|---|
200 | সফলভাবে আপডেট হয়েছে |
400 | একটি বৈধতা ত্রুটি ঘটেছে. উদাহরণস্বরূপ, অনুমোদিত কীগুলির চেয়ে বেশি সংখ্যার চেয়ে বেশি যুক্ত একটি অনুরোধ - 2000 - ত্রুটি বার্তার সাথে 400 (খারাপ অনুরোধ) ফিরিয়ে দেবে, Param count too large । এছাড়াও, এই এইচটিটিপিএস স্থিতি কোডটি এই দুটি পরিস্থিতিতে ঘটতে পারে:
|
401 | একটি অনুমোদনের ত্রুটি ঘটেছে (কোনও অ্যাক্সেস টোকেন সরবরাহ করা হয়নি বা ফায়ারবেস Remote Config রেস্ট এপিআই ক্লাউড বিকাশকারী কনসোলে আপনার প্রকল্পে যুক্ত হয়নি) |
403 | একটি প্রমাণীকরণের ত্রুটি ঘটেছে (ভুল অ্যাক্সেস টোকেন সরবরাহ করা হয়েছিল) |
500 | একটি অভ্যন্তরীণ ত্রুটি ঘটেছে। যদি এই ত্রুটিটি ঘটে থাকে তবে ফায়ারবেস সমর্থন টিকিট ফাইল করুন |
200 এর একটি স্থিতি কোডের অর্থ হ'ল Remote Config টেম্পলেট (প্রকল্পের জন্য পরামিতি, মান এবং শর্তাদি) আপডেট করা হয়েছে এবং এখন এই প্রকল্পটি ব্যবহার করে এমন অ্যাপ্লিকেশনগুলিতে উপলব্ধ। অন্যান্য স্থিতি কোডগুলি ইঙ্গিত দেয় যে পূর্বে বিদ্যমান Remote Config টেম্পলেটটি এখনও কার্যকর রয়েছে।
আপনি আপনার টেমপ্লেটে আপডেট জমা দেওয়ার পরে, আপনার পরিবর্তনগুলি প্রত্যাশার মতো প্রদর্শিত হবে তা যাচাই করতে Firebase কনসোলে যান। এটি সমালোচনামূলক কারণ শর্তগুলির ক্রমগুলি কীভাবে তাদের মূল্যায়ন করা হয় তা প্রভাবিত করে (প্রথম শর্ত যা true
মূল্যায়ন করে) কার্যকর হয়)।
ETAG ব্যবহার এবং জোরপূর্বক আপডেটগুলি
Remote Config আরইএসটি এপিআই রেসের শর্তাদি এবং সংস্থানগুলিতে ওভারল্যাপিং আপডেটগুলি রোধ করতে একটি সত্তা ট্যাগ (ইটিএজি) ব্যবহার করে। ইটিএজি সম্পর্কে আরও জানতে, ETAG - http দেখুন।
আরইএসটি এপিআইয়ের জন্য, গুগল সুপারিশ করে যে আপনি সর্বাধিক সাম্প্রতিক GET
কমান্ড দ্বারা সরবরাহিত ইটিএজি ক্যাশে ক্যাশে করুন এবং PUT
কমান্ড জারি করার সময় If-Match
অনুরোধ শিরোনামে সেই ইটিএজি মানটি ব্যবহার করুন। যদি আপনার PUT
কমান্ডের ফলাফল কোনও HTTPS স্ট্যাটাস কোড 409 এ ফলাফল করে তবে আপনার পরবর্তী PUT
কমান্ডের সাথে ব্যবহার করার জন্য আপনার একটি নতুন ইটিএজি এবং টেমপ্লেট অর্জনের জন্য একটি নতুন GET
কমান্ড জারি করা উচিত।
Remote Config টেম্পলেটটিকে নিম্নরূপ আপডেট করতে বাধ্য করে আপনি ইটিএজি এবং সুরক্ষা সরবরাহ করতে পারেন: If-Match: *
তবে, এই পদ্ধতির প্রস্তাব দেওয়া হয় না কারণ এটি আপনার Remote Config আপডেটগুলি ক্ষতির কারণ হিসাবে ঝুঁকির কারণ হয় টেমপ্লেট যদি একাধিক ক্লায়েন্ট Remote Config টেম্পলেট আপডেট করে থাকে। এপিআই ব্যবহার করে একাধিক ক্লায়েন্টের সাথে বা এপিআই ক্লায়েন্ট এবং Firebase কনসোল ব্যবহারকারীদের বিরোধী আপডেটের সাথে এই ধরণের দ্বন্দ্ব দেখা দিতে পারে।
Remote Config টেম্পলেট সংস্করণগুলি পরিচালনার জন্য গাইডেন্সের জন্য, রিমোট কনফিগার টেম্পলেট এবং সংস্করণ দেখুন।