คุณสามารถใช้ Firebase Remote Config เพื่อกำหนดพารามิเตอร์ในแอปและอัปเดตค่าในระบบคลาวด์ ซึ่งช่วยให้คุณปรับเปลี่ยนรูปลักษณ์และลักษณะการทำงานของแอปได้โดยไม่ต้องกระจายการอัปเดตแอป คู่มือนี้จะอธิบายขั้นตอนต่างๆ ในการเริ่มต้นใช้งานและให้โค้ดตัวอย่างบางส่วน ซึ่งทั้งหมดนี้พร้อมให้โคลนหรือดาวน์โหลดได้จากที่เก็บ firebase/quickstart-ios GitHub
ขั้นตอนที่ 1: เพิ่มการกำหนดค่าระยะไกลให้กับแอปของคุณ
หากคุณยังไม่ได้ เพิ่ม Firebase ในโครงการ Apple ของคุณ
สำหรับการกำหนดค่าระยะไกล จำเป็นต้องใช้ Google Analytics สำหรับ การกำหนดเป้าหมายแบบมีเงื่อนไขของอินสแตนซ์แอป ไปยังพร็อพเพอร์ตี้ผู้ใช้และผู้ชม ตรวจสอบให้แน่ใจว่าคุณ เปิดใช้งาน Google Analytics ในโปรเจ็กต์ของคุณ
สร้างออบเจ็กต์ Singleton Remote Config ดังแสดงในตัวอย่างต่อไปนี้:
สวิฟท์
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: ตั้งค่าพารามิเตอร์เริ่มต้นในแอป
คุณสามารถตั้งค่าพารามิเตอร์เริ่มต้นในแอปได้ในออบเจ็กต์การกำหนดค่าระยะไกล เพื่อให้แอปของคุณทำงานตามที่ตั้งใจก่อนที่จะเชื่อมต่อกับแบ็กเอนด์การกำหนดค่าระยะไกล และเพื่อให้ค่าเริ่มต้นพร้อมใช้งานหากไม่มีการตั้งค่าไว้ในแบ็กเอนด์
กำหนดชุดของชื่อพารามิเตอร์ และค่าพารามิเตอร์เริ่มต้นโดยใช้วัตถุ
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
ในแท็บ พารามิเตอร์ ให้เปิด เมนู และเลือก ดาวน์โหลดค่าเริ่มต้น
เมื่อได้รับแจ้ง ให้เปิดใช้งาน .plist สำหรับ iOS จากนั้นคลิก ดาวน์โหลดไฟล์
เพิ่มค่าเหล่านี้ให้กับอ็อบเจ็กต์ Remote Config โดยใช้
setDefaults:
ตัวอย่างต่อไปนี้ตั้งค่าเริ่มต้นในแอปจากไฟล์ plist:สวิฟท์
remoteConfig.setDefaults(fromPlist: "RemoteConfigDefaults")
วัตถุประสงค์-C
[self.remoteConfig setDefaultsFromPlistFileName:@"RemoteConfigDefaults"];
ขั้นตอนที่ 3: รับค่าพารามิเตอร์เพื่อใช้ในแอปของคุณ
ตอนนี้คุณสามารถรับค่าพารามิเตอร์จากออบเจ็กต์ Remote Config หากคุณตั้งค่าในภายหลังในแบ็กเอนด์การกำหนดค่าระยะไกล ดึงข้อมูล จากนั้นเปิดใช้งาน ค่าเหล่านั้นจะพร้อมใช้งานสำหรับแอปของคุณ มิฉะนั้น คุณจะได้รับค่าพารามิเตอร์ในแอปที่กำหนดค่าโดยใช้ setDefaults:
หากต้องการรับค่าเหล่านี้ ให้เรียกใช้เมธอด configValueForKey:
โดยระบุคีย์พารามิเตอร์เป็นอาร์กิวเมนต์
ขั้นตอนที่ 4: ตั้งค่าพารามิเตอร์
การใช้คอนโซล Firebase หรือ API แบ็กเอนด์การกำหนดค่าระยะไกล คุณสามารถสร้างค่าเริ่มต้นแบ็กเอนด์ใหม่ที่แทนที่ค่าในแอปตามตรรกะตามเงื่อนไขหรือการกำหนดเป้าหมายผู้ใช้ที่คุณต้องการ ส่วนนี้จะอธิบายขั้นตอนคอนโซล Firebase เพื่อสร้างค่าเหล่านี้
- ใน คอนโซล Firebase ให้เปิดโปรเจ็กต์ของคุณ
- เลือก การกำหนดค่าระยะไกล จากเมนูเพื่อดูแดชบอร์ดการกำหนดค่าระยะไกล
- กำหนดพารามิเตอร์ด้วยชื่อเดียวกับพารามิเตอร์ที่คุณกำหนดในแอปของคุณ สำหรับแต่ละพารามิเตอร์ คุณสามารถตั้งค่าเริ่มต้นได้ (ซึ่งจะแทนที่ค่าเริ่มต้นในแอปในที่สุด) และคุณยังสามารถตั้งค่าตามเงื่อนไขได้อีกด้วย หากต้องการเรียนรู้เพิ่มเติม โปรดดูที่ พารามิเตอร์และเงื่อนไขการกำหนดค่าระยะไกล
ขั้นตอนที่ 5: ดึงข้อมูลและเปิดใช้งานค่า
หากต้องการดึงค่าพารามิเตอร์จากการกำหนดค่าระยะไกล ให้เรียกใช้เมธอด 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 เวอร์ชัน 10.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]; }); }]; } }];
ครั้งถัดไปที่คุณเผยแพร่การกำหนดค่าระยะไกลเวอร์ชันใหม่ อุปกรณ์ที่ใช้งานแอปของคุณและรับฟังการเปลี่ยนแปลงจะเรียกตัวจัดการการดำเนินการเสร็จสิ้น
การควบคุมปริมาณ
หากแอปดึงข้อมูลหลายครั้งเกินไปในช่วงเวลาสั้นๆ การดึงข้อมูลจะถูกจำกัดและ SDK จะส่งกลับ FIRRemoteConfigFetchStatusThrottled
ก่อน SDK เวอร์ชัน 6.3.0 ขีดจำกัดคือคำขอดึงข้อมูล 5 รายการในช่วงเวลา 60 นาที (เวอร์ชันที่ใหม่กว่ามีขีดจำกัดที่อนุญาตมากกว่า)
ในระหว่างการพัฒนาแอป คุณอาจต้องการดึงข้อมูลบ่อยขึ้นเพื่อรีเฟรชแคชบ่อยมาก (หลายครั้งต่อชั่วโมง) เพื่อให้คุณทำซ้ำได้อย่างรวดเร็วในขณะที่คุณพัฒนาและทดสอบแอปของคุณ การอัปเดตการกำหนดค่าระยะไกลแบบเรียลไทม์จะข้ามแคชโดยอัตโนมัติเมื่อมีการอัปเดตการกำหนดค่าบนเซิร์ฟเวอร์ เพื่อรองรับการทำซ้ำอย่างรวดเร็วในโปรเจ็กต์ที่มีนักพัฒนาจำนวนมาก คุณสามารถเพิ่มคุณสมบัติ FIRRemoteConfigSettings
ชั่วคราวด้วยช่วงเวลาการดึงข้อมูลขั้นต่ำที่ต่ำ ( MinimumFetchInterval
) ในแอปของคุณ
ช่วงเวลาการดึงข้อมูลการผลิตเริ่มต้นและที่แนะนำสำหรับการกำหนดค่าระยะไกลคือ 12 ชั่วโมง ซึ่งหมายความว่าจะไม่มีการดึงข้อมูลการกำหนดค่าจากแบ็กเอนด์มากกว่าหนึ่งครั้งในกรอบเวลา 12 ชั่วโมง ไม่ว่าจริงๆ แล้วจะมีการเรียกดึงข้อมูลกี่ครั้งก็ตาม โดยเฉพาะอย่างยิ่ง ช่วงเวลาการดึงข้อมูลขั้นต่ำถูกกำหนดตามลำดับต่อไปนี้:
- พารามิเตอร์ใน
fetch(long)
- พารามิเตอร์ใน
FIRRemoteConfigSettings.MinimumFetchInterval
- ค่าเริ่มต้นคือ 12 ชั่วโมง
ขั้นตอนถัดไป
หากคุณยังไม่ได้สำรวจ กรณีการใช้งาน การกำหนดค่าระยะไกล และดูแนวคิดหลักและเอกสารประกอบกลยุทธ์ขั้นสูงบางส่วน ซึ่งรวมถึง: