เริ่มต้นใช้งานการกำหนดค่าระยะไกลของ Firebase


คุณสามารถใช้การกำหนดค่าระยะไกลของ Firebase เพื่อกำหนดพารามิเตอร์ในแอปและอัปเดตค่าในระบบคลาวด์ ซึ่งช่วยให้คุณแก้ไขรูปลักษณ์และลักษณะการทำงานของแอปได้โดยไม่ต้องเผยแพร่การอัปเดตแอป คู่มือนี้จะอธิบายขั้นตอนในการเริ่มต้นใช้งานและให้โค้ดตัวอย่างบางส่วน ซึ่งทั้งหมดนี้พร้อมให้โคลนหรือดาวน์โหลดได้จากที่เก็บ firebase/quickstart-ios GitHub

ขั้นตอนที่ 1: เพิ่มการกำหนดค่าระยะไกลให้กับแอปของคุณ

  1. ติดตั้ง Firebase SDK สำหรับแพลตฟอร์ม Apple

  2. สร้างออบเจ็กต์ 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: ตั้งค่าพารามิเตอร์เริ่มต้นในแอป

คุณสามารถตั้งค่าค่าพารามิเตอร์เริ่มต้นในแอปในวัตถุการกำหนดค่าระยะไกลเพื่อให้แอปของคุณทำงานตามที่ตั้งใจไว้ก่อนที่จะเชื่อมต่อกับแบ็กเอนด์การกำหนดค่าระยะไกลและเพื่อให้ค่าเริ่มต้นมีอยู่หากไม่มีการตั้งค่าในแบ็กเอนด์

  1. กำหนดชุดของชื่อพารามิเตอร์และค่าพารามิเตอร์เริ่มต้นโดยใช้วัตถุ 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

    1. ในแท็บ พารามิเตอร์ เปิด เมนู และเลือก ดาวน์โหลดค่าเริ่มต้น

    2. เมื่อได้รับแจ้งให้เปิดใช้งาน . plist สำหรับ iOS จากนั้นคลิก ดาวน์โหลดไฟล์

  2. เพิ่มค่าเหล่านี้ลงในวัตถุ config ระยะไกลโดยใช้ setDefaults: ตัวอย่างต่อไปนี้ตั้งค่าค่าเริ่มต้นในแอปจากไฟล์ plist:

    สวิฟท์

    remoteConfig.setDefaults(fromPlist: "RemoteConfigDefaults")

    วัตถุประสงค์-C

    [self.remoteConfig setDefaultsFromPlistFileName:@"RemoteConfigDefaults"];

ขั้นตอนที่ 3: รับค่าพารามิเตอร์ที่จะใช้ในแอปของคุณ

ตอนนี้คุณสามารถรับค่าพารามิเตอร์จากวัตถุการกำหนดค่าระยะไกล หากคุณตั้งค่าในภายหลังในแบ็กเอนด์การกำหนดค่าระยะไกลให้ดึงข้อมูลแล้วเปิดใช้งานค่าเหล่านั้นจะพร้อมใช้งานสำหรับแอปของคุณ มิฉะนั้นคุณจะได้รับค่าพารามิเตอร์ในแอปที่กำหนดค่าโดยใช้ setDefaults: หากต้องการรับค่าเหล่านี้ให้เรียก configValueForKey: วิธีการให้คีย์พารามิเตอร์เป็นอาร์กิวเมนต์

ขั้นตอนที่ 4: ตั้งค่าพารามิเตอร์

การใช้คอนโซล Firebase หรือ API แบ็กเอนด์การกำหนดค่าระยะไกล คุณสามารถสร้างค่าเริ่มต้นแบ็กเอนด์ใหม่ที่แทนที่ค่าในแอปตามตรรกะตามเงื่อนไขที่คุณต้องการหรือการกำหนดเป้าหมายผู้ใช้ ส่วนนี้จะนำคุณผ่านขั้นตอนคอนโซล Firebase เพื่อสร้างค่าเหล่านี้

  1. ใน คอนโซล Firebase เปิดโครงการของคุณ
  2. เลือก การกำหนดค่าระยะไกล จากเมนูเพื่อดูแผงควบคุมการกำหนดค่าระยะไกล
  3. กำหนดพารามิเตอร์ที่มีชื่อเดียวกันกับพารามิเตอร์ที่คุณกำหนดไว้ในแอพของคุณ สำหรับแต่ละพารามิเตอร์คุณสามารถตั้งค่าเริ่มต้น (ซึ่งในที่สุดจะแทนที่ค่าเริ่มต้นในแอพ) และคุณยังสามารถตั้งค่าเงื่อนไขตามเงื่อนไข หากต้องการเรียนรู้เพิ่มเติมโปรดดู พารามิเตอร์และเงื่อนไขการกำหนดค่าระยะไกล

ขั้นตอนที่ 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+ และสูงกว่า

  1. ในแอพของคุณโทร 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];
          });
        }];
      }
    }];
    
  2. ในครั้งต่อไปที่คุณเผยแพร่เวอร์ชันใหม่ของการกำหนดค่าระยะไกลของคุณอุปกรณ์ที่ใช้งานแอปของคุณและฟังการเปลี่ยนแปลงจะเรียกตัวจัดการเสร็จสมบูรณ์

การควบคุมปริมาณ

หากแอพดึงข้อมูลหลายครั้งเกินไปในช่วงเวลาสั้น ๆ การโทรกลับจะถูกควบคุมตัวและ SDK จะส่งคืน FIRRemoteConfigFetchStatusThrottled ก่อน SDK เวอร์ชัน 6.3.0 ขีด จำกัด คือ 5 คำขอดึงข้อมูลในหน้าต่าง 60 นาที (เวอร์ชันใหม่กว่ามีขีด จำกัด ที่อนุญาตมากขึ้น)

ในระหว่างการพัฒนาแอพคุณอาจต้องการดึงข้อมูลบ่อยขึ้นเพื่อรีเฟรชแคชบ่อยครั้ง (หลายครั้งต่อชั่วโมง) เพื่อให้คุณวนซ้ำอย่างรวดเร็วเมื่อคุณพัฒนาและทดสอบแอปของคุณ การอัพเดทการกำหนดค่าระยะไกลแบบเรียลไทม์โดยอัตโนมัติบายพาสแคชเมื่อการกำหนดค่าได้รับการอัปเดตบนเซิร์ฟเวอร์ เพื่อรองรับการทำซ้ำอย่างรวดเร็วในโครงการที่มีนักพัฒนาจำนวนมากคุณสามารถเพิ่มคุณสมบัติ FIRRemoteConfigSettings ได้ชั่วคราวด้วยช่วงเวลาการดึงข้อมูลขั้นต่ำต่ำ ( MinimumFetchInterval ) ในแอพของคุณ

ช่วงเวลาการดึงข้อมูลเริ่มต้นและการแนะนำที่แนะนำสำหรับการกำหนดค่าระยะไกลคือ 12 ชั่วโมงซึ่งหมายความว่าการกำหนดค่าจะไม่ถูกดึงออกมาจากแบ็กเอนด์มากกว่าหนึ่งครั้งในหน้าต่าง 12 ชั่วโมงโดยไม่คำนึงถึงจำนวนการโทรที่เกิดขึ้นจริง โดยเฉพาะช่วงเวลาการดึงขั้นต่ำจะถูกกำหนดในลำดับต่อไปนี้:

  1. พารามิเตอร์ใน fetch(long)
  2. พารามิเตอร์ใน FIRRemoteConfigSettings.MinimumFetchInterval
  3. ค่าเริ่มต้น 12 ชั่วโมง

ขั้นตอนถัดไป

หากคุณยังไม่ได้สำรวจ กรณีการใช้งาน การกำหนดค่าระยะไกลและดูที่แนวคิดหลักและเอกสารกลยุทธ์ขั้นสูงรวมถึง::