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


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

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

  1. หากคุณยังไม่ได้ดำเนินการ เพิ่ม Firebase ลงในโปรเจ็กต์ Apple

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

  3. สร้างออบเจ็กต์การกำหนดค่าระยะไกลแบบ 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;

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

ระหว่างการพัฒนา ขอแนะนำให้ตั้งค่าการดึงข้อมูลขั้นต่ำค่อนข้างต่ำ ช่วงเวลา ดูการควบคุม เพื่อดูข้อมูลเพิ่มเติม

ขั้นตอนที่ 2: ตั้งค่าพารามิเตอร์เริ่มต้นในแอป

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

  1. กำหนดชุดชื่อพารามิเตอร์และค่าพารามิเตอร์เริ่มต้นโดยใช้ NSDictionary หรือ ไฟล์ plist

    หากคุณกำหนดค่าพารามิเตอร์แบ็กเอนด์ของการกำหนดค่าระยะไกลแล้ว คุณจะดาวน์โหลดไฟล์ plist ที่สร้างขึ้น ซึ่งมีค่าเริ่มต้นทั้งหมดและ บันทึกลงในโปรเจ็กต์ Xcode

    REST

    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. เพิ่มค่าเหล่านี้ลงในออบเจ็กต์การกำหนดค่าระยะไกลโดยใช้ setDefaults:. ตัวอย่างต่อไปนี้ตั้งค่าเริ่มต้นในแอปจากไฟล์ plist

    Swift

    remoteConfig.setDefaults(fromPlist: "RemoteConfigDefaults")

    Objective-C

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

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

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

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

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

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

ขั้นตอนที่ 5: ดึงข้อมูลและเปิดใช้งานค่า

หากต้องการดึงค่าพารามิเตอร์จากการกำหนดค่าระยะไกล ให้เรียกเมธอด fetchWithCompletionHandler: หรือ fetchWithExpirationDuration:completionHandler: ระบบจะดึงข้อมูลค่าใดก็ตามที่คุณกำหนดไว้ในแบ็กเอนด์และ แคชในออบเจ็กต์การกำหนดค่าระยะไกล

สำหรับกรณีที่คุณต้องการดึงข้อมูลและเปิดใช้งานค่าในการเรียกครั้งเดียว ให้ใช้ fetchAndActivateWithCompletionHandler:.

ตัวอย่างนี้ดึงค่าจากแบ็กเอนด์การกำหนดค่าระยะไกล (ไม่ได้แคช ) และการโทร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: ฟังข้อมูลอัปเดตแบบเรียลไทม์

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

Firebase SDK สำหรับแพลตฟอร์ม Apple เวอร์ชัน 10.7.0 ขึ้นไปรองรับการอัปเดตแบบเรียลไทม์

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

การควบคุม

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

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

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

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

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

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