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