תחילת העבודה עם הגדרת תצורה מרחוק ב-Firebase


אפשר להשתמש ב-Firebase Remote Config כדי להגדיר פרמטרים באפליקציה וגם ולעדכן את הערכים שלהם בענן, כדי שתוכלו לשנות את המראה התנהגות האפליקציה שלך בלי להפיץ עדכון לאפליקציה. המדריך הזה ידריך אותך לבצע את השלבים לתחילת העבודה ומספקת קוד לדוגמה, שזמינות לשכפול או להורדה firebase/quickstart-ios מאגר הנתונים של GitHub.

שלב 1: מוסיפים את Remote Config לאפליקציה

  1. אם עדיין לא עשיתם זאת, מוסיפים את Firebase לפרויקט Apple.

  2. ב-Remote Config, חובה להזין Google Analytics טירגוט מותנה של מופעי אפליקציה למאפייני משתמשים ולקהלים. צריך לוודא עבורך להפעיל את Google Analytics בפרויקט.

  3. יוצרים את אובייקט ה-Singleton Remote Config, כפי שמוצג בדוגמה הבאה:

    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, ולקבוע מתי יאוחזרו יהיו זמינים לאפליקציה.

במהלך הפיתוח מומלץ להגדיר אחזור מינימלי נמוך יחסית למרווח זמן. לעיון במאמר ויסות נתונים (throttle) אפשר לקבל מידע נוסף.

שלב 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 או Remote Config ממשקי API לקצה העורפי, אפשר ליצור ערכי ברירת מחדל חדשים לקצה העורפי שיעקפו את הערכים בתוך האפליקציה בהתאם ללוגיקה המותנית או לטירגוט המשתמשים הרצוי. הקטע הזה ידריך אותך בשלבים של מסוף 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.

עדכונים בזמן אמת נתמכים ב-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. בפעם הבאה שמפרסמים גרסה חדשה של Remote Config, המכשירים שמריצים את האפליקציה ומאזינים לשינויים, תהליך ההשלמה המטפל.

ויסות נתונים (throttle)

אם אפליקציה מאחזרת יותר מדי פעמים בפרק זמן קצר, שיחות אחזור מווסתת (throttle) וה-SDK מחזיר FIRRemoteConfigFetchStatusThrottled לפני גרסה 6.3.0 של ה-SDK, המגבלה הייתה 5 בקשות לאחזור ב-60 דקות חלון (בגרסאות חדשות יותר יש מגבלות פחות מחמירות).

במהלך פיתוח האפליקציה, מומלץ לבצע אחזור בתדירות גבוהה כדי לרענן את המטמון לעיתים קרובות (פעמים רבות בשעה), כדי לאפשר לכם לבצע איטרציות במהירות במהלך הפיתוח והבדיקה של האפליקציה. עדכונים של Remote Config בזמן אמת עוקפים את המטמון באופן אוטומטי כשהתצורה מתעדכנת בשרת. כדי לאפשר איטרציה מהירה בפרויקט עם מספר מפתחים, אפשר להוסיף באופן זמני נכס FIRRemoteConfigSettings עם מרווח שליפה מינימלי נמוך (MinimumFetchInterval) באפליקציה.

מרווח האחזור שמוגדר כברירת מחדל ומומלץ בסביבת הייצור של Remote Config הוא 12 שעות. כלומר, ההגדרות לא יאוחזו מהקצה העורפי יותר מפעם אחת בחלון של 12 שעות, ללא קשר למספר הקריאות לאחזור שבוצעו בפועל. באופן ספציפי, מרווח הזמן המינימלי לאחזור נקבע לפי הסדר הבא:

  1. הפרמטר ב-fetch(long)
  2. הפרמטר ב-FIRRemoteConfigSettings.MinimumFetchInterval
  3. ערך ברירת המחדל של 12 שעות

השלבים הבאים

אם עדיין לא עשית זאת, כדאי לך לעיין בRemote Config לשימוש בתרחישים לדוגמה, ולצפות בכמה תיעוד של מושגי מפתח ואסטרטגיות מתקדמות, כולל: