จัดการเทมเพลตไคลเอ็นต์และการควบคุมเวอร์ชันของการกำหนดค่าระยะไกล

เลือกประเภทเทมเพลต เทมเพลตฝั่งไคลเอ็นต์ เทมเพลตฝั่งเซิร์ฟเวอร์


เทมเพลต Remote Config คือชุดพารามิเตอร์และเงื่อนไขที่จัดรูปแบบ JSON ซึ่งสร้างขึ้นสำหรับโปรเจ็กต์ Firebase ของคุณ เทมเพลตไคลเอ็นต์จะแสดงการกำหนดค่าไปยังอินสแตนซ์แอปที่ใช้ SDK ไคลเอ็นต์ Firebase สำหรับ Remote Config ซึ่งรวมถึงแอป Apple, Android, เว็บ, Flutter, Unity และ C++

คุณสามารถใช้คอนโซล Firebase เพื่อแก้ไขและจัดการเทมเพลตไคลเอ็นต์ได้ ไปที่ DevOps และการมีส่วนร่วม > การกำหนดค่าระยะไกลเพื่อดูเนื้อหาของเทมเพลตในรูปแบบกราฟิกในหน้าพารามิเตอร์และหน้าเงื่อนไข

นอกจากนี้ คุณยังใช้ Remote Config REST API และ Admin SDK หรือ Firebase CLI เพื่อแก้ไขและจัดการเทมเพลตไคลเอ็นต์ได้ด้วย

ตัวอย่างไฟล์เทมเพลตไคลเอ็นต์มีดังนี้

{
  "conditions": [
    {
      "name": "ios",
      "expression": "device.os == 'ios'"
    }
  ],
  "parameters": {
    "welcome_message": {
      "defaultValue": {
        "value": "Welcome to this sample app"
      },
      "conditionalValues": {
        "ios": {
          "value": "Welcome to this sample iOS app"
        }
      }
    },
    "welcome_message_caps": {
      "defaultValue": {
        "value": "false"
      }
    },
    "header_text": {
      "defaultValue": {
        "useInAppDefault": true
      }
    }
  },
  "version": {
    "versionNumber": "28",
    "updateTime": "2020-05-14T18:39:38.994Z",
    "updateUser": {
      "email": "user@google.com"
    },
    "updateOrigin": "CONSOLE",
    "updateType": "INCREMENTAL_UPDATE"
  }
}

คุณสามารถทำงานด้านการจัดการเวอร์ชันเหล่านี้ได้ในคอนโซล Firebase (ไปที่ DevOps และการมีส่วนร่วม > การกำหนดค่าระยะไกล)

  • แสดงรายการเวอร์ชันเทมเพลตที่จัดเก็บไว้ทั้งหมด
  • ดึงข้อมูลเวอร์ชันที่เฉพาะเจาะจง
  • ย้อนกลับไปใช้เวอร์ชันไคลเอ็นต์ที่เฉพาะเจาะจง
  • ลบเทมเพลต Remote Config รายการจากหน้าประวัติการเปลี่ยนแปลง

นอกจากนี้ คุณยังแสดงรายการเทมเพลต ดึงข้อมูลเทมเพลต และย้อนกลับเทมเพลตได้โดยใช้ CLI ของ Firebase และ API แบ็กเอนด์ของ Remote Config

ขีดจำกัดรวมของเวอร์ชันที่จัดเก็บตลอดอายุการใช้งานคือ 300 เวอร์ชันต่อประเภทเทมเพลต (เทมเพลตฝั่งไคลเอ็นต์ 300 รายการและเทมเพลตฝั่งเซิร์ฟเวอร์ 300 รายการ) ซึ่งรวมถึงหมายเลขเวอร์ชันที่จัดเก็บไว้สำหรับเทมเพลตที่ลบไปแล้ว หากคุณเผยแพร่เทมเพลตมากกว่า 300 เวอร์ชันต่อประเภทเทมเพลตตลอดอายุการใช้งานของโปรเจ็กต์ ระบบจะลบเวอร์ชันแรกสุดออก โดยคงเวอร์ชันของประเภทนั้นไว้สูงสุด 300 เวอร์ชัน

ทุกครั้งที่คุณอัปเดตพารามิเตอร์ Remote Config จะสร้างเทมเพลต Remote Config เวอร์ชันใหม่และจัดเก็บเทมเพลตก่อนหน้าเป็นเวอร์ชันที่คุณสามารถเรียกดูหรือย้อนกลับไปใช้ได้ตามต้องการ หมายเลขเวอร์ชันจะเพิ่มขึ้นตามลำดับจากค่าเริ่มต้นที่ Remote Config จัดเก็บไว้ เทมเพลตทั้งหมดจะมีช่อง version ดังที่แสดง ซึ่งมีข้อมูลเมตาเกี่ยวกับเวอร์ชันที่เฉพาะเจาะจงนั้น

คุณสามารถลบเทมเพลต Remote Config ได้ตามต้องการในหน้าDevOps และการมีส่วนร่วม > การกำหนดค่าระยะไกล > ประวัติการเปลี่ยนแปลงของคอนโซล Firebase

จัดการเวอร์ชันเทมเพลต Remote Config รายการ

ส่วนนี้จะอธิบายวิธีจัดการเวอร์ชันของเทมเพลต Remote Config

ดูรายละเอียดเพิ่มเติมเกี่ยวกับวิธีสร้าง แก้ไข และบันทึกเทมเพลตแบบเป็นโปรแกรมได้ที่แก้ไข Remote Config แบบเป็นโปรแกรม

แสดงรายการเทมเพลต Remote Config เวอร์ชันที่จัดเก็บไว้ทั้งหมด

คุณสามารถเรียกดูรายการเวอร์ชันที่จัดเก็บไว้ทั้งหมดของเทมเพลต Remote Config ได้ โดยทำดังนี้

คอนโซล Firebase

  1. ในคอนโซล Firebase ให้ไปที่หน้า DevOps และการมีส่วนร่วม > การกำหนดค่าระยะไกล > พารามิเตอร์

  2. เลือกไอคอน "นาฬิกา" ที่แสดงที่ด้านขวาบน

    ซึ่งจะเปิดหน้าประวัติการเปลี่ยนแปลงที่แสดงเวอร์ชันเทมเพลตที่จัดเก็บไว้ทั้งหมดในเมนูรายการทางด้านขวา

    รายละเอียดที่แสดงสำหรับแต่ละเวอร์ชันที่จัดเก็บไว้จะรวมข้อมูลว่าการเปลี่ยนแปลงนั้นมาจากคอนโซล Firebase, REST API, การย้อนกลับ หรือเป็นการเปลี่ยนแปลงที่เพิ่มขึ้นจากการบังคับบันทึกเทมเพลต

Firebase CLI

firebase remoteconfig:versions:list

ใช้ตัวเลือก --limit เพื่อจำกัดจำนวนเวอร์ชันที่แสดงผล ส่ง "0" เพื่อดึงข้อมูลทุกเวอร์ชัน

Node.js

function listAllVersions() {
admin.remoteConfig().listVersions()
.then((listVersionsResult) => {
  console.log("Successfully fetched the list of versions");
  listVersionsResult.versions.forEach((version) => {
    console.log('version', JSON.stringify(version));
  });
})
.catch((error) => {
  console.log(error);
});
}

Java

ListVersionsPage page = FirebaseRemoteConfig.getInstance().listVersionsAsync().get();
while (page != null) {
  for (Version version : page.getValues()) {
    System.out.println("Version: " + version.getVersionNumber());
  }
  page = page.getNextPage();
}

// Iterate through all versions. This will still retrieve versions in batches.
page = FirebaseRemoteConfig.getInstance().listVersionsAsync().get();
for (Version version : page.iterateAll()) {
  System.out.println("Version: " + version.getVersionNumber());
}

REST

curl --compressed -D headers -H "Authorization: Bearer token" -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig:listVersions

รายการเทมเพลตประกอบด้วยข้อมูลเมตาสำหรับเวอร์ชันที่จัดเก็บไว้ทั้งหมด ซึ่งรวมถึงเวลาที่อัปเดต ผู้ใช้ที่อัปเดต และวิธีอัปเดต ตัวอย่างขององค์ประกอบเวอร์ชันมีดังนี้

