Erste Schritte mit Firebase Remote Config


Mit Firebase Remote Config können Sie Parameter in Ihrer App definieren und aktualisieren ihre Werte in der Cloud, sodass Sie das Erscheinungsbild deiner App, ohne ein App-Update zu veröffentlichen. In dieser Anleitung werden die ersten Schritte erläutert und es wird Beispielcode bereitgestellt, der aus dem GitHub-Repository firebase/quickstart-ios geklont oder heruntergeladen werden kann.

Schritt 1: Remote Config zur App hinzufügen

  1. Falls noch nicht geschehen, Fügen Sie Ihrem Apple-Projekt Firebase hinzu.

  2. Für Remote Config ist Google Analytics erforderlich, um das bedingte Targeting von App-Instanzen auf Nutzereigenschaften und Zielgruppen zu ermöglichen. Achten Sie darauf, dass ich Aktivieren Sie Google Analytics in Ihrem Projekt.

  3. Erstellen Sie das Singleton-Objekt Remote Config wie im folgenden Beispiel:

    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;

Mit diesem Objekt werden In-App-Standardparameterwerte gespeichert, aktualisierte Parameterwerte aus dem Remote Config-Backend abgerufen und festgelegt, wann abgerufene Werte für Ihre App verfügbar gemacht werden.

Während der Entwicklung empfiehlt es sich, eine relativ niedrige Mindestabrufmenge festzulegen Intervall. Weitere Informationen finden Sie unter Drosselung.

Schritt 2: In-App-Standardparameterwerte festlegen

Sie können im Remote Config-Objekt In-App-Standardparameterwerte festlegen, damit sich Ihre App wie vorgesehen verhält, bevor eine Verbindung zum Remote Config-Backend hergestellt wird. Außerdem sind dann Standardwerte verfügbar, falls im Backend keine festgelegt sind.

  1. Definieren Sie eine Reihe von Parameternamen und Standardparameterwerten mithilfe eines NSDictionary -Objekt oder ein plist-Datei an.

    Wenn Sie Remote Config-Backend-Parameterwerte bereits konfiguriert haben, können Sie eine generierte plist-Datei herunterladen, die alle Standardwerte und in Ihrem Xcode-Projekt speichern.

    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. Unter Parameter auf, öffne das Menü und wählen Sie Standardwerte herunterladen aus.

    2. Aktivieren Sie .plist für iOS, wenn Sie dazu aufgefordert werden, und klicken Sie auf Datei herunterladen.

  2. Fügen Sie diese Werte dem Remote Config-Objekt mit setDefaults: hinzu. Im folgenden Beispiel werden In-App-Standardwerte aus einer PLIST-Datei festgelegt:

    Swift

    remoteConfig.setDefaults(fromPlist: "RemoteConfigDefaults")

    Objective-C

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

Schritt 3: Parameterwerte für die Verwendung in Ihrer App abrufen

Jetzt können Sie Parameterwerte aus dem Remote Config-Objekt abrufen. Wenn Sie später Werte im Remote Config-Backend festlegen, abrufen und dann aktivieren, sind diese Werte für Ihre App verfügbar. Andernfalls werden die In-App-Parameterwerte verwendet, die mit setDefaults: konfiguriert wurden. Rufen Sie dazu die Methode configValueForKey: mit dem Parameterschlüssel als Argument auf.

Schritt 4: Parameterwerte festlegen

Mit der Firebase-Konsole oder der Remote Config Back-End-APIs, können Sie neue Backend-Standardwerte erstellen, die die In-App-Werte überschreiben, gemäß der gewünschten bedingten Logik oder dem Nutzer-Targeting aus. Dieser Abschnitt führt Sie durch die Schritte in der Firebase-Konsole zum Erstellen dieser Werte.

  1. Öffnen Sie Ihr Projekt in der Firebase-Konsole.
  2. Wählen Sie im Menü Remote Config aus, um das Remote Config-Dashboard aufzurufen.
  3. Definieren Sie Parameter mit denselben Namen wie die Parameter in Ihrer App. Sie können für jeden Parameter einen Standardwert festlegen, der den In-App-Standardwert überschreibt, und auch bedingte Werte festlegen. Weitere Informationen finden Sie unter Remote Config Parameter und Bedingungen.

Schritt 5: Werte abrufen und aktivieren

Rufen Sie zum Abrufen von Parameterwerten von Remote Config die Methode fetchWithCompletionHandler: oder fetchWithExpirationDuration:completionHandler: . Alle Werte, die Sie im Back-End festlegen, werden abgerufen und im Remote Config-Objekt zwischengespeichert.

Wenn Sie Werte in einem einzigen Aufruf abrufen und aktivieren möchten, verwenden Sie fetchAndActivateWithCompletionHandler:.

In diesem Beispiel werden Werte aus dem Remote Config-Back-End abgerufen (nicht im Cache gespeichert). Werte) und AnrufeactivateWithCompletionHandler:, um sie für alle der App:

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

Da sich diese aktualisierten Parameterwerte auf das Verhalten und das Erscheinungsbild Ihrer App auswirken, sollten Sie die abgerufenen Werte zu einem Zeitpunkt aktivieren, der eine reibungslose Nutzung für Ihre Nutzer gewährleistet, z. B. wenn der Nutzer Ihre App das nächste Mal öffnet. Weitere Informationen und Beispiele finden Sie unter Ladestrategien für Remote Config.

Schritt 6: In Echtzeit auf Updates warten

Nachdem Sie Parameterwerte abgerufen haben, können Sie Remote Config in Echtzeit verwenden, um Warten auf Aktualisierungen vom Remote Config-Back-End. Remote Config signalisiert verbundenen Geräten in Echtzeit, wenn Updates verfügbar sind, und ruft die Änderungen automatisch ab, nachdem Sie eine neue Remote Config-Version veröffentlicht haben.

Echtzeitaktualisierungen werden vom Firebase SDK für Apple-Plattformen ab Version 10.7.0 unterstützt.

  1. Rufen Sie in Ihrer App addOnConfigUpdateListener auf, um auf Updates zu warten und ruft automatisch alle neuen oder aktualisierten Parameterwerte ab. Im folgenden Beispiel wird auf Aktualisierungen gewartet. Wenn activateWithCompletionHandler aufgerufen wird, werden die neu abgerufenen Werte verwendet, um eine aktualisierte Begrüßungsnachricht anzuzeigen.

    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. Wenn du das nächste Mal eine neue Version von Remote Config veröffentlichst, werden die Geräte die Ihre App ausführen und auf Änderungen warten, -Handler.

Drosselung

Wenn eine App innerhalb eines kurzen Zeitraums zu oft abgerufen wird, werden Abrufaufrufe gedrosselt und das SDK gibt FIRRemoteConfigFetchStatusThrottled zurück. Vor der SDK-Version 6.3.0 Limit lag bei 5 Abrufanfragen in 60 Minuten -Fenster (neuere Versionen haben stärkere Begrenzungen).

Während der App-Entwicklung möchten Sie möglicherweise häufiger Daten abrufen,um den Cache zu aktualisieren. sehr häufig (viele Male pro Stunde), damit Sie schnell iterieren können, während Sie und testen Sie Ihre App. Echtzeitaktualisierungen von Remote Config umgehen automatisch den wenn die Konfiguration auf dem Server aktualisiert wird. Um die schnelle Wiederholung eines Projekts mit zahlreichen Entwicklern zu ermöglichen, können Sie der App vorübergehend eine FIRRemoteConfigSettings-Eigenschaft mit einem niedrigen Mindestabrufintervall (MinimumFetchInterval) hinzufügen.

Das Standard- und empfohlene Abrufintervall für die Produktion von Remote Config beträgt 12 Stunden. Das bedeutet, dass Konfigurationen innerhalb eines 12-Stunden-Zeitraums nicht mehr als einmal aus dem Backend abgerufen werden, unabhängig davon, wie viele Abrufaufrufe tatsächlich ausgeführt werden. Konkret wird das minimale Abrufintervall in der folgenden Reihenfolge ermittelt:

  1. Der Parameter in fetch(long)
  2. Der Parameter in FIRRemoteConfigSettings.MinimumFetchInterval
  3. Der Standardwert von 12 Stunden

Nächste Schritte

Sehen Sie sich die Remote Config an, falls Sie dies noch nicht getan haben Anwendungsfälle und sehen uns einige der Schlüsselkonzepte und Dokumentation zu erweiterten Strategien, einschließlich: