เอกสารนี้อธิบายวิธีที่คุณสามารถอ่านและแก้ไขชุดพารามิเตอร์และเงื่อนไขรูปแบบ JSON ที่เรียกว่า เทมเพลตการกำหนดค่าระยะไกล โดยทางโปรแกรม สิ่งนี้ช่วยให้คุณทำการเปลี่ยนแปลงเทมเพลตบนแบ็กเอนด์ที่แอปไคลเอนต์สามารถดึงข้อมูลได้โดยใช้ไลบรารีไคลเอนต์
การใช้ Remote Config REST API หรือ Admin SDK ที่อธิบายไว้ในคู่มือนี้ คุณสามารถข้ามการจัดการเทมเพลตในคอนโซล Firebase เพื่อรวมการเปลี่ยนแปลงการกำหนดค่าระยะไกลเข้ากับกระบวนการของคุณเองได้โดยตรง ตัวอย่างเช่น ด้วย Remote Config backend API คุณสามารถ:
- การกำหนดเวลาการอัปเดตการกำหนดค่าระยะไกล ด้วยการใช้การเรียก API ร่วมกับงาน cron คุณสามารถเปลี่ยนค่าการกำหนดค่าระยะไกลตามกำหนดเวลาปกติได้
- ตั้งค่าการนำเข้าเป็นกลุ่ม เพื่อเปลี่ยนจากระบบที่เป็นกรรมสิทธิ์ของคุณไปเป็นการกำหนดค่าระยะไกลของ Firebase ได้อย่างมีประสิทธิภาพ
ใช้การกำหนดค่าระยะไกลกับฟังก์ชันคลาวด์สำหรับ Firebase โดยเปลี่ยนค่าในแอปของคุณตามเหตุการณ์ที่เกิดขึ้นฝั่งเซิร์ฟเวอร์ ตัวอย่างเช่น คุณสามารถใช้การกำหนดค่าระยะไกลเพื่อโปรโมตฟีเจอร์ใหม่ในแอปของคุณ จากนั้นปิดการโปรโมตนั้นโดยอัตโนมัติเมื่อคุณตรวจพบว่ามีคนโต้ตอบกับฟีเจอร์ใหม่มากพอแล้ว
ส่วนต่อไปนี้ของคู่มือนี้จะอธิบายการดำเนินการที่คุณสามารถทำได้กับ API แบ็กเอนด์การกำหนดค่าระยะไกล หากต้องการตรวจสอบโค้ดบางส่วนที่ทำงานเหล่านี้ผ่าน REST API โปรดดูหนึ่งในแอปตัวอย่างเหล่านี้:
- การกำหนดค่าระยะไกลของ Firebase REST API Java Quickstart
- การเริ่มต้นอย่างรวดเร็วของการกำหนดค่าระยะไกลของ Firebase REST API Node.js
- การเริ่มต้นอย่างรวดเร็วของ Firebase Remote Config REST API Python
แก้ไขการกำหนดค่าระยะไกลโดยใช้ Firebase Admin SDK
Admin SDK คือชุดไลบรารีเซิร์ฟเวอร์ที่ให้คุณโต้ตอบกับ Firebase จากสภาพแวดล้อมที่มีสิทธิพิเศษ นอกเหนือจากการอัปเดตการกำหนดค่าระยะไกลแล้ว Admin SDK ยังเปิดใช้งานการสร้างและการตรวจสอบโทเค็นการรับรองความถูกต้องของ Firebase การอ่านและการเขียนจากฐานข้อมูลเรียลไทม์ และอื่นๆ หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับข้อกำหนดเบื้องต้นและการตั้งค่า Admin SDK โปรดดู เพิ่ม Firebase Admin SDK ไปยังเซิร์ฟเวอร์ของคุณ
ในขั้นตอนการกำหนดค่าระยะไกลทั่วไป คุณอาจได้รับเทมเพลตปัจจุบัน แก้ไขพารามิเตอร์หรือกลุ่มพารามิเตอร์และเงื่อนไขบางส่วน ตรวจสอบความถูกต้องของเทมเพลต จากนั้นเผยแพร่ ก่อนที่จะทำการเรียก API เหล่านั้น คุณต้องอนุญาตคำขอจาก SDK
เริ่มต้น SDK และอนุญาตคำขอ API
เมื่อคุณเริ่มต้น Admin SDK โดยไม่มีพารามิเตอร์ SDK จะใช้ ข้อมูลรับรองเริ่มต้นของแอปพลิเคชัน Google และอ่านตัวเลือกจากตัวแปรสภาพแวดล้อม FIREBASE_CONFIG
หากเนื้อหาของตัวแปร FIREBASE_CONFIG
เริ่มต้นด้วย {
จะถูกแยกวิเคราะห์เป็นวัตถุ JSON มิฉะนั้น SDK จะถือว่าสตริงนั้นเป็นชื่อของไฟล์ JSON ที่มีตัวเลือกดังกล่าว
ตัวอย่างเช่น:
โหนด 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 เวอร์ชัน ดู เทมเพลตและการกำหนดเวอร์ชัน สำหรับข้อมูลเพิ่มเติม
คุณสามารถใช้ API แบ็กเอนด์เพื่อรับเวอร์ชันปัจจุบันของเทมเพลตการกำหนดค่าระยะไกลในรูปแบบ JSON
พารามิเตอร์และค่าพารามิเตอร์ที่สร้างโดยเฉพาะเป็นตัวแปรในการทดสอบ A/B Testing จะไม่รวมอยู่ในเทมเพลตที่ส่งออก
วิธีรับเทมเพลต:
โหนด 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());
แก้ไขพารามิเตอร์การกำหนดค่าระยะไกล
คุณสามารถแก้ไขและเพิ่มพารามิเตอร์การกำหนดค่าระยะไกลและกลุ่มพารามิเตอร์ได้โดยทางโปรแกรม ตัวอย่างเช่น ในกลุ่มพารามิเตอร์ที่มีอยู่ชื่อ "new_menu" คุณสามารถเพิ่มพารามิเตอร์เพื่อควบคุมการแสดงข้อมูลตามฤดูกาลได้:
โหนด 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 ช่วยให้คุณสร้างพารามิเตอร์และกลุ่มพารามิเตอร์ใหม่ หรือแก้ไขค่าเริ่มต้น ค่าตามเงื่อนไข และคำอธิบาย ในทุกกรณี คุณต้องเผยแพร่เทมเพลตอย่างชัดเจนหลังจากทำการแก้ไข
แก้ไขเงื่อนไขการกำหนดค่าระยะไกล
คุณสามารถแก้ไขและเพิ่มเงื่อนไขการกำหนดค่าระยะไกลและค่าเงื่อนไขได้โดยทางโปรแกรม ตัวอย่างเช่น หากต้องการเพิ่มเงื่อนไขใหม่:
โหนด 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));
ในทุกกรณี คุณต้องเผยแพร่เทมเพลตอย่างชัดเจนหลังจากทำการแก้ไข
API แบ็กเอนด์การกำหนดค่าระยะไกลมีเงื่อนไขและตัวดำเนินการเปรียบเทียบหลายประการที่คุณสามารถใช้เพื่อเปลี่ยนลักษณะการทำงานและรูปลักษณ์ของแอปของคุณได้ หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับเงื่อนไขและตัวดำเนินการที่รองรับเงื่อนไขเหล่านี้ โปรดดู การอ้างอิงนิพจน์เงื่อนไข
ตรวจสอบความถูกต้องของเทมเพลต Remote Config
คุณสามารถเลือกตรวจสอบการอัปเดตของคุณก่อนเผยแพร่ได้ ดังที่แสดง:
โหนด 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()); } }
กระบวนการตรวจสอบนี้จะตรวจสอบข้อผิดพลาด เช่น คีย์ที่ซ้ำกันสำหรับพารามิเตอร์และเงื่อนไข ชื่อเงื่อนไขที่ไม่ถูกต้องหรือเงื่อนไขที่ไม่มีอยู่ หรือ etag ที่จัดรูปแบบไม่ถูกต้อง ตัวอย่างเช่น คำขอที่มีคีย์มากกว่าจำนวนที่อนุญาต (2000) จะส่งกลับข้อความแสดงข้อผิด Param count too large
เผยแพร่เทมเพลตการกำหนดค่าระยะไกล
เมื่อดึงเทมเพลตและแก้ไขด้วยการอัปเดตที่คุณต้องการแล้ว คุณก็สามารถเผยแพร่เทมเพลตได้ การเผยแพร่เทมเพลตตามที่อธิบายไว้ในส่วนนี้จะแทนที่เทมเพลตการกำหนดค่าที่มีอยู่ทั้งหมดด้วยไฟล์ที่อัปเดต และเทมเพลตใหม่ที่ใช้งานอยู่จะได้รับหมายเลขเวอร์ชันหนึ่งที่มากกว่าเทมเพลตที่แทนที่
หากจำเป็น คุณสามารถใช้ REST API เพื่อ ย้อนกลับไปเป็นเวอร์ชันก่อนหน้าได้ เพื่อลดความเสี่ยงของข้อผิดพลาดในการอัปเดต คุณสามารถ ตรวจสอบก่อนที่จะเผยแพร่
การกำหนดค่าส่วนบุคคลและเงื่อนไขการกำหนดค่าระยะไกลจะรวมอยู่ในเทมเพลตที่ดาวน์โหลด ดังนั้นจึงควรคำนึงถึงข้อจำกัดต่อไปนี้เมื่อพยายามเผยแพร่ไปยังโปรเจ็กต์อื่น:
การตั้งค่าส่วนบุคคลไม่สามารถนำเข้าจากโปรเจ็กต์หนึ่งไปอีกโปรเจ็กต์ได้
ตัวอย่างเช่น หากคุณเปิดใช้งานการปรับเปลี่ยนในแบบของคุณในโปรเจ็กต์ของคุณและดาวน์โหลดและแก้ไขเทมเพลต คุณสามารถเผยแพร่ไปยังโปรเจ็กต์เดียวกันได้ แต่คุณไม่สามารถเผยแพร่ไปยังโปรเจ็กต์อื่นได้ เว้นแต่คุณจะลบการกำหนดค่าส่วนบุคคลออกจากเทมเพลต
สามารถนำเข้าเงื่อนไขจากโปรเจ็กต์หนึ่งไปอีกโปรเจ็กต์ได้ แต่โปรดทราบว่าค่าเงื่อนไขเฉพาะใดๆ (เช่น รหัสแอปหรือกลุ่มเป้าหมาย) ควรมีอยู่ในโปรเจ็กต์เป้าหมายก่อนที่จะเผยแพร่
ตัวอย่างเช่น หากคุณมีพารามิเตอร์การกำหนดค่าระยะไกลที่ใช้เงื่อนไขที่ระบุค่าแพลตฟอร์มของ
iOS
เทมเพลตสามารถเผยแพร่ไปยังโปรเจ็กต์อื่นได้ เนื่องจากค่าแพลตฟอร์มจะเหมือนกันสำหรับโปรเจ็กต์ใดๆ อย่างไรก็ตาม หากมีเงื่อนไขที่ต้องอาศัยรหัสแอปหรือกลุ่มเป้าหมายเฉพาะที่ไม่มีอยู่ในโปรเจ็กต์เป้าหมาย การตรวจสอบความถูกต้องจะล้มเหลวหากเทมเพลตที่คุณวางแผนจะเผยแพร่มีเงื่อนไขที่ต้องอาศัย Google Analytics จะต้องเปิดใช้งาน Analytics ในโปรเจ็กต์เป้าหมาย
โหนด 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
ส่วนนี้จะอธิบายความสามารถหลักของ Remote Config REST API ที่ https://firebaseremoteconfig.googleapis.com
สำหรับรายละเอียดทั้งหมด โปรดดูที่ การอ้างอิง API
รับโทเค็นการเข้าถึงเพื่อตรวจสอบสิทธิ์และให้สิทธิ์คำขอ API
โปรเจ็กต์ Firebase รองรับ บัญชีบริการ ของ Google ซึ่งคุณสามารถใช้เรียก API ของเซิร์ฟเวอร์ Firebase จากเซิร์ฟเวอร์แอปของคุณหรือสภาพแวดล้อมที่เชื่อถือได้ หากคุณกำลังพัฒนาโค้ดในเครื่องหรือปรับใช้แอปพลิเคชันภายในองค์กร คุณสามารถใช้ข้อมูลประจำตัวที่ได้รับผ่านบัญชีบริการนี้เพื่ออนุญาตคำขอของเซิร์ฟเวอร์ได้
หากต้องการตรวจสอบสิทธิ์บัญชีบริการและอนุญาตให้เข้าถึงบริการ Firebase คุณต้องสร้างไฟล์คีย์ส่วนตัวในรูปแบบ JSON
หากต้องการสร้างไฟล์คีย์ส่วนตัวสำหรับบัญชีบริการของคุณ:
ในคอนโซล Firebase ให้เปิด การตั้งค่า > บัญชีบริการ
คลิก สร้างคีย์ส่วนตัวใหม่ จากนั้นยืนยันโดยคลิก สร้างคีย์ส่วนตัว
จัดเก็บไฟล์ JSON ที่มีคีย์อย่างปลอดภัย
เมื่ออนุญาตผ่านบัญชีบริการ คุณมีสองทางเลือกในการให้ข้อมูลประจำตัวแก่แอปพลิเคชันของคุณ คุณสามารถตั้งค่าตัวแปรสภาพแวดล้อม GOOGLE_APPLICATION_CREDENTIALS หรือคุณสามารถส่งเส้นทางไปยังรหัสบัญชีบริการอย่างชัดเจนในโค้ด ตัวเลือกแรกมีความปลอดภัยมากกว่าและขอแนะนำอย่างยิ่ง
ในการตั้งค่าตัวแปรสภาพแวดล้อม:
ตั้งค่าตัวแปรสภาพแวดล้อม GOOGLE_APPLICATION_CREDENTIALS เป็นเส้นทางไฟล์ของไฟล์ JSON ที่มีคีย์บัญชีบริการของคุณ ตัวแปรนี้ใช้กับเซสชันเชลล์ปัจจุบันของคุณเท่านั้น ดังนั้นหากคุณเปิดเซสชันใหม่ ให้ตั้งค่าตัวแปรอีกครั้ง
ลินุกซ์หรือ macOS
export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/service-account-file.json"
หน้าต่าง
ด้วย PowerShell:
$env:GOOGLE_APPLICATION_CREDENTIALS="C:\Users\username\Downloads\service-account-file.json"
หลังจากที่คุณทำตามขั้นตอนข้างต้นเสร็จแล้ว Application Default Credentials (ADC) จะระบุข้อมูลรับรองของคุณโดยปริยายได้ ซึ่งทำให้คุณสามารถใช้ข้อมูลรับรองบัญชีบริการเมื่อทดสอบหรือทำงานในสภาพแวดล้อมที่ไม่ใช่ของ Google
ใช้ข้อมูลรับรอง Firebase ของคุณร่วมกับ Google Auth Library สำหรับภาษาที่คุณต้องการเพื่อดึงโทเค็นการเข้าถึง 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
หลาม
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();
}
หลังจากที่โทเค็นการเข้าถึงของคุณหมดอายุ วิธีการรีเฟรชโทเค็นจะถูกเรียกโดยอัตโนมัติเพื่อดึงโทเค็นการเข้าถึงที่อัปเดต
หากต้องการให้สิทธิ์การเข้าถึงการกำหนดค่าระยะไกล โปรดขอขอบเขต https://www.googleapis.com/auth/firebase.remoteconfig
แก้ไขเทมเพลต Remote Config
เมื่อทำงานกับเทมเพลต Remote Config โปรดทราบว่าเทมเพลตเหล่านั้นมีเวอร์ชันแล้ว และแต่ละเวอร์ชันมีอายุการใช้งานที่จำกัดนับตั้งแต่เวลาสร้างจนถึงเวลาที่คุณแทนที่ด้วยการอัปเดต: 90 วัน โดยมีจำนวนเวอร์ชันที่จัดเก็บไว้สูงสุด 300 เวอร์ชัน ดู เทมเพลตและการกำหนดเวอร์ชัน สำหรับข้อมูลเพิ่มเติม
รับเทมเพลตการกำหนดค่าระยะไกลปัจจุบัน
คุณสามารถใช้ API แบ็กเอนด์เพื่อรับเวอร์ชันปัจจุบันของเทมเพลตการกำหนดค่าระยะไกลในรูปแบบ JSON
พารามิเตอร์และค่าพารามิเตอร์ที่สร้างโดยเฉพาะเป็นตัวแปรในการทดสอบ A/B Testing จะไม่รวมอยู่ในเทมเพลตที่ส่งออก
ใช้คำสั่งต่อไปนี้:
ม้วนผม
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 มีข้อผิดพลาดที่คุณต้องแก้ไขก่อนเผยแพร่
อัปเดตเทมเพลตการกำหนดค่าระยะไกล
เมื่อดึงเทมเพลตและแก้ไขเนื้อหา JSON ด้วยการอัปเดตที่คุณต้องการแล้ว คุณก็สามารถเผยแพร่ได้ การเผยแพร่เทมเพลตตามที่อธิบายไว้ในส่วนนี้จะแทนที่เทมเพลตการกำหนดค่าที่มีอยู่ทั้งหมดด้วยไฟล์ที่อัปเดต และเทมเพลตใหม่ที่ใช้งานอยู่จะได้รับหมายเลขเวอร์ชันหนึ่งที่มากกว่าเทมเพลตที่แทนที่
หากจำเป็น คุณสามารถใช้ REST API เพื่อ ย้อนกลับไปเป็นเวอร์ชันก่อนหน้าได้ เพื่อลดความเสี่ยงของข้อผิดพลาดในการอัปเดต คุณสามารถ ตรวจสอบก่อนที่จะเผยแพร่
การกำหนดค่าส่วนบุคคลและเงื่อนไขการกำหนดค่าระยะไกลจะรวมอยู่ในเทมเพลตที่ดาวน์โหลด ดังนั้นจึงควรคำนึงถึงข้อจำกัดต่อไปนี้เมื่อพยายามเผยแพร่ไปยังโปรเจ็กต์อื่น:
การตั้งค่าส่วนบุคคลไม่สามารถนำเข้าจากโปรเจ็กต์หนึ่งไปอีกโปรเจ็กต์ได้
ตัวอย่างเช่น หากคุณเปิดใช้งานการปรับเปลี่ยนในแบบของคุณในโปรเจ็กต์ของคุณและดาวน์โหลดและแก้ไขเทมเพลต คุณสามารถเผยแพร่ไปยังโปรเจ็กต์เดียวกันได้ แต่คุณไม่สามารถเผยแพร่ไปยังโปรเจ็กต์อื่นได้ เว้นแต่คุณจะลบการกำหนดค่าส่วนบุคคลออกจากเทมเพลต
สามารถนำเข้าเงื่อนไขจากโปรเจ็กต์หนึ่งไปอีกโปรเจ็กต์ได้ แต่โปรดทราบว่าค่าเงื่อนไขเฉพาะใดๆ (เช่น รหัสแอปหรือกลุ่มเป้าหมาย) ควรมีอยู่ในโปรเจ็กต์เป้าหมายก่อนที่จะเผยแพร่
ตัวอย่างเช่น หากคุณมีพารามิเตอร์การกำหนดค่าระยะไกลที่ใช้เงื่อนไขที่ระบุค่าแพลตฟอร์มของ
iOS
เทมเพลตสามารถเผยแพร่ไปยังโปรเจ็กต์อื่นได้ เนื่องจากค่าแพลตฟอร์มจะเหมือนกันสำหรับโปรเจ็กต์ใดๆ อย่างไรก็ตาม หากมีเงื่อนไขที่ต้องอาศัยรหัสแอปหรือกลุ่มเป้าหมายเฉพาะที่ไม่มีอยู่ในโปรเจ็กต์เป้าหมาย การตรวจสอบความถูกต้องจะล้มเหลวหากเทมเพลตที่คุณวางแผนจะเผยแพร่มีเงื่อนไขที่ต้องอาศัย Google Analytics จะต้องเปิดใช้งาน Analytics ในโปรเจ็กต์เป้าหมาย
ม้วนผม
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
ถัดไป
แก้ไขเงื่อนไขการกำหนดค่าระยะไกล
คุณสามารถแก้ไขเงื่อนไขการกำหนดค่าระยะไกลและค่าตามเงื่อนไขโดยทางโปรแกรมได้ ด้วย 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 แบ็กเอนด์การกำหนดค่าระยะไกลมีเงื่อนไขและตัวดำเนินการเปรียบเทียบหลายประการที่คุณสามารถใช้เพื่อเปลี่ยนลักษณะการทำงานและรูปลักษณ์ของแอปของคุณได้ หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับเงื่อนไขและตัวดำเนินการที่รองรับเงื่อนไขเหล่านี้ โปรดดู การอ้างอิงนิพจน์เงื่อนไข
รหัสข้อผิดพลาด HTTP
รหัสสถานะ | ความหมาย |
---|---|
200 | อัปเดตเรียบร้อยแล้ว |
400 | เกิดข้อผิดพลาดในการตรวจสอบ ตัวอย่างเช่น คำขอที่มีคีย์มากกว่าจำนวนที่อนุญาต - 2000 - จะส่งกลับ 400 (คำขอไม่ถูกต้อง) พร้อมข้อความแสดงข้อผิดพลาด Param count too large นอกจากนี้ รหัสสถานะ HTTPS นี้สามารถเกิดขึ้นได้ในสองสถานการณ์นี้:
|
401 | เกิดข้อผิดพลาดในการให้สิทธิ์ (ไม่ได้ระบุโทเค็นการเข้าถึงหรือไม่ได้เพิ่ม Firebase Remote Config REST API ในโครงการของคุณใน Cloud Developer Console) |
403 | เกิดข้อผิดพลาดในการตรวจสอบสิทธิ์ (ระบุโทเค็นการเข้าถึงที่ไม่ถูกต้อง) |
500 | เกิดข้อผิดพลาดภายใน หากเกิดข้อผิดพลาดนี้ ให้ยื่นตั๋วสนับสนุน Firebase |
รหัสสถานะ 200 หมายความว่าเทมเพลตการกำหนดค่าระยะไกล (พารามิเตอร์ ค่า และเงื่อนไขสำหรับโปรเจ็กต์) ได้รับการอัปเดตแล้ว และขณะนี้พร้อมใช้งานสำหรับแอพที่ใช้โปรเจ็กต์นี้ รหัสสถานะอื่นๆ ระบุว่าเทมเพลตการกำหนดค่าระยะไกลที่มีอยู่ก่อนหน้านี้ยังคงมีผลใช้งานอยู่
หลังจากที่คุณส่งการอัปเดตไปยังเทมเพลตของคุณแล้ว ให้ไปที่คอนโซล Firebase เพื่อตรวจสอบว่าการเปลี่ยนแปลงของคุณปรากฏตามที่คาดไว้ นี่เป็นสิ่งสำคัญเนื่องจากการเรียงลำดับเงื่อนไขส่งผลต่อวิธีการประเมิน (เงื่อนไขแรกที่ประเมิน true
จะมีผล)
การใช้ ETag และการอัปเดตที่บังคับ
REST API การกำหนดค่าระยะไกลใช้แท็กเอนทิตี (ETag) เพื่อป้องกันสภาพการแข่งขันและการอัปเดตทรัพยากรที่ทับซ้อนกัน หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ ETags โปรดดูที่ ETag - HTTP
สำหรับ REST API นั้น Google ขอแนะนำให้คุณแคช ETag ที่ได้รับจากคำสั่ง GET
ล่าสุด และใช้ค่า ETag นั้นในส่วนหัวคำขอ If-Match
เมื่อออกคำสั่ง PUT
หากคำสั่ง PUT
ของคุณส่งผลให้มีรหัสสถานะ HTTPS 409 คุณควรออกคำสั่ง GET
ใหม่เพื่อรับ ETag และเทมเพลตใหม่เพื่อใช้กับคำสั่ง PUT
ถัดไปของคุณ
คุณสามารถหลีกเลี่ยง ETag และการป้องกันที่มีให้ โดยการบังคับให้อัปเดตเทมเพลต Remote Config ดังต่อไปนี้: If-Match: *
อย่างไรก็ตาม ไม่แนะนำให้ใช้แนวทางนี้เนื่องจากอาจเสี่ยงทำให้การอัปเดต Remote Config ของคุณสูญหาย เทมเพลตหากไคลเอนต์หลายตัวกำลังอัปเดตเทมเพลตการกำหนดค่าระยะไกล ข้อขัดแย้งประเภทนี้อาจเกิดขึ้นได้กับไคลเอ็นต์หลายเครื่องที่ใช้ API หรือกับการอัปเดตที่ขัดแย้งกันจากไคลเอ็นต์ API และผู้ใช้คอนโซล Firebase
สำหรับคำแนะนำในการจัดการเวอร์ชันเทมเพลตการกำหนดค่าระยะไกล โปรดดูที่ เทมเพลตการกำหนดค่าระยะไกลและการกำหนดเวอร์ชัน