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


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

ส่วนนี้จะอธิบายเทมเพลตที่กำหนดเอง หากต้องการดูข้อมูลเกี่ยวกับเทมเพลต เฉพาะเซิร์ฟเวอร์ ให้คลิก เทมเพลตเซิร์ฟเวอร์

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

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

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

{
  "parameters": {
    "preamble_prompt": {
      "defaultValue": {
        "value": "You are a helpful assistant who knows everything there is to know about Firebase! "
      },
      "description": "Add this prompt to the user's prompt",
      "valueType": "STRING"
    },
    "model_name": {
      "defaultValue": {
        "value": "gemini-pro-test"
      },
      "valueType": "STRING"
    },
    "generation_config": {
      "defaultValue": {
        "value": "{\"temperature\": 0.9, \"maxOutputTokens\": 2048, \"topP\": 0.9, \"topK\": 20}"
      },
      "valueType": "JSON"
    },
  },
  "version": {
    "versionNumber": "19",
    "isLegacy": true
  }
}

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

  • แสดงรายการเวอร์ชันเทมเพลตที่จัดเก็บไว้ทั้งหมด
  • ดึงข้อมูลเวอร์ชันที่เฉพาะเจาะจง
  • ย้อนกลับไปเป็นเวอร์ชันไคลเอ็นต์ที่เฉพาะเจาะจง
  • ลบ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ทุกเวอร์ชันที่จัดเก็บไว้ได้ โดยทำดังนี้

Firebase คอนโซล

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

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

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

    รายละเอียดที่แสดงสำหรับแต่ละเวอร์ชันที่จัดเก็บไว้ประกอบด้วยข้อมูลว่าการเปลี่ยนแปลงเกิดขึ้นจาก Console, 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 <var>token</var>" -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/<var>my-project-id</var>/remoteConfig:listVersions

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

```json
{
  "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. ดู Diff แบบละเอียดของเทมเพลตที่ใช้งานอยู่และเวอร์ชันอื่นๆ ที่จัดเก็บไว้ได้โดย วางเมาส์เหนือเมนูตามบริบทของเวอร์ชันที่ไม่ได้เลือก แล้วเลือกเปรียบเทียบกับเวอร์ชันที่เลือก

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 <var>token</var>" -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/<var>my-project-id</var>/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 <var>token</var>" -H "Content-Type: application/json" -X POST https://firebaseremoteconfig.googleapis.com/v1/projects/<var>my-project-id</var>/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 ที่ใช้งานอยู่ ในรูปแบบ 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 แยกต่างหาก

ตรวจสอบเทมเพลตการกำหนดค่าระยะไกล

คุณสามารถตรวจสอบการอัปเดตเทมเพลตก่อนเผยแพร่ได้โดยใช้ 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. ระบบจะตรวจสอบไฟล์ และหากตรวจสอบสำเร็จ คุณจะคลิกเผยแพร่เพื่อให้การกำหนดค่าพร้อมใช้งานทันทีในแอปและสำหรับผู้ใช้

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 ไปยังแอปได้ที่