คุณสามารถใช้ Firebase Remote Config เพื่อกำหนดพารามิเตอร์ในแอปและอัปเดตค่าในระบบคลาวด์ ทำให้คุณสามารถแก้ไขลักษณะที่ปรากฏและลักษณะการทำงานของแอปได้โดยไม่ต้องกระจายการอัปเดตแอป คู่มือนี้จะแนะนำคุณตลอดขั้นตอนในการเริ่มต้นใช้งานและให้โค้ดตัวอย่างบางส่วน ซึ่งทั้งหมดนี้พร้อมสำหรับการโคลนหรือดาวน์โหลดจากที่เก็บ firebase/quickstart-ios GitHub
ขั้นตอนที่ 1: เพิ่มการกำหนดค่าระยะไกลในแอปของคุณ
ติดตั้ง Firebase SDK สำหรับแพลตฟอร์ม Apple
สร้าง singleton Remote Config object ดังที่แสดงในตัวอย่างต่อไปนี้:
สวิฟต์
remoteConfig = RemoteConfig.remoteConfig() let settings = RemoteConfigSettings() settings.minimumFetchInterval = 0 remoteConfig.configSettings = settings
วัตถุประสงค์-C
self.remoteConfig = [FIRRemoteConfig remoteConfig]; FIRRemoteConfigSettings *remoteConfigSettings = [[FIRRemoteConfigSettings alloc] init]; remoteConfigSettings.minimumFetchInterval = 0; self.remoteConfig.configSettings = remoteConfigSettings;
ออบเจ็กต์นี้ใช้เพื่อเก็บค่าพารามิเตอร์เริ่มต้นในแอป ดึงข้อมูลค่าพารามิเตอร์ที่อัปเดตจากแบ็กเอนด์การกำหนดค่าระยะไกล และควบคุมว่าจะให้ค่าที่ดึงมาพร้อมใช้งานในแอปของคุณเมื่อใด
ในระหว่างการพัฒนา ขอแนะนำให้ตั้งค่าช่วงเวลาการดึงข้อมูลขั้นต่ำที่ค่อนข้างต่ำ ดู การควบคุม สำหรับข้อมูลเพิ่มเติม
ขั้นตอนที่ 2: ตั้งค่าพารามิเตอร์เริ่มต้นในแอป
คุณสามารถตั้งค่าพารามิเตอร์เริ่มต้นในแอปในออบเจ็กต์ Remote Config เพื่อให้แอปทำงานตามที่ตั้งใจไว้ก่อนที่จะเชื่อมต่อกับแบ็กเอนด์การกำหนดค่าระยะไกล และเพื่อให้มีค่าเริ่มต้นหากไม่มีการตั้งค่าไว้ในแบ็กเอนด์
กำหนดชุดของชื่อพารามิเตอร์ และค่าพารามิเตอร์ดีฟอลต์โดยใช้อ็อบเจ็กต์
NSDictionary
หรือ ไฟล์ plistหากคุณได้กำหนดค่าพารามิเตอร์แบ็กเอนด์การกำหนดค่าระยะไกลแล้ว คุณสามารถดาวน์โหลดไฟล์
plist
ที่สร้างขึ้นซึ่งมีค่าเริ่มต้นทั้งหมดและบันทึกลงในโปรเจ็กต์ Xcode ของคุณพักผ่อน
curl --compressed -D headers -H "Authorization: Bearer token -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig:downloadDefaults?format=PLIST -o RemoteConfigDefaults.plist
คอนโซล Firebase
ในแท็บ Parameters ให้เปิด เมนู แล้วเลือก Download default defaults
เมื่อได้รับแจ้ง ให้เปิดใช้งาน .plist สำหรับ iOS จากนั้นคลิก ดาวน์โหลดไฟล์
เพิ่มค่าเหล่านี้ไปยังวัตถุการกำหนดค่าระยะไกลโดยใช้
setDefaults:
ตัวอย่างต่อไปนี้ตั้งค่าเริ่มต้นในแอปจากไฟล์ plist:สวิฟต์
remoteConfig.setDefaults(fromPlist: "RemoteConfigDefaults")
วัตถุประสงค์-C
[self.remoteConfig setDefaultsFromPlistFileName:@"RemoteConfigDefaults"];
ขั้นตอนที่ 3: รับค่าพารามิเตอร์เพื่อใช้ในแอปของคุณ
ตอนนี้ คุณสามารถรับค่าพารามิเตอร์จากวัตถุการกำหนดค่าระยะไกล หากคุณตั้งค่าในภายหลังในแบ็กเอนด์การกำหนดค่าระยะไกล ดึงข้อมูลแล้วเปิดใช้งาน ค่าเหล่านั้นจะพร้อมใช้งานสำหรับแอปของคุณ มิฉะนั้น คุณจะได้รับค่าพารามิเตอร์ในแอปที่กำหนดค่าโดยใช้ setDefaults:
ในการรับค่าเหล่านี้ ให้เรียกเมธอด configValueForKey:
โดยให้คีย์พารามิเตอร์เป็นอาร์กิวเมนต์
ขั้นตอนที่ 4: ตั้งค่าพารามิเตอร์
การใช้คอนโซล Firebase หรือ API แบ็คเอนด์การกำหนดค่าระยะไกล คุณสามารถสร้างค่าเริ่มต้นของแบ็กเอนด์ใหม่ที่แทนที่ค่าในแอปตามตรรกะเงื่อนไขที่คุณต้องการหรือการกำหนดเป้าหมายผู้ใช้ ส่วนนี้จะอธิบายขั้นตอนต่างๆ ของคอนโซล Firebase เพื่อสร้างค่าเหล่านี้
- ใน คอนโซล Firebase เปิดโครงการของคุณ
- เลือก การกำหนดค่าระยะไกล จากเมนูเพื่อดูแดชบอร์ดการกำหนดค่าระยะไกล
- กำหนดพารามิเตอร์ด้วยชื่อเดียวกับพารามิเตอร์ที่คุณกำหนดในแอปของคุณ สำหรับแต่ละพารามิเตอร์ คุณสามารถตั้งค่าเริ่มต้น (ซึ่งจะแทนที่ค่าเริ่มต้นในแอปในที่สุด) และคุณยังสามารถตั้งค่าตามเงื่อนไขได้อีกด้วย หากต้องการเรียนรู้เพิ่มเติม โปรดดูที่ พารามิเตอร์และเงื่อนไขการกำหนดค่าระยะไกล
ขั้นตอนที่ 5: ดึงข้อมูลและเปิดใช้งานค่า
ในการดึงค่าพารามิเตอร์จาก Remote Config ให้เรียกเมธอด fetchWithCompletionHandler:
หรือ fetchWithExpirationDuration:completionHandler:
ค่าใดๆ ที่คุณตั้งไว้บนแบ็กเอนด์จะถูกดึงข้อมูลและแคชไว้ในวัตถุการกำหนดค่าระยะไกล
สำหรับกรณีที่คุณต้องการดึงข้อมูลและเปิดใช้งานค่าในการเรียกครั้งเดียว ให้ใช้ fetchAndActivateWithCompletionHandler:
ตัวอย่างนี้ดึงค่าจากแบ็กเอนด์การกำหนดค่าระยะไกล (ไม่ใช่ค่าที่แคชไว้) และเรียกใช้ activateWithCompletionHandler:
เพื่อให้แอปพร้อมใช้งาน:
สวิฟต์
remoteConfig.fetch { (status, error) -> Void in if status == .success { print("Config fetched!") self.remoteConfig.activate { changed, error in // ... } } else { print("Config not fetched") print("Error: \(error?.localizedDescription ?? "No error available.")") } self.displayWelcome() }
วัตถุประสงค์-C
[self.remoteConfig fetchWithCompletionHandler:^(FIRRemoteConfigFetchStatus status, NSError *error) { if (status == FIRRemoteConfigFetchStatusSuccess) { NSLog(@"Config fetched!"); [self.remoteConfig activateWithCompletion:^(BOOL changed, NSError * _Nullable error) { if (error != nil) { NSLog(@"Activate error: %@", error.localizedDescription); } else { dispatch_async(dispatch_get_main_queue(), ^{ [self displayWelcome]; }); } }]; } else { NSLog(@"Config not fetched"); NSLog(@"Error %@", error.localizedDescription); } }];
เนื่องจากค่าพารามิเตอร์ที่อัปเดตเหล่านี้ส่งผลต่อลักษณะการทำงานและรูปลักษณ์ของแอป คุณจึงควรเปิดใช้งานค่าที่ดึงมาในแต่ละครั้งเพื่อให้แน่ใจว่าผู้ใช้จะได้รับประสบการณ์ที่ราบรื่น เช่น ในครั้งต่อไปที่ผู้ใช้เปิดแอปของคุณ ดู กลยุทธ์การโหลดการกำหนดค่าระยะไกล สำหรับข้อมูลเพิ่มเติมและตัวอย่าง
ขั้นตอนที่ 6: ฟังการอัปเดตตามเวลาจริง
หลังจากที่ดึงค่าพารามิเตอร์แล้ว คุณสามารถใช้การกำหนดค่าระยะไกลแบบเรียลไทม์เพื่อฟังการอัปเดตจากแบ็กเอนด์การกำหนดค่าระยะไกลได้ การกำหนดค่าระยะไกลแบบเรียลไทม์จะส่งสัญญาณไปยังอุปกรณ์ที่เชื่อมต่อเมื่อมีการอัปเดต และจะดึงข้อมูลการเปลี่ยนแปลงโดยอัตโนมัติหลังจากที่คุณเผยแพร่เวอร์ชันการกำหนดค่าระยะไกลใหม่
Firebase SDK รองรับการอัปเดตตามเวลาจริงสำหรับแพลตฟอร์ม Apple v10.7.0+ ขึ้นไป
ในแอปของคุณ ให้เรียก
addOnConfigUpdateListener
เพื่อเริ่มฟังการอัปเดตและดึงค่าพารามิเตอร์ใหม่หรือที่อัปเดตโดยอัตโนมัติ ตัวอย่างต่อไปนี้จะรับฟังการอัปเดต และเมื่อเรียกactivateWithCompletionHandler
ให้ใช้ค่าที่ดึงมาใหม่เพื่อแสดงข้อความต้อนรับที่อัปเดตสวิฟต์
remoteConfig.addOnConfigUpdateListener { configUpdate, error in guard let configUpdate, error == nil else { print("Error listening for config updates: \(error)") } print("Updated keys: \(configUpdate.updatedKeys)") self.remoteConfig.activate { changed, error in guard error == nil else { return self.displayError(error) } DispatchQueue.main.async { self.displayWelcome() } } }
วัตถุประสงค์-C
__weak __typeof__(self) weakSelf = self; [self.remoteConfig addOnConfigUpdateListener:^(FIRRemoteConfigUpdate * _Nonnull configUpdate, NSError * _Nullable error) { if (error != nil) { NSLog(@"Error listening for config updates %@", error.localizedDescription); } else { NSLog(@"Updated keys: %@", configUpdate.updatedKeys); __typeof__(self) strongSelf = weakSelf; [strongSelf.remoteConfig activateWithCompletion:^(BOOL changed, NSError * _Nullable error) { if (error != nil) { NSLog(@"Activate error %@", error.localizedDescription); } dispatch_async(dispatch_get_main_queue(), ^{ [strongSelf displayWelcome]; }); }]; } }];
ครั้งต่อไปที่คุณเผยแพร่ Remote Config เวอร์ชันใหม่ อุปกรณ์ที่กำลังเรียกใช้แอปของคุณและรอฟังการเปลี่ยนแปลงจะเรียกตัวจัดการความสมบูรณ์
การควบคุมปริมาณ
หากดึงข้อมูลแอปหลายครั้งเกินไปในช่วงเวลาสั้นๆ การดึงข้อมูลจะถูกควบคุมและ SDK จะส่งคืน FIRRemoteConfigFetchStatusThrottled
ก่อน SDK เวอร์ชัน 6.3.0 ขีดจำกัดคือคำขอดึงข้อมูล 5 รายการในกรอบเวลา 60 นาที (เวอร์ชันที่ใหม่กว่ามีขีดจำกัดที่อนุญาตมากกว่า)
ในระหว่างการพัฒนาแอป คุณอาจต้องการดึงข้อมูลบ่อยขึ้นเพื่อรีเฟรชแคชบ่อยมาก (หลาย ๆ ครั้งต่อชั่วโมง) เพื่อให้คุณทำซ้ำได้อย่างรวดเร็วในขณะที่คุณพัฒนาและทดสอบแอปของคุณ การอัปเดตการกำหนดค่าระยะไกลตามเวลาจริงจะข้ามแคชโดยอัตโนมัติเมื่อมีการอัปเดตการกำหนดค่าบนเซิร์ฟเวอร์ เพื่อรองรับการวนซ้ำอย่างรวดเร็วในโครงการที่มีนักพัฒนาจำนวนมาก คุณสามารถเพิ่มคุณสมบัติ FIRRemoteConfigSettings
ชั่วคราวด้วยช่วงเวลาการดึงข้อมูลขั้นต่ำที่ต่ำ ( MinimumFetchInterval
) ในแอปของคุณ
ช่วงเวลาการดึงข้อมูลที่ใช้งานจริงเริ่มต้นและที่แนะนำสำหรับการกำหนดค่าระยะไกลคือ 12 ชั่วโมง ซึ่งหมายความว่าจะไม่มีการดึงข้อมูลการกำหนดค่าจากแบ็กเอนด์มากกว่าหนึ่งครั้งในกรอบเวลา 12 ชั่วโมง โดยไม่คำนึงว่ามีการเรียกใช้การดึงข้อมูลกี่ครั้ง โดยเฉพาะอย่างยิ่ง ช่วงเวลาการดึงข้อมูลขั้นต่ำถูกกำหนดตามลำดับต่อไปนี้:
- พารามิเตอร์ใน
fetch(long)
- พารามิเตอร์ใน
FIRRemoteConfigSettings.MinimumFetchInterval
- ค่าเริ่มต้นคือ 12 ชั่วโมง
ขั้นตอนถัดไป
หากคุณยังไม่ได้ดำเนินการ ให้สำรวจ กรณีการใช้งาน การกำหนดค่าระยะไกล และดูที่แนวคิดหลักบางส่วนและเอกสารกลยุทธ์ขั้นสูง รวมถึง: