התחל עם Firebase Remote Config


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

שלב 1: הוסף Config מרחוק לאפליקציה שלך

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

  2. עבור תצורה מרחוק, Google Analytics נדרש למיקוד מותנה של מופעי אפליקציה לנכסי משתמשים ולקהלים. ודא שאתה מפעיל את Google Analytics בפרויקט שלך.

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

    מָהִיר

    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;

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

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

שלב 2: הגדר ערכי פרמטר ברירת מחדל באפליקציה

באפשרותך להגדיר ערכי פרמטר ברירת המחדל של APP באובייקט התצורה המרוחק, כך שהאפליקציה שלך תתנהג כמתוכנן לפני שהיא מתחברת לגיבוי התצורה המרוחק, וכך שערכי ברירת המחדל זמינים אם אף אחד מהם לא מוגדר ב- Backend.

  1. הגדר קבוצה של שמות פרמטרים וערכי פרמטר ברירת מחדל באמצעות אובייקט NSDictionary או קובץ PLIST .

    אם כבר הגדרת תצורת ערכי פרמטרים של Config LackEND מרחוק, אתה יכול להוריד קובץ 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. הוסף ערכים אלה לאובייקט התצורה המרוחק באמצעות setDefaults: . הדוגמה הבאה מגדירה את ערכי ברירת המחדל בתוך האפליקציה מקובץ PLIST:

    מָהִיר

    remoteConfig.setDefaults(fromPlist: "RemoteConfigDefaults")

    Objective-C

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

שלב 3: קבל ערכי פרמטרים לשימוש באפליקציה שלך

עכשיו אתה יכול לקבל ערכי פרמטרים מאובייקט התצורה המרוחק. אם לאחר מכן תגדיר ערכים ב- Backend Config Repart, השג אותם ואז הפעל אותם, ערכים אלה זמינים לאפליקציה שלך. אחרת, אתה מקבל את ערכי הפרמטרים בתוך האפליקציה המוגדרים באמצעות setDefaults: . כדי לקבל ערכים אלה, התקשר לשיטה configValueForKey: , המספק את מקש הפרמטר כארגומנט.

שלב 4: הגדר ערכי פרמטרים

בעזרת קונסולת Firebase או בממשקי ה- API של Config Backend מרחוק , באפשרותך ליצור ערכי ברירת מחדל חדשים של Backend העוקפים את ערכי האפליקציה על פי ההיגיון המותנה הרצוי או מיקוד המשתמש שלך. פרק זה עובר אותך בשלבי קונסולת Firebase ליצירת ערכים אלה.

  1. במסוף Firebase , פתח את הפרויקט שלך.
  2. בחר תצורה מרחוק מהתפריט כדי להציג את לוח המחוונים התצורה המרוחק.
  3. הגדר פרמטרים עם אותם שמות כמו הפרמטרים שהגדרת באפליקציה שלך. עבור כל פרמטר, באפשרותך להגדיר ערך ברירת מחדל (שבסופו של דבר יעקוף את ערך ברירת המחדל של האפליקציה) ותוכל גם להגדיר ערכים מותנים. למידע נוסף, ראה פרמטרים ותנאים של תצורה מרחוק .

שלב 5: להביא ולהפעיל ערכים

כדי להביא ערכי פרמטרים מתצורה מרחוק, קרא ל- fetchWithCompletionHandler: או fetchWithExpirationDuration:completionHandler: שיטה. כל הערכים שתגדיר על ה- Backend מופתעים ומטונים במטמון באובייקט התצורה המרוחק.

במקרים בהם ברצונך להביא ולהפעיל ערכים בשיחה אחת, השתמש fetchAndActivateWithCompletionHandler: .

דוגמה זו מביאה ערכים מה- Backend Config Config (לא ערכים במטמון) ומתקשר 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()
}

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: האזן לעדכונים בזמן אמת

לאחר שתביא ערכי פרמטרים, אתה יכול להשתמש בתצורה מרחוק בזמן אמת כדי להאזין לעדכונים מה- Backend של Config Config. בזמן אמת מרחוק אותות למכשירים מחוברים כאשר קיימים עדכונים ומביאים אוטומטית את השינויים לאחר שתפרסם גרסת תצורה חדשה מרחוק.

עדכונים בזמן אמת נתמכים על ידי ה- Firebase SDK עבור Apple Platforms 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()
        }
      }
    }
    

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

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

הצעדים הבאים

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