{
  "versions": [{
    "version_number": "6",
    "update_time": "2022-05-12T02:38:54Z",
    "update_user": {
      "name": "Jane Smith",
      "email": "jane@developer.org",
      "imageUrl": "https://lh3.googleusercontent.com/a-/..."
    },
    "description": "One small change on the console",
    "origin": "CONSOLE",
    "update_type": "INCREMENTAL_UPDATE"
  }]
}

ดึงข้อมูลเทมเพลต Remote Config เวอร์ชันที่เฉพาะเจาะจง

คุณสามารถเรียกข้อมูลเทมเพลต Remote Config เวอร์ชันที่จัดเก็บไว้ได้ วิธีเรียกข้อมูลเวอร์ชันเทมเพลตที่จัดเก็บไว้มีดังนี้

คอนโซล Firebase

  1. ในคอนโซล Firebase ให้ไปที่หน้า DevOps และการมีส่วนร่วม > การกำหนดค่าระยะไกล > ประวัติการเปลี่ยนแปลง

  2. โดยค่าเริ่มต้น หน้าเว็บจะแสดงเทมเพลตที่ใช้งานอยู่ในปัจจุบัน หากต้องการดูเวอร์ชันอื่น ให้เลือกเวอร์ชันนั้นจากแผงรายละเอียดทางด้านขวา

  3. ดูความแตกต่างโดยละเอียดของเทมเพลตที่ใช้งานอยู่และเวอร์ชันอื่นๆ ที่จัดเก็บไว้โดยวางเมาส์เหนือเมนูตามบริบทสำหรับเวอร์ชันที่ไม่ได้เลือก แล้วเลือกเปรียบเทียบกับเวอร์ชันที่เลือก

Firebase CLI

firebase remoteconfig:get -v VERSION_NUMBER

นอกจากนี้ คุณยังเขียนเอาต์พุตไปยังไฟล์ที่ระบุด้วย -o, FILENAME ได้ด้วย

Node.js

ส่ง getTemplate โดยไม่มีอาร์กิวเมนต์เพื่อดึงข้อมูลเทมเพลตเวอร์ชันล่าสุด หรือใช้ getTemplateAtVersion เพื่อดึงข้อมูลเวอร์ชันที่เฉพาะเจาะจง

// Get template version: 6
admin.remoteConfig().getTemplateAtVersion('6')
.then((template) => {
console.log("Successfully fetched the template with ETag: " + template.etag);
})
.catch((error) => {
console.log(error);
});

Java

Template template = FirebaseRemoteConfig.getInstance().getTemplateAtVersionAsync(versionNumber).get();
// See the ETag of the fetched template.
System.out.println("Successfully fetched the template with ETag: " + template.getETag());

REST

curl --compressed -D headers -H "Authorization: Bearer token" -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig?version_number=6

พารามิเตอร์ของ URL ?version_number ใช้ได้กับการดำเนินการ GET เท่านั้น คุณไม่สามารถใช้เพื่อระบุหมายเลขเวอร์ชันสำหรับการอัปเดต คำขอ GET ที่คล้ายกันซึ่งไม่มีพารามิเตอร์ ?version_number จะดึงข้อมูลเทมเพลตที่ใช้งานอยู่ในปัจจุบัน

ย้อนกลับไปเป็นเทมเพลต Remote Config เวอร์ชันที่จัดเก็บไว้ที่เฉพาะเจาะจง

คุณสามารถย้อนกลับไปยังเทมเพลตเวอร์ชันใดก็ได้ที่จัดเก็บไว้ วิธีเปลี่ยนกลับเทมเพลตมีดังนี้

คอนโซล Firebase

  1. ในคอนโซล Firebase ให้ไปที่หน้า DevOps และการมีส่วนร่วม > การกำหนดค่าระยะไกล > ประวัติการเปลี่ยนแปลง

  2. ค้นหาปุ่มตัวเลือกที่ด้านขวาบนของหน้าสำหรับเทมเพลตเวอร์ชันก่อนหน้าที่สามารถย้อนกลับได้

  3. คลิกและยืนยันการดำเนินการนี้เฉพาะในกรณีที่คุณแน่ใจว่าต้องการย้อนกลับไปใช้เวอร์ชันนั้นและใช้ค่าเหล่านั้นทันทีสำหรับแอปและผู้ใช้ทั้งหมด

Firebase CLI

firebase remoteconfig:rollback -v VERSION_NUMBER

