เอกสารนี้อธิบายวิธีอ่าน และแก้ไขชุดพารามิเตอร์และเงื่อนไขในรูปแบบ JSON โดยใช้โปรแกรม ซึ่งรู้จักกันในชื่อเทมเพลต Remote Config ซึ่งจะช่วยให้คุณทำการเปลี่ยนแปลงเทมเพลตในแบ็กเอนด์ที่แอปไคลเอ็นต์สามารถดึงข้อมูลได้โดยใช้ไลบรารีของไคลเอ็นต์
การใช้ Remote Config REST API หรือ Admin SDKs ที่อธิบายไว้ในคู่มือนี้จะช่วยให้คุณข้ามการจัดการเทมเพลตในคอนโซล Firebase เพื่อผสานรวมการเปลี่ยนแปลง Remote Config เข้ากับกระบวนการของคุณเองได้โดยตรง เช่น คุณสามารถทำสิ่งต่อไปนี้ได้ด้วย Remote Config API แบ็กเอนด์
- การกำหนดเวลาRemote Configการอัปเดต การใช้การเรียก API ร่วมกับงาน Cron จะช่วยให้คุณเปลี่ยนค่า Remote Config ได้ตามกำหนดการปกติ
- ค่าการกำหนดค่าการนำเข้าแบบเป็นชุดเพื่อเปลี่ยนจากระบบที่เป็นกรรมสิทธิ์ของคุณเองไปยัง Firebase Remote Config อย่างมีประสิทธิภาพ
ใช้ Remote Config กับ Cloud Functions for Firebase โดยเปลี่ยนค่าในแอปตามเหตุการณ์ที่เกิดขึ้นฝั่งเซิร์ฟเวอร์ เช่น คุณสามารถใช้ Remote Config เพื่อโปรโมตฟีเจอร์ใหม่ในแอป แล้วปิดการโปรโมตนั้นโดยอัตโนมัติเมื่อตรวจพบว่ามีผู้โต้ตอบกับฟีเจอร์ใหม่มากพอแล้ว

