กำหนดค่าเทมเพลตโดยใช้ Admin SDK, REST API และ Firebase CLI page_type: guide
เอกสารนี้อธิบายวิธีอ่านและแก้ไขชุดพารามิเตอร์และเงื่อนไขที่จัดรูปแบบ JSON โดยอัตโนมัติ ซึ่งเรียกว่าเทมเพลต Remote Config ซึ่งจะช่วยให้คุณทำการเปลี่ยนแปลงเทมเพลตในแบ็กเอนด์ที่แอปไคลเอ็นต์สามารถ ดึงข้อมูลได้โดยใช้ไลบรารีของไคลเอ็นต์
การใช้ Remote Config REST API, Admin SDKs หรือ Firebase CLI ที่อธิบายไว้ในคู่มือนี้ คุณสามารถข้ามการจัดการเทมเพลตในคอนโซล 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
แก้ไข Remote Config โดยใช้ Firebase Admin SDK
Admin SDK คือชุดไลบรารีเซิร์ฟเวอร์ที่ช่วยให้คุณโต้ตอบกับ Firebase จากสภาพแวดล้อมที่มีสิทธิ์ได้ นอกเหนือจากการอัปเดตRemote Configแล้ว Admin SDK ยังช่วยให้สร้างและยืนยัน โทเค็นการตรวจสอบสิทธิ์ Firebase รวมถึงอ่านและเขียนจาก Realtime Database ได้ด้วย ดูข้อมูลเพิ่มเติมเกี่ยวกับAdmin SDKข้อกำหนดเบื้องต้นและการตั้งค่าได้ที่เพิ่ม Firebase Admin SDKลงในเซิร์ฟเวอร์
หากต้องการดูโค้ดตัวอย่างที่ทำงานเหล่านี้โดยใช้ Admin SDK ให้ดูแอปเริ่มต้นฉบับย่อต่อไปนี้
- Firebase Remote Config Java คู่มือเริ่มต้น
- Firebase Remote Config Node.js คู่มือเริ่มต้น
- Firebase Remote Config Python คู่มือเริ่มต้น
ใน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 ปัจจุบัน
เมื่อทำงานกับRemote Configเทมเพลต โปรดทราบว่าเทมเพลตมี การควบคุมเวอร์ชัน และแต่ละเวอร์ชันมีอายุการใช้งานที่จำกัดตั้งแต่เวลาที่ สร้างจนถึงเวลาที่คุณแทนที่ด้วยการอัปเดต: 90 วัน โดยมีขีดจำกัดรวมของเวอร์ชันที่จัดเก็บไว้ 300 รายการ ดูข้อมูลเพิ่มเติมได้ที่ เทมเพลตและการกำหนดเวอร์ชัน
คุณใช้ API ของแบ็กเอนด์เพื่อรับเทมเพลตเวอร์ชันที่ใช้งานอยู่ในปัจจุบันในรูปแบบ JSON ได้ 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); }); }
Java
Template template = FirebaseRemoteConfig.getInstance().getTemplateAsync().get(); // See the ETag of the fetched template. System.out.println("ETag from server: " + template.getETag());
แก้ไขRemote Configพารามิเตอร์
คุณสามารถแก้ไขและเพิ่มพารามิเตอร์และกลุ่มพารามิเตอร์ 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เงื่อนไข
คุณสามารถแก้ไขและเพิ่ม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 แบ็กเอนด์มีเงื่อนไขและตัวดำเนินการเปรียบเทียบหลายรายการ ที่คุณใช้เพื่อเปลี่ยนลักษณะการทำงานและลักษณะที่ปรากฏของแอปได้ หากต้องการ ดูข้อมูลเพิ่มเติมเกี่ยวกับเงื่อนไขและตัวดำเนินการที่รองรับสำหรับเงื่อนไขเหล่านี้ โปรดดูข้อมูลอ้างอิงเกี่ยวกับนิพจน์แบบมีเงื่อนไข
ตรวจสอบRemote Configเทมเพลต
คุณเลือกตรวจสอบการอัปเดตก่อนเผยแพร่ได้ ดังนี้
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
เผยแพร่เทมเพลต Remote Config
เมื่อดึงข้อมูลเทมเพลตและแก้ไขด้วยข้อมูลอัปเดตแล้ว คุณจะเผยแพร่เทมเพลตได้ การเผยแพร่เทมเพลตตามที่อธิบายไว้ในส่วนนี้ จะแทนที่เทมเพลตการกำหนดค่าที่มีอยู่ทั้งหมดด้วยไฟล์ที่อัปเดตแล้ว และ ระบบจะกำหนดหมายเลขเวอร์ชันให้เทมเพลตที่ใช้งานใหม่อีก 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()); } }
แก้ไข Remote Config โดยใช้ 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
เมื่อทำงานกับเทมเพลต Remote Config โปรดทราบว่าเทมเพลตมีเวอร์ชัน และแต่ละเวอร์ชันมีอายุการใช้งานที่จำกัดตั้งแต่เวลาที่สร้างจนถึงเวลาที่คุณแทนที่ด้วยการอัปเดต โดยมีระยะเวลา 90 วัน และมีขีดจำกัดรวมของเวอร์ชันที่จัดเก็บไว้ 300 รายการ ดูข้อมูลเพิ่มเติมได้ที่ เทมเพลตและการควบคุมเวอร์ชัน
รับเทมเพลต Remote Config ปัจจุบัน
คุณใช้ API ของแบ็กเอนด์เพื่อรับเทมเพลตเวอร์ชันที่ใช้งานอยู่ในปัจจุบันในรูปแบบ JSON ได้ 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 ไปยังไฟล์หนึ่ง และส่วนหัว (รวมถึง 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 ที่คุณใช้สำหรับคำขอถัดไป
ตรวจสอบRemote Configเทมเพลต
คุณสามารถตรวจสอบการอัปเดตก่อนเผยแพร่ได้ (ไม่บังคับ)
ตรวจสอบการอัปเดตเทมเพลตโดยต่อท้ายพารามิเตอร์ URL ?validate_only=true ในคำขอเผยแพร่
ในการตอบกลับ รหัสสถานะ 200 และ ETag ที่อัปเดตแล้วพร้อมด้วยคำต่อท้าย -0
หมายความว่าการอัปเดตของคุณได้รับการตรวจสอบเรียบร้อยแล้ว การตอบกลับที่ไม่ใช่ 200
แสดงว่าข้อมูล JSON มีข้อผิดพลาดที่คุณต้องแก้ไขก่อน
เผยแพร่
อัปเดตเทมเพลต Remote Config
หลังจากดึงข้อมูลเทมเพลตและแก้ไขเนื้อหา 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เงื่อนไข
คุณสามารถแก้ไข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 | เกิดข้อผิดพลาดในการให้สิทธิ์ (ไม่มีโทเค็นเพื่อการเข้าถึง หรือไม่ได้เพิ่ม Remote ConfigREST API ของ Firebase ลงในโปรเจ็กต์ใน 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เวอร์ชันเทมเพลตได้ที่ Remote Configเทมเพลตและการกำหนดเวอร์ชัน
แก้ไข Remote Config โดยใช้ Firebase CLI
Firebase CLI ช่วยให้คุณตรวจสอบ จัดการ และย้อนกลับ Remote Configเทมเพลต รวมถึงแสดง ตรวจสอบ และลบ Remote Configการทดสอบและการเปิดตัวได้โดยตรงจากบรรทัดคำสั่ง
ข้อกำหนดเบื้องต้นและการตั้งค่า
ลงชื่อเข้าใช้ Firebase โดยทำดังนี้
firebase loginตั้งค่าโปรเจ็กต์ที่ใช้งานอยู่หรือระบุ
--project PROJECT_IDในแต่ละคำสั่งfirebase use PROJECT_ID
ตรวจสอบว่าบัญชีหรือบัญชีบริการของคุณมีสิทธิ์ IAM ที่จำเป็น ดังนี้
- หากต้องการตรวจสอบ ดาวน์โหลด หรือย้อนกลับเทมเพลต Remote Config และจัดการการเปิดตัว
คุณต้องมี
บทบาทผู้ดูแลระบบ Firebase Remote Config (
roles/cloudconfig.admin) (หรือสิทธิ์cloudconfig.configs.get,cloudconfig.configs.update,cloudconfig.rollouts.get,cloudconfig.rollouts.listและcloudconfig.rollouts.archive) สำหรับการดำเนินการแบบดูอย่างเดียว คุณต้องมี บทบาทผู้มีสิทธิ์ดู Firebase Remote Config (roles/cloudconfig.viewer) (cloudconfig.configs.get,cloudconfig.rollouts.getและcloudconfig.rollouts.list) - หากต้องการจัดการการทดสอบ A/B Testing คุณต้องมี
Firebase A/B Testing บทบาทผู้ดูแลระบบ (
roles/firebaseabt.admin) (หรือสิทธิ์firebaseabt.experiments.get,firebaseabt.experiments.listและfirebaseabt.experiments.delete) สำหรับ การดำเนินการแบบดูอย่างเดียว Firebase A/B Testing บทบาทผู้มีสิทธิ์ดู (roles/firebaseabt.viewer) ก็เพียงพอแล้ว
สรุปคำสั่ง CLI
| คำสั่ง | คำอธิบาย |
|---|---|
firebase remoteconfig:versions:list |
แสดงรายการเทมเพลต Remote Config เวอร์ชันล่าสุด |
firebase remoteconfig:get |
รับเทมเพลต Remote Config (เขียนลงในไฟล์ได้หากต้องการ) |
firebase remoteconfig:rollback |
ย้อนกลับRemote Configเทมเพลตเป็นเวอร์ชันก่อนหน้า |
firebase remoteconfig:experiments:list |
แสดงรายการการทดสอบ Remote Config ทั้งหมดในโปรเจ็กต์ |
firebase remoteconfig:experiments:get |
รับรายละเอียดของRemote Configการทดสอบที่เฉพาะเจาะจง |
firebase remoteconfig:experiments:delete |
ลบการทดสอบRemote Configที่เฉพาะเจาะจง |
firebase remoteconfig:rollouts:list |
แสดงรายการการเปิดตัว Remote Config ทั้งหมดในโปรเจ็กต์ |
firebase remoteconfig:rollouts:get |
รับรายละเอียดของRemote Configการเปิดตัวที่เฉพาะเจาะจง |
firebase remoteconfig:rollouts:delete |
ลบRemote Configการเปิดตัวที่เฉพาะเจาะจง |
แก้ไขเทมเพลตและเวอร์ชัน Remote Config
ใช้คำสั่งต่อไปนี้เพื่อตรวจสอบ ดาวน์โหลด และย้อนกลับ Remote Config เทมเพลตและประวัติเวอร์ชัน
แสดงรายการเวอร์ชันของเทมเพลต
แสดงเทมเพลต Remote Config 10 เวอร์ชันล่าสุดตามค่าเริ่มต้น ซึ่งรวมถึงหมายเลขเวอร์ชัน เวลาอัปเดต แหล่งที่มาของการอัปเดต ประเภทการอัปเดต และupdateUser
firebase remoteconfig:versions:list [--limit NUMBER_OF_VERSIONS]--limit NUMBER_OF_VERSIONS: จำนวนเวอร์ชันสูงสุดที่จะแสดงผล ระบุ0เพื่อแสดงเวอร์ชันที่มีอยู่ทั้งหมด (สูงสุด 300 เวอร์ชันที่จัดเก็บ)
ตัวอย่าง
แสดงรายการ 10 เวอร์ชันล่าสุด
firebase remoteconfig:versions:listแสดงรายการเวอร์ชันทั้งหมดที่พร้อมใช้งาน
firebase remoteconfig:versions:list --limit 0แสดงรายการเวอร์ชันล่าสุด 5 รายการ
firebase remoteconfig:versions:list --limit 5
รับเทมเพลต
รับRemote Configเทมเพลตและแสดงผลกลุ่มพารามิเตอร์ พารามิเตอร์ ชื่อเงื่อนไข และเวอร์ชัน โดยค่าเริ่มต้น ระบบจะดึงข้อมูลเวอร์ชันล่าสุดที่ใช้งานอยู่และพิมพ์สรุปที่จัดรูปแบบแล้วไปยังเทอร์มินัล
firebase remoteconfig:get [-v, --version_number VERSION_NUMBER] [-o, --output FILENAME]-v, --version_number VERSION_NUMBER: หมายเลขเวอร์ชัน ของเทมเพลตที่จะดึงข้อมูล หากไม่ระบุ ระบบจะใช้เวอร์ชันล่าสุดเป็นค่าเริ่มต้น-o, --output FILENAME: เขียนเพย์โหลด JSON ของเทมเพลต ไปยังเส้นทางที่ระบุโดยตรงแทนที่จะพิมพ์ไปยัง stdout
ตัวอย่าง
แสดงเทมเพลตที่ใช้งานอยู่ในปัจจุบันในเทอร์มินัล
firebase remoteconfig:getดาวน์โหลดเทมเพลตที่ใช้งานอยู่ในปัจจุบันเป็นไฟล์ JSON โดยทำดังนี้
firebase remoteconfig:get -o remote_config_template.jsonดาวน์โหลดเวอร์ชันเก่าที่เฉพาะเจาะจง (เช่น เวอร์ชัน 12) ลงในไฟล์
firebase remoteconfig:get -v 12 -o remote_config_v12.json
ย้อนกลับเทมเพลต
ย้อนกลับRemote Configเทมเพลตที่ใช้งานอยู่เป็นเวอร์ชันก่อนหน้า การดำเนินการนี้ จะสร้างเวอร์ชันที่ใช้งานใหม่อันมีเนื้อหาเหมือนกับเวอร์ชันเป้าหมาย
firebase remoteconfig:rollback [-v, --version_number VERSION_NUMBER] [--force]-v, --version_number VERSION_NUMBER: หมายเลขเวอร์ชันเป้าหมาย ที่จะย้อนกลับ หากไม่ระบุ ระบบจะใช้เวอร์ชันก่อนหน้า ทันที (เวอร์ชันปัจจุบันลบด้วย 1)--force: ทำการย้อนกลับทันทีโดยไม่ต้องแจ้งให้ยืนยันแบบอินเทอร์แอกทีฟ (Y/N) มีประโยชน์สำหรับไปป์ไลน์ CI/CD และ สคริปต์อัตโนมัติ
ตัวอย่าง
ย้อนกลับไปเป็นเวอร์ชันก่อนหน้าพร้อมการยืนยันแบบอินเทอร์แอกทีฟ
firebase remoteconfig:rollbackวิธีย้อนกลับไปเป็นเวอร์ชัน 8 โดยไม่ต้องแจ้งให้ทราบ
firebase remoteconfig:rollback -v 8 --force
แก้ไขการทดสอบ A/B Testing
ใช้คำสั่งต่อไปนี้เพื่อแสดง ตรวจสอบ และลบการทดสอบ Remote Config A/B Testing โดยตรงด้วย CLI
แสดงรายการการทดสอบ
แสดงรายการRemote Configการทดสอบทั้งหมดของโปรเจ็กต์ พร้อมการกรองและการแบ่งหน้า (ไม่บังคับ)
firebase remoteconfig:experiments:list [--filter EXPRESSION] [--pageSize NUMBER] [--pageToken TOKEN]--filter EXPRESSION: นิพจน์ตัวกรองที่จะใช้กับรายการการทดสอบ--pageSize NUMBER: จำนวนการทดสอบที่จะแสดงต่อหน้าเว็บ (ค่าเริ่มต้นคือ 10)--pageToken TOKEN: โทเค็นสำหรับการชดเชยหน้าเมื่อ ดึงผลลัพธ์ที่แบ่งหน้า
ตัวอย่าง
firebase remoteconfig:experiments:listดูรายละเอียดการทดสอบ
รับรายละเอียดทั้งหมดสําหรับRemote Configการทดสอบที่ระบุ
firebase remoteconfig:experiments:get EXPERIMENT_IDตัวอย่าง
firebase remoteconfig:experiments:get exp_promo_discount_2026ลบการทดสอบ
ลบRemote Configการทดสอบที่ระบุ
firebase remoteconfig:experiments:delete EXPERIMENT_IDตัวอย่าง
firebase remoteconfig:experiments:delete exp_promo_discount_2026แก้ไขการเปิดตัว Remote Config
ใช้คำสั่งต่อไปนี้เพื่อแสดง ตรวจสอบ และลบ Remote Configการเปิดตัวโดยตรงด้วย CLI
การเปิดตัวรายการ
แสดงรายการRemote Configการเปิดตัวทั้งหมดสำหรับโปรเจ็กต์ พร้อมการกรองและการแบ่งหน้า (ไม่บังคับ)
firebase remoteconfig:rollouts:list [--filter EXPRESSION] [--pageSize NUMBER] [--pageToken TOKEN]--filter EXPRESSION: นิพจน์ตัวกรองที่จะใช้กับ รายการการเปิดตัว--pageSize NUMBER: จำนวนการเปิดตัวที่จะแสดงต่อหน้า (ค่าเริ่มต้นคือ 10)--pageToken TOKEN: โทเค็นสำหรับการชดเชยหน้าเมื่อ ดึงผลลัพธ์ที่แบ่งหน้า
ตัวอย่าง
firebase remoteconfig:rollouts:listดูรายละเอียดการเปิดตัว
รับรายละเอียดทั้งหมดสำหรับการเปิดตัวRemote Configที่ระบุ
firebase remoteconfig:rollouts:get ROLLOUT_IDตัวอย่าง
firebase remoteconfig:rollouts:get rollout_new_checkout_flowลบการเปิดตัว
ลบการเปิดตัว Remote Config ที่ระบุ
firebase remoteconfig:rollouts:delete ROLLOUT_IDตัวอย่าง
firebase remoteconfig:rollouts:delete rollout_new_checkout_flowดูข้อมูลทั่วไปเพิ่มเติมเกี่ยวกับคำสั่ง Firebase CLI ได้ที่Firebaseแหล่งอ้างอิง CLI