Node.js

// Roll back to template version: 6
admin.remoteConfig().rollback('6')
  .then((template) => {
    console.log("Successfully rolled back to template version 6.");
    console.log("New ETag: " + template.etag);
  })
  .catch((error) => {
    console.log('Error trying to rollback:', e);
  })

Java

try {
  Template template = FirebaseRemoteConfig.getInstance().rollbackAsync(versionNumber).get();
  System.out.println("Successfully rolled back to template version: " + versionNumber);
  System.out.println("New ETag: " + template.getETag());
} catch (ExecutionException e) {
  if (e.getCause() instanceof FirebaseRemoteConfigException) {
    FirebaseRemoteConfigException rcError = (FirebaseRemoteConfigException) e.getCause();
    System.out.println("Error trying to rollback template.");
    System.out.println(rcError.getMessage());
  }
}

REST

หากต้องการย้อนกลับไปใช้เทมเพลต Remote Config ที่จัดเก็บไว้ ให้ส่ง HTTP POST ด้วยเมธอดที่กำหนดเอง :rollback และในเนื้อหาคำขอ ให้ระบุเวอร์ชันที่ต้องการใช้ เช่น

curl --compressed -D headers -H "Authorization: Bearer token" -H "Content-Type: application/json" -X POST https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig:rollback -d '{"version_number": 6}'

การตอบกลับจะมีเนื้อหาของเทมเพลตที่จัดเก็บไว้ซึ่งตอนนี้ใช้งานอยู่ พร้อมด้วยข้อมูลเมตาเวอร์ชันใหม่

โปรดทราบว่าการดำเนินการย้อนกลับนี้จะสร้างเวอร์ชันที่มีหมายเลขใหม่ ตัวอย่างเช่น การย้อนกลับจากเวอร์ชัน 10 เป็นเวอร์ชัน 6 จะสร้างสำเนาใหม่ของเวอร์ชัน 6 ซึ่งแตกต่างจากเวอร์ชันเดิมตรงที่หมายเลขเวอร์ชันเป็น 11 เวอร์ชัน 6 เดิมจะยังคงจัดเก็บไว้ โดยสมมติว่ายังไม่ถึงวันหมดอายุ และเวอร์ชัน 11 จะกลายเป็นเทมเพลตที่ใช้งานอยู่

ลบเทมเพลต Remote Config

คุณลบเทมเพลต Remote Config ได้โดยใช้คอนโซล Firebase วิธีลบเทมเพลตมีดังนี้

  1. ในคอนโซล Firebase ให้ไปที่หน้า DevOps และการมีส่วนร่วม > การกำหนดค่าระยะไกล > พารามิเตอร์

  2. คลิก ประวัติการเปลี่ยนแปลง

  3. สลับไปยังเทมเพลตที่ต้องการลบ คลิก เพิ่มเติม แล้วเลือกลบ

  4. เมื่อได้รับข้อความแจ้งให้ยืนยันการลบ ให้คลิกลบ

ดาวน์โหลดและเผยแพร่เทมเพลต Remote Config รายการ

ดาวน์โหลดและเผยแพร่เทมเพลต Remote Config เพื่อผสานรวมเข้ากับระบบควบคุมแหล่งที่มาและระบบบิลด์ อัปเดตการกำหนดค่าโดยอัตโนมัติ และซิงค์พารามิเตอร์และค่าต่างๆ ในหลายโปรเจ็กต์

คุณสามารถดาวน์โหลดเทมเพลต Remote Config ที่ใช้งานอยู่ในปัจจุบันแบบเป็นโปรแกรมหรือจากคอนโซล Firebase จากนั้นคุณสามารถอัปเดตไฟล์ JSON ที่ส่งออกและเผยแพร่ไปยังโปรเจ็กต์เดียวกัน หรือเผยแพร่ไปยังโปรเจ็กต์ใหม่หรือโปรเจ็กต์ที่มีอยู่

