Premiers pas avec Firebase Remote Config

.


Vous pouvez utiliser Firebase Remote Config pour définir des paramètres dans votre application et mettre à jour leurs valeurs dans le cloud, ce qui vous permet de modifier l'apparence et le comportement de votre application sans distribuer de mise à jour.

La bibliothèque Remote Config permet de stocker les valeurs de paramètres par défaut dans l'application. récupérer les valeurs de paramètres mises à jour à partir du backend Remote Config, puis contrôler lorsque les valeurs extraites sont mises à la disposition de votre application. Pour en savoir plus, consultez la section Stratégies de chargement Remote Config.

Ce guide vous explique les étapes de démarrage et fournit un exemple de code, cloner ou télécharger à partir de firebase/quickstart-unity.

Étape 1 : Ajoutez Remote Config à votre application

Avant de pouvoir utiliser Remote Config, vous devez:

  • Enregistrez votre projet Unity et configurez-le pour utiliser Firebase.

    • Si votre projet Unity utilise déjà Firebase, il est déjà enregistré et configuré pour Firebase.

    • Si vous ne disposez pas d'un projet Unity, vous pouvez télécharger un exemple d'application.

  • Ajoutez le SDK Unity Firebase (plus précisément, FirebaseRemoteConfig.unitypackage) à votre projet Unity.

Notez que l'ajout de Firebase à votre projet Unity implique des tâches à la fois dans la console Firebase et dans votre projet Unity ouvert (par exemple, vous téléchargez des fichiers de configuration Firebase à partir de la console, puis les déplacez dans votre projet Unity).

Étape 2: Définissez les valeurs des paramètres par défaut dans l'application

Vous pouvez définir des valeurs de paramètres par défaut dans l'application dans Remote Config , afin que votre application se comporte comme prévu avant de se connecter Remote Config, et afin que les valeurs par défaut soient disponibles si aucune n'est dans le backend.

Pour ce faire, créez un dictionnaire de chaînes et remplissez-le avec des paires clé/valeur représentant les valeurs par défaut que vous souhaitez ajouter. Si vous avez déjà configuré les valeurs de paramètre du backend Remote Config, vous pouvez télécharger un fichier contenant ces paires clé/valeur et l'utiliser pour créer votre dictionnaire de chaînes. Pour en savoir plus, consultez la section Télécharger les valeurs par défaut du modèle Remote Config.

(Les propriétés autres que des chaînes seront converties en type de propriété lorsque SetDefaultsAsync() est appelé.)

System.Collections.Generic.Dictionary<string, object> defaults =
  new System.Collections.Generic.Dictionary<string, object>();

// These are the values that are used if we haven't fetched data from the
// server
// yet, or if we ask for values that the server doesn't have:
defaults.Add("config_test_string", "default local string");
defaults.Add("config_test_int", 1);
defaults.Add("config_test_float", 1.0);
defaults.Add("config_test_bool", false);

Firebase.RemoteConfig.FirebaseRemoteConfig.DefaultInstance.SetDefaultsAsync(defaults)
  .ContinueWithOnMainThread(task => {

Étape 3: Obtenez les valeurs des paramètres à utiliser dans votre application

Vous pouvez maintenant obtenir les valeurs des paramètres à partir de l'objet Remote Config. Si vous définissez dans le backend Remote Config, les ont récupérées, puis activées, ces valeurs sont disponibles pour votre application. Sinon, vous obtenez le paramètre "in-app" configurées à l'aide de SetDefaultsAsync()

Pour obtenir ces valeurs, utilisez GetValue(), en fournissant la clé du paramètre en tant qu'argument. Cela renvoie un ConfigValue, qui possède des propriétés permettant de convertir la valeur en différents types de base.

Étape 4: Définissez les valeurs des paramètres

  1. Dans la console Firebase, ouvrez votre projet.
  2. Sélectionnez Remote Config dans le menu pour afficher le tableau de bord Remote Config.
  3. Définissez les paramètres en leur attribuant les mêmes noms que ceux que vous avez définis dans votre application. Pour chaque paramètre, vous pouvez définir une valeur par défaut (qui remplaceront finalement la valeur par défaut dans l'application) et les valeurs conditionnelles. Pour en savoir plus, consultez la section Paramètres et conditions Remote Config.

Étape 5: Récupérez et activez les valeurs (si nécessaire)

Pour extraire les valeurs de paramètre du backend Remote Config, appelez la méthode FetchAsync(). Toutes les valeurs que vous définissez sur le backend sont extraites et mises en cache dans l'objet Remote Config.

// Start a fetch request.
// FetchAsync only fetches new data if the current data is older than the provided
// timespan.  Otherwise it assumes the data is "recent enough", and does nothing.
// By default the timespan is 12 hours, and for production apps, this is a good
// number. For this example though, it's set to a timespan of zero, so that
// changes in the console will always show up immediately.
public Task FetchDataAsync() {
  DebugLog("Fetching data...");
  System.Threading.Tasks.Task fetchTask =
  Firebase.RemoteConfig.FirebaseRemoteConfig.DefaultInstance.FetchAsync(
      TimeSpan.Zero);
  return fetchTask.ContinueWithOnMainThread(FetchComplete);
}

Dans le code ci-dessus, FetchComplete est une méthode dont la signature correspond à paramètres de l'un des Surcharge sur ContinueWithOnMainThread().

Dans l'exemple de code ci-dessous, la méthode FetchComplete est transmise à la tâche précédente. (fetchTask), ce qui permet à FetchComplete de déterminer s'il est terminé. Le code utilise Info.LastFetchStatus pour déterminer si la fin a également été réussie. Si tel est le cas, les valeurs de paramètre Remote Config sont ensuite activées à l'aide de ActivateAsync().

private void FetchComplete(Task fetchTask) {
  if (!fetchTask.IsCompleted) {
    Debug.LogError("Retrieval hasn't finished.");
    return;
  }

  var remoteConfig = FirebaseRemoteConfig.DefaultInstance;
  var info = remoteConfig.Info;
  if(info.LastFetchStatus != LastFetchStatus.Success) {
    Debug.LogError($"{nameof(FetchComplete)} was unsuccessful\n{nameof(info.LastFetchStatus)}: {info.LastFetchStatus}");
    return;
  }

  // Fetch successful. Parameter values must be activated to use.
  remoteConfig.ActivateAsync()
    .ContinueWithOnMainThread(
      task => {
        Debug.Log($"Remote data loaded and ready for use. Last fetch time {info.FetchTime}.");
    });
}

Valeurs récupérées avec FetchAsync() sont mis en cache localement une fois l'extraction terminée, mais ne sont pas mis à disposition tant que ActivateAsync() est appelé. Cela vous permet de vous assurer que les nouvelles valeurs ne sont pas appliquées en cours de calcul ou à d'autres moments susceptibles de causer des problèmes ou un comportement étrange.

Étape 6 : Écoutez les mises à jour en temps réel

Après avoir récupéré les valeurs des paramètres, vous pouvez utiliser des Remote Config en temps réel pour : écouter les mises à jour du backend Remote Config. Remote Config en temps réel envoie des signaux aux appareils connectés lorsque des mises à jour sont disponibles et récupère automatiquement les modifications après avoir publié une nouvelle version de Remote Config.

Les mises à jour en temps réel sont compatibles avec le SDK Unity Firebase version 11.0.0 ou ultérieure pour les plates-formes Android et Apple.

  1. Dans votre application, ajoutez un OnConfigUpdateListener pour commencer à écouter les mises à jour et à extraire automatiquement les valeurs de paramètre nouvelles ou mises à jour. Créez ensuite un ConfigUpdateListenerEventHandler pour traiter les événements de mise à jour. L'exemple suivant écoute les mises à jour et utilise les valeurs nouvellement extraites pour afficher un message d'accueil mis à jour.
// Invoke the listener.
void Start()
{
  Firebase.RemoteConfig.FirebaseRemoteConfig.DefaultInstance.OnConfigUpdateListener
    += ConfigUpdateListenerEventHandler;
}

// Handle real-time Remote Config events.
void ConfigUpdateListenerEventHandler(
   object sender, Firebase.RemoteConfig.ConfigUpdateEventArgs args) {
  if (args.Error != Firebase.RemoteConfig.RemoteConfigError.None) {
    Debug.Log(String.Format("Error occurred while listening: {0}", args.Error));
    return;
  }

  Debug.Log("Updated keys: " + string.Join(", ", args.UpdatedKeys));
  // Activate all fetched values and then display a welcome message.
  remoteConfig.ActivateAsync().ContinueWithOnMainThread(
    task => {
        DisplayWelcomeMessage();
    });
}

// Stop the listener.
void OnDestroy() {
    Firebase.RemoteConfig.FirebaseRemoteConfig.DefaultInstance.OnConfigUpdateListener
      -= ConfigUpdateListenerEventHandler;
}

La prochaine fois que vous publierez une nouvelle version de votre Remote Config, les appareils exécutent votre application et écoutent les modifications pour appeler le gestionnaire d'achèvement.

Étapes suivantes

Si ce n'est pas déjà fait, explorez les Remote Config cas d'utilisation et consultez certains des concepts clés et la documentation sur les stratégies avancées, y compris :