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

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

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

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

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

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

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

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

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

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

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>:listVersions

คอนโซล Firebase

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

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

Firebase CLI

firebase remoteconfig:versions:list

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

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

{
  "versions": [{
    "version_number": "6",
    "update_time": "2018-05-12T02:38:54Z",
    "update_user": {
      "email": "jane@developer.org",
    },
    "description": "One small change on the console",
    "origin": "CONSOLE",
    "update_type": "INCREMENTAL_UPDATE"
  }]

เรียกเวอร์ชันเฉพาะของเทมเพลต Remote Config

คุณสามารถดึงเทมเพลต Remote Config เวอร์ชันใด ๆ ที่เก็บไว้ได้ ตัวอย่างเช่น:

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</pre>

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

คอนโซล Firebase

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

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

Firebase CLI

firebase remoteconfig:get -v VERSION_NUMBER

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

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

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

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

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

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

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

คอนโซล Firebase

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

Firebase CLI

firebase remoteconfig:rollback -v VERSION_NUMBER

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