با Firebase Remote Config شروع کنید


شما می توانید از Firebase Remote Config برای تعریف پارامترها در برنامه خود و به روز رسانی مقادیر آنها در فضای ابری استفاده کنید و به شما امکان می دهد ظاهر و رفتار برنامه خود را بدون توزیع به روز رسانی برنامه تغییر دهید. این راهنما شما را از طریق مراحل شروع کار می کند و برخی از کد های نمونه را ارائه می دهد ، که همه آنها برای کلون یا بارگیری از مخزن Firebase/QuickStart-IIS در دسترس است.

مرحله 1: Remote Config به برنامه خود اضافه کنید

  1. اگر قبلاً این کار را نکرده اید ، Firebase را به پروژه اپل خود اضافه کنید .

  2. برای Remote Config ، Google Analytics برای هدف قرار دادن مشروط نمونه های برنامه به خصوصیات کاربر و مخاطبان مورد نیاز است. اطمینان حاصل کنید که Google Analytics در پروژه خود فعال کرده اید.

  3. همانطور که در مثال زیر نشان داده شده است ، شیء Remote Config Singleton را ایجاد کنید:

    سویفت

    remoteConfig = RemoteConfig.remoteConfig()
    let settings = RemoteConfigSettings()
    settings.minimumFetchInterval = 0
    remoteConfig.configSettings = settings

    هدف-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 خود است.

    استراحت

    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: به شیء Remote Config اضافه کنید :. مثال زیر مقادیر پیش فرض درون برنامه را از یک پرونده plist تنظیم می کند:

    سویفت

    remoteConfig.setDefaults(fromPlist: "RemoteConfigDefaults")

    هدف-C

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

مرحله 3: مقادیر پارامتر را برای استفاده در برنامه خود دریافت کنید

اکنون می توانید مقادیر پارامتر را از شیء Remote Config دریافت کنید. اگر بعداً مقادیر را در پشتوانه Remote Config تنظیم کنید ، آنها را واکشی کنید و سپس آنها را فعال کنید ، این مقادیر در دسترس برنامه شما هستند. در غیر این صورت ، مقادیر پارامتر درون برنامه را با استفاده از setDefaults: . برای به دست آوردن این مقادیر ، با روش configValueForKey: Method ، با ارائه کلید پارامتر به عنوان یک آرگومان تماس بگیرید.

مرحله 4: مقادیر پارامتر را تنظیم کنید

با استفاده از کنسول Firebase یا API های Backend Remote Config ، می توانید مقادیر پیش فرض جدید Backend را ایجاد کنید که با توجه به منطق شرطی مورد نظر یا هدف قرار دادن کاربر ، مقادیر درون برنامه را نادیده می گیرد. این بخش شما را از طریق مراحل کنسول Firebase برای ایجاد این مقادیر طی می کند.

  1. در کنسول Firebase ، پروژه خود را باز کنید.
  2. برای مشاهده داشبورد Remote Config Remote Config از منو انتخاب کنید.
  3. پارامترها را با همان نام هایی با پارامترهایی که در برنامه خود تعریف کرده اید تعریف کنید. برای هر پارامتر ، می توانید یک مقدار پیش فرض (که در نهایت مقدار پیش فرض درون برنامه را نادیده می گیرد) تنظیم کنید و می توانید مقادیر شرطی را نیز تنظیم کنید. برای کسب اطلاعات بیشتر ، به پارامترها و شرایط Remote Config مراجعه کنید.

مرحله 5: مقادیر را واکشی و فعال کنید

برای واکشی مقادیر پارامتر از Remote Config ، با fetchWithCompletionHandler: یا fetchWithExpirationDuration:completionHandler: METHORE. هر مقداری که در پس زمینه تنظیم کرده اید ، در شیء Remote Config قرار گرفته و ذخیره می شوند.

برای مواردی که می خواهید مقادیر را در یک تماس واکشی و فعال کنید ، از fetchAndActivateWithCompletionHandler: .

این مثال مقادیر را از پس زمینه Remote 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()
}

هدف-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);
    }
}];

از آنجا که این مقادیر پارامتر به روز شده بر رفتار و ظاهر برنامه شما تأثیر می گذارد ، باید مقادیر واکشی را در زمانی فعال کنید که تجربه ای صاف را برای کاربر شما تضمین می کند ، مانند دفعه بعد که کاربر برنامه شما را باز می کند. برای اطلاعات بیشتر و مثال ، به استراتژی های بارگیری پیکربندی از راه دور مراجعه کنید.

مرحله ششم: به روزرسانی ها را در زمان واقعی گوش دهید

پس از واکشی مقادیر پارامتر ، می توانید Remote Config Time Time برای گوش دادن به روزرسانی از Remote Config Backend استفاده کنید. سیگنال های Remote Config در زمان واقعی هنگامی که به روزرسانی ها در دسترس هستند و به طور خودکار تغییرات را پس از انتشار نسخه جدید Remote 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()
        }
      }
    }

    هدف-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 دقیقه ای بود (نسخه های جدیدتر محدودیت های مجاز بیشتری دارند).

در حین توسعه برنامه ، ممکن است بخواهید بیشتر اوقات به شما واکشی کنید تا حافظه نهان را به طور مکرر (چندین بار در ساعت) تازه کنید تا به شما اجازه دهد تا هنگام تهیه و آزمایش برنامه خود به سرعت تکرار کنید. به روزرسانی های پیکربندی Remote Remote Time Time به طور خودکار هنگام بروزرسانی پیکربندی روی سرور ، حافظه نهان را دور می زنند. برای قرار دادن تکرار سریع در یک پروژه با توسعه دهندگان بیشمار ، می توانید به طور موقت یک ویژگی FIRRemoteConfigSettings را با حداقل فاصله دریافتی کم ( MinimumFetchInterval ) در برنامه خود اضافه کنید.

فاصله قبل از تولید پیش فرض و توصیه شده برای Remote Config 12 ساعت است ، به این معنی که پیکربندی ها بیش از یک بار در یک پنجره 12 ساعته ، بدون در نظر گرفتن چند تماس واکشی در واقع ، از پس زمینه خارج نمی شوند. به طور خاص ، حداقل فاصله واکشی در این ترتیب زیر تعیین می شود:

  1. پارامتر در fetch(long)
  2. پارامتر در FIRRemoteConfigSettings.MinimumFetchInterval
  3. مقدار پیش فرض 12 ساعت

مراحل بعدی

اگر قبلاً این کار را نکرده اید ، موارد استفاده Remote Config را کاوش کنید و به برخی از مفاهیم کلیدی و مستندات استراتژی های پیشرفته ، از جمله:

،


You can use Firebase Remote Config to define parameters in your app and update their values in the cloud, allowing you to modify the appearance and behavior of your app without distributing an app update. This guide walks you through the steps to get started and provides some sample code, all of which is available to clone or download from the firebase/quickstart-ios GitHub repository.

Step 1: Add Remote Config to your app

  1. If you haven't already, add Firebase to your Apple project .

  2. For Remote Config , Google Analytics is required for the conditional targeting of app instances to user properties and audiences. Make sure that you enable Google Analytics in your project.

  3. Create the singleton Remote Config object, as shown in the following example:

    سویفت

    remoteConfig = RemoteConfig.remoteConfig()
    let settings = RemoteConfigSettings()
    settings.minimumFetchInterval = 0
    remoteConfig.configSettings = settings

    هدف-C

    self.remoteConfig = [FIRRemoteConfig remoteConfig];
    FIRRemoteConfigSettings *remoteConfigSettings = [[FIRRemoteConfigSettings alloc] init];
    remoteConfigSettings.minimumFetchInterval = 0;
    self.remoteConfig.configSettings = remoteConfigSettings;

This object is used to store in-app default parameter values, fetch updated parameter values from the Remote Config backend, and control when fetched values are made available to your app.

During development, it's recommended to set a relatively low minimum fetch interval. See Throttling for more information.

Step 2: Set in-app default parameter values

You can set in-app default parameter values in the Remote Config object, so that your app behaves as intended before it connects to the Remote Config backend, and so that default values are available if none are set in the backend.

  1. Define a set of parameter names, and default parameter values using an NSDictionary object or a plist file .

    If you have already configured Remote Config backend parameter values, you can download a generated plist file that includes all default values and save it to your Xcode project.

    استراحت

    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. When prompted, enable .plist for iOS , then click Download file .

  2. Add these values to the Remote Config object using setDefaults: . The following example sets in-app default values from a plist file:

    سویفت

    remoteConfig.setDefaults(fromPlist: "RemoteConfigDefaults")

    هدف-C

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

Step 3: Get parameter values to use in your app

Now you can get parameter values from the Remote Config object. If you later set values in the Remote Config backend, fetch them, and then activate them, those values are available to your app. Otherwise, you get the in-app parameter values configured using setDefaults: . To get these values, call the configValueForKey: method, providing the parameter key as an argument.

Step 4: Set parameter values

Using the Firebase console or the Remote Config backend APIs , you can create new backend default values that override the in-app values according to your desired conditional logic or user targeting. This section walks you through the Firebase console steps to create these values.

  1. In the Firebase console , open your project.
  2. Select Remote Config from the menu to view the Remote Config dashboard.
  3. Define parameters with the same names as the parameters that you defined in your app. For each parameter, you can set a default value (which will eventually override the in-app default value) and you can also set conditional values. To learn more, see Remote Config Parameters and Conditions .

Step 5: Fetch and activate values

To fetch parameter values from Remote Config , call the fetchWithCompletionHandler: or fetchWithExpirationDuration:completionHandler: method. Any values that you set on the backend are fetched and cached in the Remote Config object.

For cases where you want to fetch and activate values in one call, use fetchAndActivateWithCompletionHandler: .

This example fetches values from the Remote Config backend (not cached values) and calls activateWithCompletionHandler: to make them available to the app:

سویفت

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()
}

هدف-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);
    }
}];

Because these updated parameter values affect the behavior and appearance of your app, you should activate the fetched values at a time that ensures a smooth experience for your user, such as the next time that the user opens your app. See Remote Config loading strategies for more information and examples.

Step 6: Listen for updates in real time

After you fetch parameter values, you can use real-time Remote Config to listen for updates from the Remote Config backend. Real-time Remote Config signals to connected devices when updates are available and automatically fetches the changes after you publish a new Remote Config version.

Real-time updates are supported by the Firebase SDK for Apple platforms v10.7.0+ and higher.

  1. In your app, call addOnConfigUpdateListener to start listening for updates and automatically fetch any new or updated parameter values. The following example listens for updates and when activateWithCompletionHandler is called, uses the newly fetched values to display an updated welcome message.

    سویفت

    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()
        }
      }
    }

    هدف-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. The next time you publish a new version of your Remote Config , devices that are running your app and listening for changes will call the completion handler.

گاز دادن

If an app fetches too many times in a short time period, fetch calls are throttled and the SDK returns FIRRemoteConfigFetchStatusThrottled . Before SDK version 6.3.0, the limit was 5 fetch requests in a 60 minute window (newer versions have more permissive limits).

During app development,you might want to fetch more often to refresh the cache very frequently (many times per hour) to let you rapidly iterate as you develop and test your app. Real-time Remote Config updates automatically bypass the cache when the config is updated on the server. To accommodate rapid iteration on a project with numerous developers, you can temporarily add a FIRRemoteConfigSettings property with a low minimum fetch interval ( MinimumFetchInterval ) in your app.

The default and recommended production fetch interval for Remote Config is 12 hours, which means that configs won't be fetched from the backend more than once in a 12 hour window, regardless of how many fetch calls are actually made. Specifically, the minimum fetch interval is determined in this following order:

  1. The parameter in fetch(long)
  2. The parameter in FIRRemoteConfigSettings.MinimumFetchInterval
  3. The default value of 12 hours

مراحل بعدی

If you haven't already, explore the Remote Config use cases , and take a look at some of the key concepts and advanced strategies documentation, including:

،


You can use Firebase Remote Config to define parameters in your app and update their values in the cloud, allowing you to modify the appearance and behavior of your app without distributing an app update. This guide walks you through the steps to get started and provides some sample code, all of which is available to clone or download from the firebase/quickstart-ios GitHub repository.

Step 1: Add Remote Config to your app

  1. If you haven't already, add Firebase to your Apple project .

  2. For Remote Config , Google Analytics is required for the conditional targeting of app instances to user properties and audiences. Make sure that you enable Google Analytics in your project.

  3. Create the singleton Remote Config object, as shown in the following example:

    سویفت

    remoteConfig = RemoteConfig.remoteConfig()
    let settings = RemoteConfigSettings()
    settings.minimumFetchInterval = 0
    remoteConfig.configSettings = settings

    هدف-C

    self.remoteConfig = [FIRRemoteConfig remoteConfig];
    FIRRemoteConfigSettings *remoteConfigSettings = [[FIRRemoteConfigSettings alloc] init];
    remoteConfigSettings.minimumFetchInterval = 0;
    self.remoteConfig.configSettings = remoteConfigSettings;