ตัวอย่างเช่น สมมติว่าคุณมีหลายโปรเจ็กต์ที่แสดงถึงขั้นตอนต่างๆ ของวงจรการพัฒนาซอฟต์แวร์ เช่น สภาพแวดล้อมการพัฒนา การทดสอบ การทดลองใช้ และสภาพแวดล้อมฮาร์ดแวร์และซอฟต์แวร์ ในกรณีนี้ คุณสามารถโปรโมตเทมเพลตที่ผ่านการทดสอบอย่างสมบูรณ์จากสภาพแวดล้อมการทดลองใช้ไปยังสภาพแวดล้อมฮาร์ดแวร์และซอฟต์แวร์ได้โดยการดาวน์โหลดเทมเพลตจากโปรเจ็กต์ทดลองใช้และเผยแพร่ไปยังโปรเจ็กต์ที่ใช้งานจริง

นอกจากนี้ คุณยังใช้วิธีนี้เพื่อย้ายข้อมูลการกำหนดค่าจากโปรเจ็กต์หนึ่งไปยังอีกโปรเจ็กต์หนึ่ง หรือสร้างโปรเจ็กต์ใหม่ด้วยพารามิเตอร์และค่าจากโปรเจ็กต์ที่สร้างไว้แล้วได้ด้วย

พารามิเตอร์และค่าพารามิเตอร์ที่สร้างขึ้นเป็นตัวแปรโดยเฉพาะในการทดสอบ A/B Testing จะไม่รวมอยู่ในเทมเพลตที่ส่งออก

วิธีส่งออกและนำเข้าเทมเพลต Remote Config

  1. ดาวน์โหลดเทมเพลต Remote Config ปัจจุบัน
  2. ตรวจสอบเทมเพลต Remote Config
  3. เผยแพร่เทมเพลต Remote Config

ดาวน์โหลดเทมเพลต Remote Config ปัจจุบัน

ใช้คำสั่งต่อไปนี้เพื่อดาวน์โหลดเทมเพลต Remote Config ที่ใช้งานอยู่ในรูปแบบ JSON

คอนโซล Firebase

  1. ในคอนโซล Firebase ให้ไปที่หน้าDevOps และการมีส่วนร่วม > การกำหนดค่าระยะไกล > พารามิเตอร์หรือเงื่อนไข

  2. เปิด เมนู แล้วเลือกดาวน์โหลดไฟล์การกำหนดค่าปัจจุบัน

  3. เมื่อได้รับข้อความแจ้ง ให้คลิกดาวน์โหลดไฟล์การกำหนดค่า เลือกตำแหน่งที่ต้องการบันทึกไฟล์ แล้วคลิกบันทึก

Firebase CLI

firebase remoteconfig:get -o filename

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());

REST

curl --compressed -D headers -H "Authorization: Bearer token" -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig -o filename

คำสั่งนี้จะแสดงเอาต์พุตจากคำสั่งเพย์โหลด JSON ไปยังไฟล์เดียว และส่วนหัว (รวมถึง ETag) ไปยังไฟล์ headers แยกต่างหาก

ตรวจสอบเทมเพลต Remote Config

คุณสามารถตรวจสอบการอัปเดตเทมเพลตก่อนเผยแพร่ได้โดยใช้ Firebase Admin SDK หรือ REST API นอกจากนี้ ระบบจะตรวจสอบเทมเพลตเมื่อคุณพยายามเผยแพร่จาก Firebase CLI หรือคอนโซล Firebase ด้วย

กระบวนการตรวจสอบเทมเพลตจะตรวจหาข้อผิดพลาด เช่น คีย์ที่ซ้ำกันสำหรับพารามิเตอร์และเงื่อนไข ชื่อเงื่อนไขที่ไม่ถูกต้องหรือเงื่อนไขที่ไม่มีอยู่ หรือ ETag ที่จัดรูปแบบไม่ถูกต้อง ตัวอย่างเช่น คำขอที่มีคีย์เกินจำนวนที่อนุญาต (2,000 คีย์) จะแสดงข้อความแสดงข้อผิดพลาด Param count too large

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());
  }
}

REST

ตรวจสอบการอัปเดตเทมเพลตโดยเพิ่มพารามิเตอร์ของ URL ?validate_only=true ต่อท้ายคำขอเผยแพร่ ดังนี้

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?validate_only=true -d @filename

หากตรวจสอบเทมเพลตสำเร็จ คำสั่ง curl จะแสดงผลเทมเพลต JSON ที่คุณส่ง และในไฟล์ headers ที่บันทึกไว้ คุณจะเห็นสถานะ HTTP/2 200 และ ETag ที่อัปเดตซึ่งมีคำต่อท้าย -0 หากเทมเพลตไม่ได้รับการตรวจสอบ คุณจะได้รับข้อผิดพลาดในการตรวจสอบในการตอบกลับ JSON และไฟล์ headers จะมีการตอบกลับที่ไม่ใช่ 200 (และไม่มี ETag)

เผยแพร่เทมเพลต Remote Config

หลังจากดาวน์โหลดเทมเพลต ทำการเปลี่ยนแปลงที่จำเป็นกับเนื้อหา JSON และตรวจสอบแล้ว คุณจะเผยแพร่เทมเพลตไปยังโปรเจ็กต์ได้

การเผยแพร่เทมเพลตจะแทนที่เทมเพลตการกำหนดค่าที่มีอยู่ทั้งหมดด้วยไฟล์ที่อัปเดตและเพิ่มเวอร์ชันเทมเพลตทีละ 1 เวอร์ชัน เนื่องจากระบบจะแทนที่การกำหนดค่าทั้งหมด หากคุณลบพารามิเตอร์ออกจากไฟล์ JSON และเผยแพร่ ระบบจะลบพารามิเตอร์ออกจากเซิร์ฟเวอร์และไคลเอ็นต์จะใช้พารามิเตอร์ดังกล่าวไม่ได้อีกต่อไป

หลังจากเผยแพร่แล้ว การเปลี่ยนแปลงพารามิเตอร์และค่าต่างๆ จะพร้อมใช้งานในแอปและสำหรับผู้ใช้ทันที หากจำเป็น คุณสามารถย้อนกลับไปใช้เวอร์ชันก่อนหน้าได้

ใช้คำสั่งต่อไปนี้เพื่อเผยแพร่เทมเพลต

คอนโซล Firebase

  1. ในคอนโซล Firebase ให้ไปที่หน้าDevOps และการมีส่วนร่วม > การกำหนดค่าระยะไกล > พารามิเตอร์หรือเงื่อนไข

  2. เปิด เมนู แล้วเลือกเผยแพร่จากไฟล์

  3. เมื่อมีข้อความแจ้ง ให้คลิกเรียกดู ไปที่ไฟล์ Remote Config ที่ต้องการเผยแพร่ แล้วคลิกเลือก

  4. Firebase จะตรวจสอบไฟล์ หากการตรวจสอบสำเร็จ ให้คลิกเผยแพร่เพื่อให้แอปและผู้ใช้ใช้การกำหนดค่าได้ทันที

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

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 นี้ คุณสามารถระบุเนื้อหาได้โดยใช้อักขระ "@" ตามด้วยชื่อไฟล์

การปรับเปลี่ยนในแบบของคุณและเงื่อนไขของ Remote Config จะรวมอยู่ในเทมเพลตที่ดาวน์โหลด ดังนั้นคุณจึงควรทราบข้อจำกัดต่อไปนี้เมื่อพยายามเผยแพร่ไปยังโปรเจ็กต์อื่น

  • ไม่สามารถนำเข้าการปรับเปลี่ยนในแบบของคุณจากโปรเจ็กต์หนึ่งไปยังอีกโปรเจ็กต์หนึ่งได้

    ตัวอย่างเช่น หากคุณเปิดใช้การปรับเปลี่ยนในแบบของคุณในโปรเจ็กต์ รวมถึงดาวน์โหลดและแก้ไขเทมเพลต คุณจะเผยแพร่เทมเพลตนั้นไปยังโปรเจ็กต์เดียวกันได้ แต่จะเผยแพร่ไปยังโปรเจ็กต์อื่นไม่ได้ เว้นแต่คุณจะลบการปรับเปลี่ยนในแบบของคุณออกจากเทมเพลต

  • คุณสามารถนำเข้าเงื่อนไขจากโปรเจ็กต์หนึ่งไปยังอีกโปรเจ็กต์หนึ่งได้ แต่โปรดทราบว่าค่าเงื่อนไขที่เฉพาะเจาะจง (เช่น รหัสแอปหรือกลุ่มเป้าหมาย) ควรมีอยู่ในโปรเจ็กต์เป้าหมายก่อนเผยแพร่

    ตัวอย่างเช่น หากคุณมีพารามิเตอร์ Remote Config ที่ใช้เงื่อนไขซึ่งระบุค่าแพลตฟอร์มเป็น iOS คุณจะเผยแพร่เทมเพลตไปยังโปรเจ็กต์อื่นได้ เนื่องจากค่าแพลตฟอร์มจะเหมือนกันสำหรับทุกโปรเจ็กต์ อย่างไรก็ตาม หากมีเงื่อนไขที่อาศัยรหัสแอปหรือกลุ่มเป้าหมายของผู้ใช้ที่เฉพาะเจาะจงซึ่งไม่มีอยู่ในโปรเจ็กต์เป้าหมาย การตรวจสอบจะล้มเหลว

  • หากเทมเพลตที่คุณวางแผนจะเผยแพร่มีเงื่อนไขที่ต้องใช้ Google Analytics คุณต้องเปิดใช้ Analytics ในโปรเจ็กต์เป้าหมาย

