เริ่มต้นใช้งานการกำหนดค่าระยะไกลของ Firebase


คุณใช้ Firebase Remote Config เพื่อกำหนดพารามิเตอร์ในแอปและ อัปเดตค่าในระบบคลาวด์ได้ ซึ่งจะช่วยให้คุณแก้ไขรูปลักษณ์และ ลักษณะการทำงานของแอปได้โดยไม่ต้องเผยแพร่การอัปเดตแอป คู่มือนี้จะแนะนำขั้นตอนการเริ่มต้นใช้งานและแสดงตัวอย่างโค้ดบางส่วน ซึ่งทั้งหมดนี้พร้อมให้โคลนหรือดาวน์โหลดจากที่เก็บ firebase/quickstart-js ใน GitHub

ขั้นตอนที่ 1: เพิ่มและเริ่มต้น Remote Config SDK

  1. หากยังไม่ได้ดำเนินการ ให้ ติดตั้ง Firebase JS SDK และเริ่มต้น Firebase

  2. เพิ่ม Remote Config JS SDK และเริ่มต้น Remote Config ดังนี้

Web

import { initializeApp } from "firebase/app";
import { getRemoteConfig } from "firebase/remote-config";

// TODO: Replace the following with your app's Firebase project configuration
// See: https://firebase.google.com/docs/web/learn-more#config-object
const firebaseConfig = {
  // ...
};

// Initialize Firebase
const app = initializeApp(firebaseConfig);


// Initialize Remote Config and get a reference to the service
const remoteConfig = getRemoteConfig(app);

Web

import firebase from "firebase/compat/app";
import "firebase/compat/remote-config";

// TODO: Replace the following with your app's Firebase project configuration
// See: https://firebase.google.com/docs/web/learn-more#config-object
const firebaseConfig = {
  // ...
};

// Initialize Firebase
firebase.initializeApp(firebaseConfig);


// Initialize Remote Config and get a reference to the service
const remoteConfig = firebase.remoteConfig();

ออบเจ็กต์นี้ใช้เพื่อจัดเก็บค่าพารามิเตอร์เริ่มต้นในแอป ดึงค่าพารามิเตอร์ที่อัปเดตแล้วจากแบ็กเอนด์ Remote Config และควบคุมเวลาที่ค่าที่ดึงมาจะพร้อมใช้งานในแอป

ขั้นตอนที่ 2: กำหนดช่วงเวลาการดึงข้อมูลขั้นต่ำ

ในระหว่างการพัฒนา เราขอแนะนำให้ตั้งค่าช่วงเวลาการดึงข้อมูลขั้นต่ำให้ค่อนข้างต่ำ ดูข้อมูลเพิ่มเติมได้ที่การควบคุม

Web

// The default and recommended production fetch interval for Remote Config is 12 hours
remoteConfig.settings.minimumFetchIntervalMillis = 3600000;

Web

remoteConfig.settings.minimumFetchIntervalMillis = 3600000;

ขั้นตอนที่ 3: ตั้งค่าพารามิเตอร์เริ่มต้นในแอป

คุณตั้งค่าพารามิเตอร์เริ่มต้นในแอปได้ในRemote Config ออบเจ็กต์ เพื่อให้แอปทํางานตามที่ต้องการก่อนที่จะเชื่อมต่อกับแบ็กเอนด์ Remote Config และเพื่อให้ค่าเริ่มต้นพร้อมใช้งานในกรณีที่ไม่ได้ตั้งค่าใดๆ ในแบ็กเอนด์

Web

remoteConfig.defaultConfig = {
  "welcome_message": "Welcome"
};

Web

remoteConfig.defaultConfig = {
  "welcome_message": "Welcome"
};

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

REST

curl --compressed -D headers -H "Authorization: Bearer token" -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig:downloadDefaults?format=JSON -o remote_config_defaults.json

Firebase คอนโซล

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

ตัวอย่างต่อไปนี้แสดง 2 วิธีที่แตกต่างกันในการนําเข้าและตั้งค่าเริ่มต้น ในแอปของคุณ ตัวอย่างแรกใช้ fetch ซึ่งจะทําให้เกิด คําขอ HTTP ไปยังไฟล์ค่าเริ่มต้นที่รวมอยู่ใน App Bundle ของคุณ

  const rcDefaultsFile = await fetch('remote_config_defaults.json');
  const rcDefaultsJson = await rcDefaultsFile.json();
  remoteConfig.defaultConfig = rcDefaultsJson;
  

ตัวอย่างถัดไปใช้ require ซึ่งจะคอมไพล์ค่าลงในแอป ในเวลาบิลด์

  let rcDefaults = require('./remote_config_defaults.json');
  remoteConfig.defaultConfig = rcDefaults;

ขั้นตอนที่ 4: รับค่าพารามิเตอร์เพื่อใช้ในแอป

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

Web

import { getValue } from "firebase/remote-config";

const val = getValue(remoteConfig, "welcome_messsage");

Web

const val = remoteConfig.getValue("welcome_messsage");

ขั้นตอนที่ 5: ตั้งค่าพารามิเตอร์

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

  1. เปิดโปรเจ็กต์ในคอนโซล Firebase
  2. เลือก Remote Config จากเมนูเพื่อดูRemote Config แดชบอร์ด
  3. กําหนดพารามิเตอร์ที่มีชื่อเดียวกับพารามิเตอร์ที่คุณกําหนดไว้ใน แอปของคุณ สําหรับพารามิเตอร์แต่ละรายการ คุณสามารถตั้งค่าเริ่มต้น (ซึ่งจะ ลบล้างค่าเริ่มต้นในแอปในที่สุด) และยังตั้งค่าแบบมีเงื่อนไขได้ด้วย ดูข้อมูลเพิ่มเติมได้ที่ Remote Config พารามิเตอร์และเงื่อนไข
  4. หากใช้เงื่อนไข สัญญาณที่กำหนดเอง ให้กำหนดแอตทริบิวต์และค่าของแอตทริบิวต์ ตัวอย่างต่อไปนี้แสดงวิธี กำหนดเงื่อนไขสัญญาณที่กำหนดเอง

      let customSignals = {
         "city": "Tokyo",
         "preferred_event_category": "sports"
      }
    
      setCustomSignals(config, customSignals);

ขั้นตอนที่ 6: ดึงข้อมูลและเปิดใช้งานค่า

  1. หากต้องการดึงค่าพารามิเตอร์จากแบ็กเอนด์ Remote Config ให้เรียกใช้เมธอด fetchConfig() ระบบจะดึงค่าที่คุณตั้งไว้ในแบ็กเอนด์และแคชไว้ในออบเจ็กต์ Remote Config
  2. หากต้องการทำให้ค่าพารามิเตอร์ที่ดึงข้อมูลมาพร้อมใช้งานในแอป ให้เรียกใช้เมธอด activate()

ในกรณีที่คุณต้องการดึงและเปิดใช้งานค่าในการเรียกครั้งเดียว ให้ใช้ fetchAndActivate() ตามที่แสดงในตัวอย่างนี้

Web

import { fetchAndActivate } from "firebase/remote-config";

fetchAndActivate(remoteConfig)
  .then(() => {
    // ...
  })
  .catch((err) => {
    // ...
  });

Web

remoteConfig.fetchAndActivate()
  .then(() => {
    // ...
  })
  .catch((err) => {
    // ...
  });

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

การควบคุม

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

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

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

  1. พารามิเตอร์ใน Settings.minimumFetchIntervalMillis
  2. ค่าเริ่มต้นคือ 12 ชั่วโมง

ขั้นตอนถัดไป

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