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

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

שלב 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 console

    1. בכרטיסייה Parameters, פותחים את Menu ובוחרים באפשרות Download default values.

    2. כשמוצגת בקשה, מפעילים את האפשרות ‎.plist for iOS ולוחצים על Download file.

  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 חדש .

עדכונים בזמן אמת נתמכים ב-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 לפני גרסת ה-SDK 6.3.0, המגבלה הייתה 5 בקשות אחזור בחלון של 60 דקות (בגרסאות חדשות יותר יש מגבלות פחות מחמירות).

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

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

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

השלבים הבאים

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