ดาวน์โหลดค่าเริ่มต้นของเทมเพลต Remote Config รายการ

เนื่องจากแอปอาจไม่ได้เชื่อมต่ออินเทอร์เน็ตเสมอไป คุณจึงควรกำหนดค่าเริ่มต้นของแอปฝั่งไคลเอ็นต์สำหรับพารามิเตอร์ Remote Config ทั้งหมด นอกจากนี้ คุณควรซิงค์ค่าเริ่มต้นของไคลเอ็นต์แอปและค่าพารามิเตอร์เริ่มต้นของแบ็กเอนด์ Remote Config เป็นระยะๆ เนื่องจากค่าเหล่านี้อาจเปลี่ยนแปลงเมื่อเวลาผ่านไป

ตามที่อธิบายไว้ในลิงก์เฉพาะแพลตฟอร์มที่ส่วนท้ายของส่วนนี้ คุณสามารถตั้งค่าเริ่มต้นเหล่านี้ในแอปด้วยตนเอง หรือจะปรับปรุงกระบวนการนี้ให้มีประสิทธิภาพมากขึ้นโดยการดาวน์โหลดไฟล์ที่มีเฉพาะคู่คีย์-ค่าสำหรับพารามิเตอร์ทั้งหมดและค่าเริ่มต้นในเทมเพลต Remote Config ที่ใช้งานอยู่ก็ได้ จากนั้นคุณสามารถรวมไฟล์นี้ไว้ในโปรเจ็กต์และกำหนดค่าแอปเพื่อนำเข้าค่าเหล่านี้

คุณสามารถดาวน์โหลดไฟล์เหล่านี้ในรูปแบบ XML สำหรับแอป Android, รูปแบบรายการพร็อพเพอร์ตี้ (plist) สำหรับแอป iOS และ JSON สำหรับเว็บแอป

ดาวน์โหลดค่าเริ่มต้นของ Remote Config เป็นระยะๆ ก่อนที่จะเผยแพร่แอปใหม่เพื่อให้มั่นใจว่าแอปและแบ็กเอนด์ของ Remote Config ซิงค์กันอยู่เสมอ

วิธีดาวน์โหลดไฟล์ที่มีค่าเริ่มต้นของเทมเพลตมีดังนี้

REST

curl --compressed -D headers -H "Authorization: Bearer token -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig:downloadDefaults?format=file_format'

ใช้ XML, PLIST หรือ JSON เป็นค่า format โดยขึ้นอยู่กับรูปแบบไฟล์ที่ต้องการดาวน์โหลด

คอนโซล Firebase

  1. ในคอนโซล Firebase ให้ไปที่หน้า DevOps และการมีส่วนร่วม > การกำหนดค่าระยะไกล > พารามิเตอร์

  2. เปิด เมนู แล้วเลือกดาวน์โหลดค่าเริ่มต้น

  3. เมื่อได้รับข้อความแจ้ง ให้คลิกปุ่มตัวเลือกที่ตรงกับรูปแบบไฟล์ที่ต้องการดาวน์โหลด แล้วคลิกดาวน์โหลดไฟล์

ดูข้อมูลเพิ่มเติมเกี่ยวกับการนำเข้าค่าเริ่มต้นของ Remote Config ไปยังแอปได้ที่หัวข้อต่อไปนี้