Catch up on everthing we announced at this year's Firebase Summit. Learn more

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

เทมเพลต 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());
}

พักผ่อน

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

พักผ่อน

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

พักผ่อน

ย้อนกลับไปที่ระยะไกล 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 กลายเป็นเทมเพลตที่ใช้งานอยู่