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


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

ขั้นตอนที่ 1: เพิ่ม Remote Config ลงในแอป

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

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

  3. สร้างออบเจ็กต์ 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 เพื่อให้ใช้ค่าเริ่มต้นได้หากไม่มี ที่ตั้งไว้ในแบ็กเอนด์

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

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

    Swift

    remoteConfig.setDefaults(fromPlist: "RemoteConfigDefaults")

    Objective-C

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

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

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

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

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

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

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

การควบคุม

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

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

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

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

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

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