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

ส่วนต่อไปนี้ของคู่มือนี้จะอธิบายการดำเนินการที่คุณทำได้โดยใช้ API แบ็กเอนด์ของ Remote Config
แก้ไข 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
- คู่มือเริ่มใช้งานฉบับย่อสำหรับ Python ของ Firebase Remote Config
ในขั้นตอน 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 แบ็กเอนด์เพื่อรับเทมเพลต 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 รายการ
คุณสามารถแก้ไขและเพิ่มพารามิเตอร์และกลุ่มพารามิเตอร์ 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));
ไม่ว่าในกรณีใด คุณต้องเผยแพร่เทมเพลตอย่างชัดเจนหลังจากทำการแก้ไข
API แบ็กเอนด์ของ Remote Config มีเงื่อนไขและโอเปอเรเตอร์การเปรียบเทียบหลายรายการที่คุณใช้เพื่อเปลี่ยนลักษณะการทำงานและรูปลักษณ์ของแอปได้ ดูข้อมูลเพิ่มเติมเกี่ยวกับเงื่อนไขและโอเปอเรเตอร์ที่รองรับสำหรับเงื่อนไขเหล่านี้ได้ที่ข้อมูลอ้างอิงนิพจน์แบบมีเงื่อนไข
ตรวจสอบเทมเพลต 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 ที่มีคีย์บัญชีบริการ
ตัวแปรนี้จะมีผลกับเซสชัน Shell ปัจจุบันเท่านั้น ดังนั้นหากคุณเปิดเซสชันใหม่ ให้ตั้งค่าตัวแปรอีกครั้ง
Linux หรือ macOS
export GOOGLE_APPLICATION_CREDENTIALS="KEY_FILE_PATH"
Windows
ด้วย PowerShell:
$env:GOOGLE_APPLICATION_CREDENTIALS="KEY_FILE_PATH"
หลังจากทำตามขั้นตอนข้างต้นเสร็จแล้ว ข้อมูลรับรองเริ่มต้นของแอปพลิเคชัน (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 แบ็กเอนด์เพื่อรับเทมเพลต 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 ที่คุณใช้สำหรับคำขอที่ตามมา
ตรวจสอบเทมเพลต 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 เพื่อวัตถุประสงค์ในการควบคุมเวอร์ชันด้วย
API แบ็กเอนด์ของ Remote Config มีเงื่อนไขและโอเปอเรเตอร์การเปรียบเทียบหลายรายการที่คุณใช้เพื่อเปลี่ยนลักษณะการทำงานและรูปลักษณ์ของแอปได้ ดูข้อมูลเพิ่มเติมเกี่ยวกับเงื่อนไขและโอเปอเรเตอร์ที่รองรับสำหรับเงื่อนไขเหล่านี้ได้ที่ข้อมูลอ้างอิงนิพจน์แบบมีเงื่อนไข
รหัสข้อผิดพลาดของ 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 เราขอแนะนำให้คุณแคช 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ดูข้อมูลทั่วไปเพิ่มเติมเกี่ยวกับคำสั่ง CLI ของ Firebase ได้ที่ข้อมูลอ้างอิง CLI ของ Firebase