คุณสามารถใช้ Firebase Remote Config เพื่อกำหนดพารามิเตอร์ในแอปและ อัปเดตค่าในระบบคลาวด์ ซึ่งทำให้คุณสามารถแก้ไขลักษณะที่ปรากฏ พฤติกรรมของแอปโดยไม่เผยแพร่การอัปเดตแอป คู่มือนี้จะอธิบายถึง ผ่านขั้นตอนต่างๆ เพื่อเริ่มต้นใช้งาน และแสดงโค้ดตัวอย่าง ซึ่งทั้งหมดนี้คือ สามารถโคลนหรือดาวน์โหลดจาก firebase/quickstart-ios ที่เก็บ GitHub
ขั้นตอนที่ 1: เพิ่ม Remote Config ลงในแอป
หากคุณยังไม่ได้ดำเนินการ เพิ่ม Firebase ลงในโปรเจ็กต์ Apple
สำหรับ Remote Config ต้องมี Google Analytics สำหรับพารามิเตอร์ การกำหนดเป้าหมายแบบมีเงื่อนไขของอินสแตนซ์แอป สำหรับพร็อพเพอร์ตี้ผู้ใช้และกลุ่มเป้าหมาย โปรดตรวจสอบว่า คุณ เปิดใช้ Google Analytics ในโปรเจ็กต์
สร้างออบเจ็กต์ Remote Config แบบ Singleton ดังที่แสดงในตัวอย่างต่อไปนี้
Swift
remoteConfig = RemoteConfig.remoteConfig() let settings = RemoteConfigSettings() settings.minimumFetchInterval = 0 remoteConfig.configSettings = settings
Objective-C
self.remoteConfig = [FIRRemoteConfig remoteConfig]; FIRRemoteConfigSettings *remoteConfigSettings = [[FIRRemoteConfigSettings alloc] init]; remoteConfigSettings.minimumFetchInterval = 0; self.remoteConfig.configSettings = remoteConfigSettings;
ออบเจ็กต์นี้ใช้จัดเก็บค่าพารามิเตอร์เริ่มต้นในแอป อัปเดตการดึงข้อมูล ค่าพารามิเตอร์จากแบ็กเอนด์ Remote Config และควบคุมเมื่อดึงข้อมูล ที่ใช้ได้กับแอปของคุณ
ระหว่างการพัฒนา ขอแนะนำให้ตั้งค่าการดึงข้อมูลขั้นต่ำค่อนข้างต่ำ ช่วงเวลา ดูการควบคุม เพื่อดูข้อมูลเพิ่มเติม
ขั้นตอนที่ 2: ตั้งค่าพารามิเตอร์เริ่มต้นในแอป
คุณตั้งค่าพารามิเตอร์เริ่มต้นในแอปได้ใน Remote Config เพื่อให้แอปทำงานตามที่ตั้งใจไว้ก่อนที่จะเชื่อมต่อกับ แบ็กเอนด์ Remote Config เพื่อให้ใช้ค่าเริ่มต้นได้หากไม่มี ที่ตั้งไว้ในแบ็กเอนด์
กำหนดชุดชื่อพารามิเตอร์และค่าพารามิเตอร์เริ่มต้นโดยใช้
NSDictionary
หรือ ไฟล์ plistหากคุณกําหนดค่าพารามิเตอร์แบ็กเอนด์ Remote Config แล้ว คุณสามารถดาวน์โหลดไฟล์
plist
ที่สร้างขึ้น ซึ่งมีค่าเริ่มต้นทั้งหมดและ บันทึกลงในโปรเจ็กต์ XcodeREST
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:
ตัวอย่างต่อไปนี้ตั้งค่าเริ่มต้นในแอปจากไฟล์ plistSwift
remoteConfig.setDefaults(fromPlist: "RemoteConfigDefaults")
Objective-C
[self.remoteConfig setDefaultsFromPlistFileName:@"RemoteConfigDefaults"];
ขั้นตอนที่ 3: รับค่าพารามิเตอร์เพื่อใช้ในแอป
ตอนนี้คุณรับค่าพารามิเตอร์จากออบเจ็กต์ Remote Config ได้แล้ว หากคุณ
กำหนดค่าในแบ็กเอนด์ Remote Config ดึงข้อมูล แล้วเปิดใช้งาน
ค่าเหล่านั้นจะมีให้ในแอป ไม่เช่นนั้น คุณจะได้รับพารามิเตอร์ในแอป
ค่าที่กำหนดค่าโดยใช้
setDefaults:
ในการรับค่าเหล่านี้ เรียกเมธอด
configValueForKey:
โดยให้คีย์พารามิเตอร์เป็นอาร์กิวเมนต์
ขั้นตอนที่ 4: ตั้งค่าค่าพารามิเตอร์
การใช้คอนโซล Firebase หรือ API แบ็กเอนด์ Remote Config รายการ คุณสามารถสร้างค่าเริ่มต้นแบ็กเอนด์ใหม่ๆ ที่ลบล้างมูลค่าในแอป ตามตรรกะตามเงื่อนไขหรือการกำหนดเป้าหมายผู้ใช้ที่คุณต้องการ ส่วนนี้ จะแนะนำ Firebase ขั้นตอนของคอนโซลในการสร้างค่าเหล่านี้
- เปิดโปรเจ็กต์ในคอนโซล Firebase
- เลือก Remote Config จากเมนูเพื่อดู Remote Config หน้าแดชบอร์ด
- กำหนดพารามิเตอร์ด้วยชื่อเดียวกับพารามิเตอร์ที่คุณกำหนดใน แอปของคุณ สำหรับแต่ละพารามิเตอร์ คุณสามารถกำหนดค่าเริ่มต้น (ซึ่ง ลบล้างค่าเริ่มต้นในแอปในที่สุด) และคุณยังสามารถตั้งค่า ค่าแบบมีเงื่อนไข ดูข้อมูลเพิ่มเติมได้ที่ Remote Config พารามิเตอร์และเงื่อนไข
ขั้นตอนที่ 5: ดึงข้อมูลและเปิดใช้งานค่า
หากต้องการดึงค่าพารามิเตอร์จาก Remote Config ให้เรียกเมธอด
fetchWithCompletionHandler:
หรือ
fetchWithExpirationDuration:completionHandler:
ระบบจะดึงข้อมูลค่าใดก็ตามที่คุณกำหนดไว้ในแบ็กเอนด์และ
แคชในออบเจ็กต์ Remote Config
สำหรับกรณีที่คุณต้องการดึงข้อมูลและเปิดใช้งานค่าในการเรียกครั้งเดียว ให้ใช้
fetchAndActivateWithCompletionHandler:
ตัวอย่างนี้ดึงค่าจากแบ็กเอนด์ Remote Config (ไม่ได้แคช
) และการโทรactivateWithCompletionHandler:
เพื่อให้ผู้ซื้อ
แอป
Swift
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() }
Objective-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: ฟังข้อมูลอัปเดตแบบเรียลไทม์
หลังจากดึงข้อมูลค่าพารามิเตอร์แล้ว คุณจะใช้ Remote Config แบบเรียลไทม์เพื่อทำสิ่งต่อไปนี้ได้ ฟังอัปเดตจากแบ็กเอนด์ Remote Config เรียลไทม์ Remote Config ส่งสัญญาณไปยังอุปกรณ์ที่เชื่อมต่อเมื่อมีอัปเดตและ ดึงข้อมูลการเปลี่ยนแปลงโดยอัตโนมัติหลังจากที่คุณเผยแพร่ Remote Config ใหม่ เวอร์ชัน
SDK ของ Firebase รองรับการอัปเดตแบบเรียลไทม์สำหรับ Apple แพลตฟอร์มเวอร์ชัน 10.7.0 ขึ้นไป
ในแอป ให้โทรหา
addOnConfigUpdateListener
เพื่อเริ่มฟังข้อมูลอัปเดต และดึงข้อมูลค่าพารามิเตอร์ใหม่หรือที่อัปเดตโดยอัตโนมัติ ดังต่อไปนี้ ตัวอย่างจะฟังอัปเดตและเมื่อactivateWithCompletionHandler
เป็น จะใช้ค่าที่ดึงมาใหม่เพื่อแสดงข้อความต้อนรับที่อัปเดตSwift
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() } } }
Objective-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
) ในแอปของคุณ
ช่วงเวลาการดึงข้อมูลเวอร์ชันที่ใช้งานจริงเริ่มต้นและที่แนะนำสำหรับ Remote Config คือ 12 ชั่วโมง หมายความว่าระบบจะไม่ดึงข้อมูลการกำหนดค่าจากแบ็กเอนด์มากกว่า 1 ครั้งใน 12 ชั่วโมง โดยไม่คำนึงถึงว่ามีการดึงข้อมูลจริงๆ เป็นจำนวนเท่าใด โดยเฉพาะอย่างยิ่ง ช่วงเวลาการดึงข้อมูลขั้นต่ำจะกำหนดตามลำดับต่อไปนี้
- พารามิเตอร์ใน
fetch(long)
- พารามิเตอร์ใน
FIRRemoteConfigSettings.MinimumFetchInterval
- ค่าเริ่มต้นคือ 12 ชั่วโมง
ขั้นตอนถัดไป
หากยังไม่ได้สำรวจ โปรดดู Remote Config กรณีการใช้งาน แล้วลองดูที่ แนวคิดหลักและเอกสารกลยุทธ์ขั้นสูง ได้แก่