ส่วนต่อไปนี้ของคู่มือนี้จะอธิบายการดำเนินการที่คุณทำได้ด้วย Remote Config Backend API หากต้องการตรวจสอบโค้ดบางส่วนที่ดำเนินการเหล่านี้ ผ่าน REST API โปรดดูแอปตัวอย่างต่อไปนี้
- คู่มือเริ่มใช้งาน REST API ของการกำหนดค่าระยะไกลของ Firebase ใน Java ฉบับย่อ
- คู่มือเริ่มใช้งาน REST API ของการกำหนดค่าระยะไกลของ Firebase ใน Node.js ฉบับย่อ
- คู่มือเริ่มใช้งาน REST API ของการกำหนดค่าระยะไกลของ Firebase ใน Python ฉบับย่อ
แก้ไขการกำหนดค่าระยะไกลโดยใช้ Firebase Admin SDK
Admin SDK คือชุดไลบรารีเซิร์ฟเวอร์ที่ช่วยให้คุณโต้ตอบกับ Firebase จากสภาพแวดล้อมที่มีสิทธิ์ได้ นอกเหนือจากการอัปเดต Remote Configแล้ว Admin SDK ยังช่วยสร้างและยืนยัน โทเค็นการตรวจสอบสิทธิ์ Firebase, อ่านและเขียนจาก Realtime Database และอื่นๆ ดูข้อมูลเพิ่มเติมเกี่ยวกับAdmin SDKข้อกำหนดเบื้องต้นและการตั้งค่าได้ที่ เพิ่ม Firebase Admin 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();
Java
FileInputStream serviceAccount = new FileInputStream("service-account.json"); FirebaseOptions options = FirebaseOptions.builder() .setCredentials(GoogleCredentials.fromStream(serviceAccount)) .build(); FirebaseApp.initializeApp(options);
รับเทมเพลตการกำหนดค่าระยะไกลปัจจุบัน
เมื่อใช้Remote Configเทมเพลต โปรดทราบว่าเทมเพลตมีเวอร์ชัน และแต่ละเวอร์ชันมีอายุการใช้งานที่จำกัดตั้งแต่เวลาที่สร้างจนถึงเวลาที่คุณแทนที่ด้วยการอัปเดต โดยมีอายุ 90 วันและมีขีดจำกัดรวมของเวอร์ชันที่จัดเก็บไว้ 300 รายการ ดูข้อมูลเพิ่มเติมได้ที่เทมเพลตและการควบคุมเวอร์ชัน
คุณใช้ API ของแบ็กเอนด์เพื่อรับเทมเพลต Remote Config เวอร์ชันที่ใช้งานอยู่ในปัจจุบันในรูปแบบ JSON ได้
พารามิเตอร์และค่าพารามิเตอร์ที่สร้างขึ้นเป็นตัวแปรโดยเฉพาะในการ 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); }); }
Java
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.', }; }
Java
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', }); }
Java
template.getConditions().add(new Condition("android_en", "device.os == 'android' && device.country in ['us', 'uk']", TagColor.BLUE));
ในทุกกรณี คุณต้องเผยแพร่เทมเพลตอย่างชัดเจนหลังจาก ทำการแก้ไข
Remote ConfigAPI ของแบ็กเอนด์มีเงื่อนไขและตัวดำเนินการเปรียบเทียบหลายรายการ ที่คุณใช้เพื่อเปลี่ยนลักษณะการทำงานและลักษณะที่ปรากฏของแอปได้ หากต้องการ ดูข้อมูลเพิ่มเติมเกี่ยวกับเงื่อนไขและตัวดำเนินการที่รองรับสำหรับเงื่อนไขเหล่านี้ โปรดดูข้อมูลอ้างอิงของนิพจน์แบบมีเงื่อนไข
ตรวจสอบเทมเพลตการกำหนดค่าระยะไกล
คุณเลือกตรวจสอบการอัปเดตก่อนเผยแพร่ได้ ดังนี้
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); }); }
Java
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()); } }
กระบวนการตรวจสอบนี้
จะตรวจสอบข้อผิดพลาด เช่น คีย์ที่ซ้ำกันสำหรับพารามิเตอร์และเงื่อนไข
ชื่อเงื่อนไขที่ไม่ถูกต้องหรือเงื่อนไขที่ไม่มีอยู่ หรือ ETag ที่จัดรูปแบบไม่ถูกต้อง
ตัวอย่างเช่น คำขอที่มีคีย์มากกว่าจำนวนที่อนุญาต ซึ่งก็คือ 2,000 รายการ จะแสดงข้อความแสดงข้อผิดพลาด Param count too large
เผยแพร่เทมเพลตการกำหนดค่าระยะไกล
เมื่อดึงข้อมูลเทมเพลตและแก้ไขด้วยข้อมูลอัปเดตที่ต้องการแล้ว คุณจะเผยแพร่เทมเพลตได้ การเผยแพร่เทมเพลตตามที่อธิบายไว้ในส่วนนี้ จะแทนที่เทมเพลตการกำหนดค่าที่มีอยู่ทั้งหมดด้วยไฟล์ที่อัปเดตแล้ว และ ระบบจะกำหนดหมายเลขเวอร์ชันให้กับเทมเพลตใหม่ที่ใช้งานอยู่ โดยหมายเลขเวอร์ชันจะมากกว่าเทมเพลตที่แทนที่อยู่ 1 หมายเลข
หากจำเป็น คุณสามารถใช้ 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); }); }
Java
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
ส่วนนี้จะอธิบายความสามารถหลักของ
Remote Config REST API ที่ https://firebaseremoteconfig.googleapis.com
ดูรายละเอียดทั้งหมดได้ที่เอกสารอ้างอิง API
รับโทเค็นเพื่อการเข้าถึงเพื่อตรวจสอบสิทธิ์และให้สิทธิ์คำขอ API
โปรเจ็กต์ Firebase รองรับบัญชีบริการของ Google ซึ่งคุณใช้เพื่อเรียก API ของเซิร์ฟเวอร์ Firebase จากเซิร์ฟเวอร์แอปหรือสภาพแวดล้อมที่เชื่อถือได้ หากคุณ พัฒนาโค้ดในเครื่องหรือติดตั้งใช้งานแอปพลิเคชันในองค์กร คุณสามารถใช้ ข้อมูลเข้าสู่ระบบที่ได้รับโดยใช้บัญชีบริการนี้เพื่อให้สิทธิ์คำขอของเซิร์ฟเวอร์
คุณดูบัญชีบริการทั้งหมดสำหรับโปรเจ็กต์ Firebase ได้ใน
หากต้องการตรวจสอบสิทธิ์บัญชีบริการและให้สิทธิ์เข้าถึงบริการ Firebase คุณต้องสร้างไฟล์คีย์ส่วนตัวในรูปแบบ JSON
วิธีสร้างไฟล์คีย์ส่วนตัวสำหรับบัญชีบริการ
ในFirebaseคอนโซล ให้ไปที่
การตั้งค่า > แท็บบัญชีบริการคลิกสร้างคีย์ส่วนตัวใหม่ แล้วยืนยันโดยคลิก สร้างคีย์
จัดเก็บไฟล์ JSON ที่มีคีย์อย่างปลอดภัย
เมื่อให้สิทธิ์ผ่านบัญชีบริการ คุณจะมี 2 ตัวเลือกในการระบุข้อมูลเข้าสู่ระบบให้กับแอปพลิเคชัน คุณจะตั้งค่าตัวแปรสภาพแวดล้อม GOOGLE_APPLICATION_CREDENTIALS หรือส่งเส้นทางไปยังคีย์บัญชีบริการในโค้ดอย่างชัดเจนก็ได้ ตัวเลือกแรกมีความปลอดภัยมากกว่าและเราขอแนะนำให้ใช้
วิธีตั้งค่าตัวแปรสภาพแวดล้อม
ตั้งค่าตัวแปรสภาพแวดล้อม GOOGLE_APPLICATION_CREDENTIALS เป็นเส้นทางไฟล์ของไฟล์ JSON ที่มีคีย์บัญชีบริการ ตัวแปรนี้จะมีผลกับเซสชันเชลล์ปัจจุบันเท่านั้น ดังนั้นหากคุณเปิดเซสชันใหม่ ให้ตั้งค่าตัวแปรอีกครั้ง
Linux หรือ macOS
export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/service-account-file.json"
Windows
ด้วย PowerShell
$env:GOOGLE_APPLICATION_CREDENTIALS="C:\Users\username\Downloads\service-account-file.json"
หลังจากทำตามขั้นตอนข้างต้นแล้ว ข้อมูลรับรองเริ่มต้นของแอปพลิเคชัน (ADC) จะกำหนดข้อมูลรับรองของคุณโดยนัยได้ ซึ่งจะช่วยให้คุณใช้ข้อมูลรับรองของบัญชีบริการ เมื่อทดสอบหรือเรียกใช้ในสภาพแวดล้อมที่ไม่ใช่ของ Google ได้
ใช้ข้อมูลเข้าสู่ระบบ Firebase ร่วมกับไลบรารีการตรวจสอบสิทธิ์ของ Google สำหรับภาษาที่คุณต้องการเพื่อเรียกโทเค็นเพื่อการเข้าถึง 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);
});
}
ในตัวอย่างนี้ ไลบรารีของไคลเอ็นต์ Google API จะตรวจสอบสิทธิ์คำขอด้วย โทเค็นเว็บ JSON หรือ JWT ดูข้อมูลเพิ่มเติมได้ที่ โทเค็นเว็บ JSON
Python
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
Java
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 รายการ ดูข้อมูลเพิ่มเติมได้ที่เทมเพลตและการควบคุมเวอร์ชัน
รับเทมเพลตการกำหนดค่าระยะไกลปัจจุบัน
คุณใช้ API ของแบ็กเอนด์เพื่อรับเทมเพลต Remote Config เวอร์ชันที่ใช้งานอยู่ในปัจจุบันในรูปแบบ JSON ได้
พารามิเตอร์และค่าพารามิเตอร์ที่สร้างขึ้นเป็นตัวแปรในการ 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 และ ETag ที่อัปเดตพร้อมด้วยคำต่อท้าย -0
หมายความว่าการอัปเดตของคุณได้รับการตรวจสอบเรียบร้อยแล้ว การตอบกลับที่ไม่ใช่ 200
แสดงว่าข้อมูล JSON มีข้อผิดพลาดที่คุณต้องแก้ไขก่อน
เผยแพร่
อัปเดตเทมเพลตการกำหนดค่าระยะไกล
หลังจากดึงข้อมูลเทมเพลตและแก้ไขเนื้อหา JSON ด้วยการอัปเดตที่ต้องการแล้ว คุณจะเผยแพร่ได้ การเผยแพร่เทมเพลตตามที่อธิบายไว้ในส่วนนี้ จะแทนที่เทมเพลตการกำหนดค่าที่มีอยู่ทั้งหมดด้วยไฟล์ที่อัปเดตแล้ว และ ระบบจะกำหนดหมายเลขเวอร์ชันให้กับเทมเพลตใหม่ที่ใช้งานอยู่ โดยหมายเลขเวอร์ชันจะมากกว่าเทมเพลตที่แทนที่อยู่ 1 หมายเลข
หากจำเป็น คุณสามารถใช้ 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
และจะระบุ ETag ที่อัปเดตแล้วใน
ส่วนหัวการตอบกลับของคำสั่ง PUT ถัดไป
แก้ไขเงื่อนไขการกำหนดค่าระยะไกล
คุณสามารถแก้ไข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 ConfigAPI ของแบ็กเอนด์มีเงื่อนไขและตัวดำเนินการเปรียบเทียบหลายรายการ ที่คุณใช้เพื่อเปลี่ยนลักษณะการทำงานและลักษณะที่ปรากฏของแอปได้ หากต้องการ ดูข้อมูลเพิ่มเติมเกี่ยวกับเงื่อนไขและตัวดำเนินการที่รองรับสำหรับเงื่อนไขเหล่านี้ โปรดดูข้อมูลอ้างอิงของนิพจน์แบบมีเงื่อนไข
รหัสข้อผิดพลาด HTTP
| รหัสสถานะ | ความหมาย |
|---|---|
| 200 | อัปเดตสำเร็จแล้ว |
| 400 | เกิดข้อผิดพลาดในการตรวจสอบ เช่น คำขอที่มีคีย์มากกว่าจำนวนที่อนุญาต ซึ่งก็คือ 2,000 รายการ จะแสดงผล 400 (คำขอไม่ถูกต้อง) พร้อมข้อความแสดงข้อผิดพลาด Param count too large
นอกจากนี้ รหัสสถานะ HTTPS นี้ยังอาจเกิดขึ้นใน 2 กรณีต่อไปนี้ด้วย
|
| 401 | เกิดข้อผิดพลาดในการให้สิทธิ์ (ไม่มีโทเค็นเพื่อการเข้าถึง หรือไม่ได้เพิ่ม Firebase Remote Config REST API ลงในโปรเจ็กต์ใน Cloud Developer Console) |
| 403 | เกิดข้อผิดพลาดในการตรวจสอบสิทธิ์ (มีการระบุโทเค็นเพื่อการเข้าถึงที่ไม่ถูกต้อง) |
| 500 | เกิดข้อผิดพลาดภายใน หากเกิดข้อผิดพลาดนี้ ยื่นตั๋วสนับสนุน Firebase |
รหัสสถานะ 200 หมายความว่าระบบได้อัปเดตRemote Configเทมเพลต (พารามิเตอร์ ค่า และเงื่อนไขของโปรเจ็กต์) แล้ว และตอนนี้แอปที่ใช้โปรเจ็กต์นี้สามารถเข้าถึงได้ รหัสสถานะอื่นๆ บ่งชี้ว่าRemote Config เทมเพลตที่มีอยู่ก่อนหน้านี้ยังคงมีผล
หลังจากส่งการอัปเดตเทมเพลตแล้ว ให้ไปที่คอนโซล Firebase เพื่อ
ยืนยันว่าการเปลี่ยนแปลงปรากฏตามที่คาดไว้ ซึ่งเป็นสิ่งสำคัญเนื่องจากลำดับของเงื่อนไขจะส่งผลต่อวิธีประเมิน (เงื่อนไขแรกที่ประเมินtrueจะมีผล)
การใช้งาน ETag และการบังคับอัปเดต
Remote Config REST API ใช้แท็กเอนทิตี (ETag) เพื่อป้องกันการแข่งขัน และการอัปเดตทรัพยากรที่ทับซ้อนกัน ดูข้อมูลเพิ่มเติมเกี่ยวกับ ETag ได้ที่ ETag - HTTP
สำหรับ REST API นั้น Google ขอแนะนำให้คุณแคช ETag ที่ได้รับจากคำสั่ง GET ล่าสุด และใช้ค่า ETag นั้นในส่วนหัวของคำขอ If-Match เมื่อออกคำสั่ง PUT หากPUT
คำสั่งส่งผลให้เกิดรหัสสถานะ HTTPS 409 คุณควรออกGET
คำสั่งใหม่เพื่อรับ ETag และเทมเพลตใหม่เพื่อใช้กับคำสั่ง PUT ถัดไป
คุณสามารถหลีกเลี่ยง ETag และการป้องกันที่ ETag มีให้ได้โดย
บังคับให้Remote Configอัปเดตเทมเพลตดังนี้ If-Match: *
อย่างไรก็ตาม เราไม่แนะนำให้ใช้วิธีนี้เนื่องจากอาจทำให้การอัปเดตRemote Configเทมเพลตสูญหายได้
หากไคลเอ็นต์หลายรายอัปเดตRemote Configเทมเพลต ความขัดแย้งประเภทนี้อาจเกิดขึ้นกับไคลเอ็นต์หลายรายที่ใช้ API หรือกับการอัปเดตที่ขัดแย้งกันจากไคลเอ็นต์ API และFirebaseผู้ใช้คอนโซล
ดูคำแนะนำเกี่ยวกับการจัดการRemote Configเทมเพลตเวอร์ชันต่างๆ ได้ที่ เทมเพลตและการกำหนดเวอร์ชันของการกำหนดค่าระยะไกล