This object is used to store in-app default parameter values, fetch updated parameter values from the Remote Config backend, and control when fetched values are made available to your app.

During development, it's recommended to set a relatively low minimum fetch interval. See Throttling for more information.

Step 2: Set in-app default parameter values

You can set in-app default parameter values in the Remote Config object, so that your app behaves as intended before it connects to the Remote Config backend, and so that default values are available if none are set in the backend.

  1. Define a set of parameter names, and default parameter values using an NSDictionary object or a plist file .

    If you have already configured Remote Config backend parameter values, you can download a generated plist file that includes all default values and save it to your Xcode project.

    استراحت

    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. When prompted, enable .plist for iOS , then click Download file .

  2. Add these values to the Remote Config object using setDefaults: . The following example sets in-app default values from a plist file:

    سویفت

    remoteConfig.setDefaults(fromPlist: "RemoteConfigDefaults")

    هدف-C

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

Step 3: Get parameter values to use in your app

Now you can get parameter values from the Remote Config object. If you later set values in the Remote Config backend, fetch them, and then activate them, those values are available to your app. Otherwise, you get the in-app parameter values configured using setDefaults: . To get these values, call the configValueForKey: method, providing the parameter key as an argument.

Step 4: Set parameter values

Using the Firebase console or the Remote Config backend APIs , you can create new backend default values that override the in-app values according to your desired conditional logic or user targeting. This section walks you through the Firebase console steps to create these values.

  1. In the Firebase console , open your project.
  2. Select Remote Config from the menu to view the Remote Config dashboard.
  3. Define parameters with the same names as the parameters that you defined in your app. For each parameter, you can set a default value (which will eventually override the in-app default value) and you can also set conditional values. To learn more, see Remote Config Parameters and Conditions .

Step 5: Fetch and activate values

To fetch parameter values from Remote Config , call the fetchWithCompletionHandler: or fetchWithExpirationDuration:completionHandler: method. Any values that you set on the backend are fetched and cached in the Remote Config object.

For cases where you want to fetch and activate values in one call, use fetchAndActivateWithCompletionHandler: .

This example fetches values from the Remote Config backend (not cached values) and calls activateWithCompletionHandler: to make them available to the app:

سویفت

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()
}

هدف-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);
    }
}];

Because these updated parameter values affect the behavior and appearance of your app, you should activate the fetched values at a time that ensures a smooth experience for your user, such as the next time that the user opens your app. See Remote Config loading strategies for more information and examples.

Step 6: Listen for updates in real time

After you fetch parameter values, you can use real-time Remote Config to listen for updates from the Remote Config backend. Real-time Remote Config signals to connected devices when updates are available and automatically fetches the changes after you publish a new Remote Config version.

Real-time updates are supported by the Firebase SDK for Apple platforms v10.7.0+ and higher.

  1. In your app, call addOnConfigUpdateListener to start listening for updates and automatically fetch any new or updated parameter values. The following example listens for updates and when activateWithCompletionHandler is called, uses the newly fetched values to display an updated welcome message.

    سویفت

    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()
        }
      }
    }

    هدف-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. The next time you publish a new version of your Remote Config , devices that are running your app and listening for changes will call the completion handler.

گاز دادن

If an app fetches too many times in a short time period, fetch calls are throttled and the SDK returns FIRRemoteConfigFetchStatusThrottled . Before SDK version 6.3.0, the limit was 5 fetch requests in a 60 minute window (newer versions have more permissive limits).

During app development,you might want to fetch more often to refresh the cache very frequently (many times per hour) to let you rapidly iterate as you develop and test your app. Real-time Remote Config updates automatically bypass the cache when the config is updated on the server. To accommodate rapid iteration on a project with numerous developers, you can temporarily add a FIRRemoteConfigSettings property with a low minimum fetch interval ( MinimumFetchInterval ) in your app.

The default and recommended production fetch interval for Remote Config is 12 hours, which means that configs won't be fetched from the backend more than once in a 12 hour window, regardless of how many fetch calls are actually made. Specifically, the minimum fetch interval is determined in this following order:

  1. The parameter in fetch(long)
  2. The parameter in FIRRemoteConfigSettings.MinimumFetchInterval
  3. The default value of 12 hours

مراحل بعدی

If you haven't already, explore the Remote Config use cases , and take a look at some of the key concepts and advanced strategies documentation, including: