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

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


Remote Config คือชุดพารามิเตอร์และเงื่อนไขที่จัดรูปแบบ JSON ซึ่งสร้างขึ้นสำหรับโปรเจ็กต์ Firebase เทมเพลตไคลเอ็นต์จะแสดงการกำหนดค่าต่ออินสแตนซ์ของแอปที่ใช้ Firebase Client SDK สำหรับ 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เทมเพลตออกจากหน้าประวัติการเปลี่ยนแปลง

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

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

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

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