เอกสารนี้อธิบายวิธีอ่านแบบเป็นโปรแกรม และแก้ไขชุดพารามิเตอร์และเงื่อนไขรูปแบบ JSON ที่เรียกว่า Remote Config เทมเพลต วิธีนี้ช่วยให้ ให้เปลี่ยนแปลงเทมเพลตใน ที่แอปของไคลเอ็นต์สามารถดึงข้อมูลโดยใช้ไลบรารีของไคลเอ็นต์ได้
การใช้ Remote Config REST API หรือ Admin SDK ที่อธิบายไว้ในคู่มือนี้ คุณสามารถข้าม จัดการเทมเพลตในคอนโซล 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 เพื่อตรวจสอบโค้ดบางอย่างที่ดำเนินการเหล่านี้ งานผ่านทาง REST API โปรดดูตัวอย่างแอปต่อไปนี้
- การเริ่มต้นใช้งาน Java สำหรับการกำหนดค่าระยะไกลของ Firebase REST API
- การเริ่มต้น Node.js ของ REST API สำหรับการกำหนดค่าระยะไกลของ Firebase
- การเริ่มต้น Python สำหรับ REST API ของการกำหนดค่าระยะไกลของ Firebase
แก้ไขการกำหนดค่าระยะไกลโดยใช้ 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_เมนู" คุณสามารถเพิ่มพารามิเตอร์เพื่อควบคุมการแสดงข้อมูลตามฤดูกาล ดังนี้
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));
ในทุกกรณี คุณจะต้องเผยแพร่เทมเพลตอย่างชัดแจ้งหลังจาก ทำการเปลี่ยนแปลงแก้ไข
API แบ็กเอนด์ 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()); } }
กระบวนการตรวจสอบนี้
ตรวจสอบข้อผิดพลาด เช่น คีย์ที่ซ้ำกันสำหรับพารามิเตอร์และเงื่อนไข
ชื่อเงื่อนไขไม่ถูกต้องหรือเงื่อนไขที่ไม่มีอยู่ หรือแท็กที่มีรูปแบบไม่ถูกต้อง
ตัวอย่างเช่น คำขอที่มี เกินจำนวนสูงสุดที่อนุญาต
คีย์ - 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); }); }
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 บัญชีบริการ ซึ่งใช้เพื่อเรียกใช้ Firebase ได้ API ของเซิร์ฟเวอร์จากเซิร์ฟเวอร์ของแอปหรือสภาพแวดล้อมที่เชื่อถือได้ หากคุณกำลังพัฒนา โค้ดภายในเครื่อง หรือการทำให้แอปพลิเคชันใช้งานได้ภายในองค์กร คุณสามารถใช้ข้อมูลเข้าสู่ระบบที่ได้รับ ผ่านบัญชีบริการนี้เพื่อให้สิทธิ์คำขอของเซิร์ฟเวอร์
วิธีตรวจสอบสิทธิ์และให้สิทธิ์บัญชีบริการ ในการเข้าถึงบริการ Firebase คุณต้องสร้างไฟล์คีย์ส่วนตัวใน JSON
วิธีสร้างไฟล์คีย์ส่วนตัวสำหรับบัญชีบริการ
ในคอนโซล Firebase ให้เปิด การตั้งค่า > บัญชีบริการ
คลิกสร้างคีย์ส่วนตัวใหม่ แล้วยืนยันโดยคลิกสร้างคีย์
จัดเก็บไฟล์ JSON ที่มีคีย์ดังกล่าวอย่างปลอดภัย
เมื่อให้สิทธิ์ผ่านบัญชีบริการ คุณมี 2 ตัวเลือกในการระบุ ลงในแอปพลิเคชันของคุณ คุณสามารถตั้ง GOOGLE_APPLICATION_CREDENTIALS ตัวแปรสภาพแวดล้อม หรือคุณอาจ ส่งผ่านเส้นทางไปยังคีย์บัญชีบริการในโค้ดอย่างชัดแจ้ง ตัวเลือกแรกมีความปลอดภัยกว่าและขอแนะนำอย่างยิ่ง
วิธีตั้งค่าตัวแปรสภาพแวดล้อม
ตั้งค่าตัวแปรสภาพแวดล้อม GOOGLE_APPLICATION_CREDENTIALS ไปยังเส้นทางไฟล์ของไฟล์ JSON ที่มีคีย์บัญชีบริการ ตัวแปรนี้ใช้ได้กับเซสชัน Shell ปัจจุบันเท่านั้น ดังนั้นหากคุณเปิด ให้กำหนดตัวแปรอีกครั้ง
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 และแท็กที่อัปเดตซึ่งมีคำต่อท้าย -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
แก้ไขโดยคำสั่งนี้ และจะมี 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." } } }
การแก้ไขข้างต้นจะกำหนดชุดเงื่อนไขก่อน จากนั้น กําหนดค่าเริ่มต้นและพารามิเตอร์ที่อิงตามเงื่อนไข (ค่าสภาพสินค้า) สำหรับแต่ละพารามิเตอร์ และยังเพิ่มคำอธิบายซึ่งไม่บังคับสำหรับแต่ละ element; เช่น ความคิดเห็นที่เป็นโค้ด มีไว้สำหรับนักพัฒนาซอฟต์แวร์และจะไม่แสดง ในแอป ETag คือ มีไว้สำหรับการควบคุมเวอร์ชัน
API แบ็กเอนด์ Remote Config มีเงื่อนไขและการเปรียบเทียบหลายอย่าง ของผู้ให้บริการที่คุณสามารถใช้ในการเปลี่ยนแปลงลักษณะการทำงานและรูปลักษณ์ของแอป ถึง โปรดดูข้อมูลเพิ่มเติมเกี่ยวกับเงื่อนไขและโอเปอเรเตอร์ที่รองรับสำหรับเงื่อนไขเหล่านี้ ดูการอ้างอิงนิพจน์เงื่อนไข
รหัสข้อผิดพลาดของ HTTP
รหัสสถานะ | ความหมาย |
---|---|
200 | อัปเดตสำเร็จแล้ว |
400 | เกิดข้อผิดพลาดในการตรวจสอบ ตัวอย่างเช่น คำขอที่มีฟิลด์
จำนวนคีย์ที่อนุญาต - 2000 จะส่งกลับ 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 โปรดดูที่ เทมเพลตการกำหนดค่าระยะไกลและการกำหนดเวอร์ชัน