Firebase Remote Config ช่วยให้คุณควบคุมลักษณะการทำงาน และลักษณะที่ปรากฏของแอปได้อย่างยืดหยุ่น ซึ่งจะช่วยให้คุณใช้ความสามารถต่างๆ เช่น การเปิดตัวฟีเจอร์และการทดสอบ A/B แบบข้ามแพลตฟอร์มสำหรับแอปได้ โดยไม่ต้องติดตั้งใช้งานเวอร์ชันใหม่หรือ อัปเดต App Store หลายครั้ง
ไม่ว่าคุณจะกำลังสร้างต้นแบบ ดำเนินธุรกิจสตาร์ทอัพที่กำลังเติบโต หรือจัดการแอปพลิเคชันระดับองค์กรที่ปรับขนาดได้ การจัดการปริมาณการดึงข้อมูลจากเครือข่ายเป็นกุญแจสำคัญในการมอบประสบการณ์ของผู้ใช้ที่รวดเร็วและตอบสนองได้ดี การจัดการการกำหนดค่าที่มีประสิทธิภาพจะช่วยลดเวลาในการตอบสนองของการเริ่มระบบครั้งแรก ประหยัดการใช้งานแบตเตอรี่และข้อมูลของไคลเอ็นต์ และป้องกันค่าใช้จ่ายที่ไม่จำเป็นของเครือข่าย นอกจากนี้ หากฐานผู้ใช้ของคุณขยายตัวอย่างรวดเร็วและ ทำให้การใช้งานเพิ่มขึ้นในอนาคต การเพิ่มประสิทธิภาพRemote Configการผสานรวม จะช่วยให้การใช้งานของคุณมีประสิทธิภาพอยู่เสมอ
คุณลดการเข้าชมคำขอเครือข่ายฝั่งไคลเอ็นต์ได้อย่างมากด้วยการปรับแต่งวิธี และเวลาที่แอปดึงพารามิเตอร์ รวมถึงเวลาที่แอปเปิดใช้งานพารามิเตอร์
เปลี่ยนไปใช้รูปแบบ "ดึงข้อมูลสำหรับเซสชันถัดไป"
รูปแบบที่ควรหลีกเลี่ยงคือการใช้การเรียก fetchAndActivate ซึ่งทั้ง
ดึงค่าใหม่ผ่านเครือข่ายและเปิดใช้งานค่าเหล่านั้นทุกครั้งที่เปิดแอป
รวมกับระยะเวลาหมดอายุของแคชสั้นๆ สำหรับค่าที่ดึงมาก่อนหน้านี้ (เช่น
15 นาทีถึง 1 ชั่วโมง) แนวคิดเบื้องหลังแนวทางนี้คือ
ทุกครั้งที่ผู้ใช้เปิดแอป ระบบจะดึงและใช้ค่าล่าสุดเสมอ
แม้ว่าบางครั้งการอัปเดตทันทีอาจจำเป็น
(เช่น การเรียกใช้แคมเปญลดราคาประจำวันหรือโปรโมตเกม) แต่สิ่งสำคัญคือ
การรักษาสมดุลเป้าหมายดังกล่าวกับผลกระทบต่อประสิทธิภาพของแอปและการใช้งานการดึงข้อมูล
วิธีนี้จะบังคับให้มีการเรียกเครือข่ายใหม่ทุกครั้งที่แคชหมดอายุ ซึ่งจะสร้างปริมาณการดึงข้อมูลสูงสำหรับผู้ใช้ที่เปิดแอปหลายครั้งต่อวัน
แต่ให้ลองใช้การเรียก fetch และ activate แยกกันโดยมี
ช่วงเวลาการดึงข้อมูลขั้นต่ำที่สูงขึ้นเพื่อใช้รูปแบบ "ดึงข้อมูลสำหรับเซสชันถัดไป" คุณยังคงใช้ fetchAndActivate ที่มีช่วงเวลาการดึงข้อมูลขั้นต่ำที่สูงขึ้นได้ เนื่องจาก fetch จะ
ดำเนินการคำขอของเครือข่ายก็ต่อเมื่อแคชไม่ถูกต้อง แต่การใช้การเรียกทั้ง 2 รายการ
แยกกันจะช่วยเสริมรูปแบบและกำหนดให้เป็นแนวทางปฏิบัติมาตรฐานใน
กระบวนการพัฒนาแอปพลิเคชัน นอกจากนี้ การเปิดใช้งานแยกกันจะช่วยให้คุณไม่ต้องเสี่ยงต่อการใช้ค่าการกำหนดค่ากลางเซสชันและขัดขวางประสบการณ์ของผู้ใช้
วิธีการทำงานของแนวทางนี้
- เปิดใช้งานทันทีเมื่อเปิดตัว: ใช้การกำหนดค่าที่แคชจากเซสชันก่อนหน้าทันที (ความล่าช้าของเครือข่าย 0 มิลลิวินาที)
- ดึงข้อมูลในเบื้องหลังด้วยแคชที่นานขึ้น (เช่น นานกว่า 12 หรือ 24 ชั่วโมง): ขอการกำหนดค่าที่อัปเดตแบบไม่พร้อมกันเพื่อรีเฟรชแคชในเครื่องสำหรับเซสชันถัดไป
วิธีเพิ่มประสิทธิภาพระดับเสียงการดึงข้อมูล
ช่วงเวลาการดึงข้อมูลขั้นต่ำที่นานขึ้นจะส่งผลให้มีคำขอการดึงข้อมูลน้อยลง การดึงค่าใหม่สำหรับเซสชันถัดไปและการเปิดใช้งานค่าที่แคชไว้สำหรับเซสชันปัจจุบัน หมายความว่าแอปจะโหลดจากแคชในเครื่องได้ทันทีในช่วงระยะเวลาการตรวจสอบที่นานขึ้น ซึ่งจะส่งผลให้ผู้ใช้ได้รับประสบการณ์ที่ดีขึ้น
ตัวอย่างเช่น หากตั้งค่า minimumFetchInterval เป็น 24 ชั่วโมง และผู้ใช้เปิดแอปของคุณ 5 หรือ 10 ครั้งในวันเดียว SDK จะเปิดแอปครั้งที่ 2-10 โดยอัตโนมัติจากแคชในเครื่อง ซึ่งจะลดจำนวนคำขอเครือข่ายรายวันของผู้ใช้รายนั้นจาก 10 ครั้งขึ้นไปเหลือเพียง 1 ครั้ง
ตัวอย่างต่อไปนี้แสดงลักษณะการติดตั้งใช้งานนี้สำหรับ Android แพลตฟอร์ม Apple และเว็บแอป
Android
val remoteConfig = Firebase.remoteConfig // Set a 24-hour minimum fetch interval (86,400 seconds) val configSettings = remoteConfigSettings { minimumFetchIntervalInSeconds = 86400 } remoteConfig.setConfigSettingsAsync(configSettings) // 1. Instantly activate values cached from the LAST session remoteConfig.activate().addOnCompleteListener { applyAppConfigurations() } // 2. Fetch new values in the background for the NEXT session remoteConfig.fetch().addOnCompleteListener { task -> if (task.isSuccessful) { // Optional: Activate values if needed } }
iOS+
let remoteConfig = RemoteConfig.remoteConfig() // Set a 24-hour minimum fetch interval (86,400 seconds) let settings = RemoteConfigSettings() settings.minimumFetchInterval = 86400 remoteConfig.configSettings = settings // 1. Instantly activate values cached from the LAST session remoteConfig.activate { changed, error in guard error == nil else { return } DispatchQueue.main.async { self.applyAppConfigurations() } } // 2. Fetch new values in the background for the NEXT session remoteConfig.fetch { status, error in if status == .success { // Optional: Activate values if needed } }
เว็บ
import { getRemoteConfig, fetchConfig, activate } from "firebase/remote-config"; const remoteConfig = getRemoteConfig(app); // Set a 24-hour minimum fetch interval (86,400,000 ms) remoteConfig.settings.minimumFetchIntervalMillis = 86400000; // 1. Instantly activate values cached from the LAST session activate(remoteConfig).then(() => { applyAppConfigurations(); }); // 2. Fetch new values in the background for the NEXT session fetchConfig(remoteConfig).then(() => { // Optional: Activate values if needed });
ใช้การดึงข้อมูลแบบ "อัจฉริยะ" แบบมีเงื่อนไข
หากรูปแบบ "ดึงข้อมูลสำหรับเซสชันถัดไป" ทำให้เกิดเวลาในการตอบสนองมากเกินไประหว่างเวลาที่คุณต้องอัปเดตค่า Remote Config กับเวลาที่ค่าเหล่านั้นพร้อมใช้งานในแอปไคลเอ็นต์ ให้ลองใช้การดึงข้อมูล "อัจฉริยะ" แบบมีเงื่อนไข
หากต้องการใช้ฟีเจอร์นี้อย่างมีประสิทธิภาพ ให้หลีกเลี่ยงการแนบfetchทริกเกอร์กับฮุกวงจร UI
แบบกว้าง เช่น ทุกครั้งที่หน้าจอโหลด แท็บเปลี่ยน หรือมุมมอง
ได้รับโฟกัส
แต่ให้ทริกเกอร์คำขอเรียกข้อมูลแบบเลือกตามการกระทำหรือสถานะของแอปที่ชัดเจน เช่น
- เหตุการณ์การลงชื่อเข้าใช้ของผู้ใช้
- เปลี่ยนไปใช้โฟลว์ของผู้ใช้ที่เฉพาะเจาะจงซึ่งมีการใช้พารามิเตอร์ (เช่น เข้าสู่ Funnel การชำระเงินหรือเลื่อนระดับในเกม)
ในทางกลับกัน ให้หลีกเลี่ยงการทริกเกอร์คำขอเรียกข้อมูลสำหรับการดำเนินการตามปกติ เช่น
- เมื่อผู้ใช้เปิดแอปหรือเริ่มเซสชันใหม่
- เมื่อแอปเปลี่ยนสถานะระหว่างพื้นหลังกับส่วนหน้า