คุณใช้การกำหนดค่าระยะไกลของ Firebase เพื่อกำหนดพารามิเตอร์ในแอปและอัปเดตค่าในระบบคลาวด์ได้ ซึ่งจะช่วยให้แก้ไขลักษณะและลักษณะการทำงานของแอปได้โดยไม่ต้องเผยแพร่การอัปเดตแอป คู่มือนี้จะอธิบายถึงขั้นตอนในการเริ่มต้นใช้งานและให้โค้ดตัวอย่าง ซึ่งคุณสามารถโคลนหรือดาวน์โหลดได้จากที่เก็บของ firebase/quickstart-js GitHub
ขั้นตอนที่ 1: เพิ่มและเริ่มต้น SDK การกำหนดค่าระยะไกล
ติดตั้ง Firebase JS SDK และเริ่มต้น Firebase หากยังไม่ได้ทำ
เพิ่มการกำหนดค่าระยะไกล JS SDK และเริ่มต้นการกำหนดค่าระยะไกลด้วยคำสั่งต่อไปนี้
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();
ออบเจ็กต์นี้ใช้ในการจัดเก็บค่าพารามิเตอร์เริ่มต้นในแอป ดึงค่าพารามิเตอร์ที่อัปเดตจากแบ็กเอนด์การกำหนดค่าระยะไกล และควบคุมว่าเมื่อค่าที่ดึงมาพร้อมใช้งานสำหรับแอป
ขั้นตอนที่ 2: กำหนดช่วงเวลาการดึงข้อมูลขั้นต่ำ
ในช่วงการพัฒนา ขอแนะนำให้กำหนดช่วงเวลาการดึงข้อมูลขั้นต่ำที่ค่อนข้างต่ำ ดูข้อมูลเพิ่มเติมที่การควบคุม
Web
remoteConfig.settings.minimumFetchIntervalMillis = 3600000;
Web
remoteConfig.settings.minimumFetchIntervalMillis = 3600000;
ขั้นตอนที่ 3: ตั้งค่าพารามิเตอร์เริ่มต้นในแอป
คุณสามารถตั้งค่าพารามิเตอร์เริ่มต้นในแอปในออบเจ็กต์การกำหนดค่าระยะไกลเพื่อให้แอปทำงานตามที่ต้องการก่อนที่จะเชื่อมต่อกับแบ็กเอนด์การกำหนดค่าระยะไกล และเพื่อให้ค่าเริ่มต้นพร้อมใช้งานหากไม่มีการตั้งค่าในแบ็กเอนด์
Web
remoteConfig.defaultConfig = { "welcome_message": "Welcome" };
Web
remoteConfig.defaultConfig = { "welcome_message": "Welcome" };
หากได้กำหนดค่าพารามิเตอร์แบ็กเอนด์ของการกำหนดค่าระยะไกลแล้ว คุณจะดาวน์โหลดไฟล์ 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
- ในแท็บพารามิเตอร์ ให้เปิด เมนู แล้วเลือกดาวน์โหลดค่าเริ่มต้น
- เมื่อมีข้อความแจ้ง ให้เปิดใช้ .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: รับค่าพารามิเตอร์เพื่อใช้ในแอป
ตอนนี้คุณสามารถรับค่าพารามิเตอร์จากออบเจ็กต์การกำหนดค่าระยะไกลได้แล้ว หากคุณตั้งค่าในแบ็กเอนด์ในภายหลัง ให้ดึงข้อมูลแล้วเปิดใช้งานค่าเหล่านั้น ค่าเหล่านั้นจะพร้อมใช้งานสำหรับแอป หากต้องการรับค่าเหล่านี้ ให้เรียกใช้เมธอด getValue()
โดยระบุคีย์พารามิเตอร์เป็นอาร์กิวเมนต์
Web
import { getValue } from "firebase/remote-config"; const val = getValue(remoteConfig, "welcome_messsage");
Web
const val = remoteConfig.getValue("welcome_messsage");
ขั้นตอนที่ 5: ตั้งค่าค่าพารามิเตอร์
เมื่อใช้คอนโซล Firebase หรือ API แบ็กเอนด์ของการกำหนดค่าระยะไกล คุณสามารถสร้างค่าเริ่มต้นฝั่งเซิร์ฟเวอร์ใหม่ๆ ที่ลบล้างค่าในแอปตามตรรกะแบบมีเงื่อนไขหรือการกำหนดเป้าหมายผู้ใช้ที่คุณต้องการ ส่วนนี้จะอธิบายขั้นตอนในคอนโซล Firebase เพื่อสร้างค่าเหล่านี้
- เปิดโปรเจ็กต์ในคอนโซล Firebase
- เลือกการกำหนดค่าระยะไกลจากเมนูเพื่อดูหน้าแดชบอร์ดการกำหนดค่าระยะไกล
- กำหนดพารามิเตอร์ด้วยชื่อเดียวกันกับพารามิเตอร์ที่คุณกำหนดในแอป คุณสามารถกำหนดค่าเริ่มต้นให้กับพารามิเตอร์แต่ละรายการ (ซึ่งสุดท้ายจะแทนที่ค่าเริ่มต้นในแอป) และยังกำหนดค่าตามเงื่อนไขได้ด้วย ดูข้อมูลเพิ่มเติมได้ที่พารามิเตอร์และเงื่อนไขการกำหนดค่าระยะไกล
ขั้นตอนที่ 6: ดึงข้อมูลและเปิดใช้งานค่า
- หากต้องการดึงข้อมูลค่าพารามิเตอร์จากแบ็กเอนด์การกำหนดค่าระยะไกล ให้เรียกใช้เมธอด
fetchConfig()
ค่าที่คุณกำหนดในแบ็กเอนด์จะถูกดึงและแคชในออบเจ็กต์การกำหนดค่าระยะไกล - หากต้องการให้ค่าพารามิเตอร์ที่ดึงมาใช้ได้กับแอป ให้เรียกใช้เมธอด
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
) ในแอปได้
ช่วงเวลาการดึงข้อมูลเวอร์ชันที่ใช้งานจริงเริ่มต้นและที่แนะนำสำหรับการกำหนดค่าระยะไกลคือ 12 ชั่วโมง ซึ่งหมายความว่าระบบจะไม่ดึงข้อมูลการกำหนดค่าจากแบ็กเอนด์มากกว่า 1 ครั้งในกรอบเวลา 12 ชั่วโมง ไม่ว่าจริงจะมีการเรียกใช้การดึงข้อมูลจำนวนเท่าใดก็ตาม โดยเฉพาะอย่างยิ่ง รอบการดึงข้อมูลขั้นต่ำจะกำหนดตามลำดับต่อไปนี้
- พารามิเตอร์ใน
Settings.minimumFetchIntervalMillis
- ค่าเริ่มต้นคือ 12 ชั่วโมง
ขั้นตอนถัดไป
หากยังไม่ทราบข้อมูล ให้ลองดูกรณีการใช้งานการกำหนดค่าระยะไกลและดูแนวคิดหลักบางส่วนและเอกสารกลยุทธ์ขั้นสูงซึ่งได้แก่