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

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

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

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

{
  "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

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

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

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

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

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

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

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

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

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

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

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

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

คอนโซล Firebase

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

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

Firebase CLI

firebase remoteconfig:versions:list

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

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

{
  "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"
  }]

ดึงข้อมูลเทมเพลตการกำหนดค่าระยะไกลเวอร์ชันที่ต้องการ

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

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 จะดึงเทมเพลตที่ใช้งานอยู่ในปัจจุบัน

คอนโซล Firebase

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

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

Firebase CLI

firebase remoteconfig:get -v VERSION_NUMBER

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

ย้อนกลับไปเป็นเทมเพลตการกำหนดค่าระยะไกลเวอร์ชันที่จัดเก็บไว้

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

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

หากต้องการย้อนกลับไปยังเทมเพลตการกำหนดค่าระยะไกลที่จัดเก็บไว้ ให้ออก 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}'

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

คอนโซล Firebase

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

Firebase CLI

firebase remoteconfig:rollback -v VERSION_NUMBER

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

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

คุณลบเทมเพลตการกำหนดค่าระยะไกลออกจากคอนโซล Firebase ได้ วิธีลบเทมเพลตการกำหนดค่าระยะไกล

  1. จากหน้าพารามิเตอร์การกำหนดค่าระยะไกล ให้คลิก ประวัติการเปลี่ยนแปลง

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

  3. เมื่อระบบขอให้ยืนยันการลบ ให้คลิกลบ

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

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

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

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

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

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

วิธีส่งออกและนำเข้าเทมเพลตการกำหนดค่าระยะไกล

  1. ดาวน์โหลดเทมเพลตการกำหนดค่าระยะไกลในปัจจุบัน
  2. ตรวจสอบเทมเพลตการกำหนดค่าระยะไกล
  3. เผยแพร่เทมเพลตการกำหนดค่าระยะไกล

ดาวน์โหลดเทมเพลตการกำหนดค่าระยะไกลปัจจุบัน

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

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

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

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

Firebase CLI

firebase remoteconfig:get -o filename

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

คุณสามารถตรวจสอบการอัปเดตเทมเพลตก่อนที่จะเผยแพร่โดยใช้ 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

ตรวจสอบการอัปเดตเทมเพลตโดยเพิ่มพารามิเตอร์ ?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)

เผยแพร่เทมเพลตการกำหนดค่าระยะไกล

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

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

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

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

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

คอนโซล Firebase

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

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

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

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

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

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

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

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

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

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

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

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

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

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

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการนำเข้าค่าเริ่มต้นการกำหนดค่าระยะไกลไปยังแอปของคุณ โปรดดู