| Sélectionnez une plate-forme : | iOS+ Android Web Flutter Unity C++ |
Vous pouvez utiliser Firebase Remote Config pour définir des paramètres dans votre application et mettre à jour leurs valeurs dans le cloud. Vous pouvez ainsi 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ètre par défaut dans l'application, d'extraire les valeurs de paramètre mises à jour à partir du backend Remote Config et de contrôler le moment où les valeurs extraites sont mises à la disposition de votre application. Pour en savoir plus, consultez Stratégies de chargement de Remote Config.
Ce guide vous explique comment commencer et fournit un exemple de code, que vous pouvez cloner ou télécharger à partir du dépôt GitHub firebase/quickstart-unity.
Étape 1 : Ajouter Remote Config à votre application
Avant de pouvoir utiliser Remote Config, vous devez effectuer les opérations suivantes :
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 n'avez pas de projet Unity, vous pouvez télécharger un exemple d'application.
Ajoutez le Firebase Unity SDK (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 Firebase console et dans votre projet Unity ouvert (par exemple, vous téléchargez des fichiers de configuration Firebase depuis la console, puis vous les déplacez dans votre projet Unity).
Étape 2 : Définir les valeurs de paramètre par défaut dans l'application
Vous pouvez définir des valeurs de paramètre par défaut dans l'application dans l'objet Remote Config . Ainsi, votre application se comporte comme prévu avant de se connecter au backend Remote Config, et des valeurs par défaut sont disponibles si aucune n'est définie 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é Remote Config les valeurs de paramètre du backend, vous pouvez télécharger un fichier qui contient ces paires clé-valeur et l'utiliser pour créer votre dictionnaire de chaînes. Pour en savoir plus, consultez Télécharger Remote Config les valeurs par défaut du modèle.
(Les propriétés non-chaînes seront converties au type de la 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 : Obtenir les valeurs de paramètre à utiliser dans votre application
Vous pouvez maintenant obtenir les valeurs de paramètre à partir de l'objet Remote Config. Si vous définissez
des valeurs dans le backend Remote Config, que vous les extrayez, puis que vous les activez,
ces valeurs sont disponibles pour votre application. Sinon, vous obtenez les valeurs de paramètre
dans l'application configurées à l'aide de
SetDefaultsAsync().
Pour obtenir ces valeurs, utilisez
GetValue(),
en fournissant la clé de paramètre comme argument. Cette opération renvoie un
ConfigValue,
qui comporte des propriétés permettant de convertir la valeur en différents types de base.
Étape 4 : Définir les valeurs des paramètres
- Dans la Firebase console, ouvrez votre projet.
- Sélectionnez Remote Config dans le menu pour afficher le tableau de bord Remote Config.
- Définissez des paramètres portant 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 finira par remplacer la valeur par défaut dans l'application) et des valeurs conditionnelles. Pour en savoir plus, consultez Remote Config paramètres et conditions.
Étape 5 : Extraire et activer les valeurs (si nécessaire)
Pour extraire les valeurs de paramètre du Remote Config backend, appelez la
FetchAsync()
méthode. Toutes les valeurs que vous définissez dans le backend sont extraites et mises en cache dans l'
Remote Config objet.
// 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 précédent, FetchComplete est une méthode dont la signature correspond aux
paramètres de l'une des
surcharges
de ContinueWithOnMainThread().
Dans l'exemple de code suivant, la méthode FetchComplete reçoit la tâche précédente (fetchTask), ce qui permet à FetchComplete de déterminer si elle est terminée. Le code utilise
Info.LastFetchStatus
ensuite pour déterminer si la fin a également réussi. Si c'est le cas,
Remote Config les valeurs de paramètre 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}.");
});
}
Les valeurs extraites à l'aide de
FetchAsync()
sont mises en cache localement une fois l’extraction terminée, mais ne sont pas disponibles tant que
ActivateAsync()
n’est pas appelé. Vous pouvez ainsi vous assurer que les nouvelles valeurs ne sont pas appliquées en cours de calcul, ni à d'autres moments susceptibles de provoquer des problèmes ou un comportement étrange.
Étape 6 : Écouter les mises à jour en temps réel
Une fois que vous avez extrait les valeurs de paramètre, vous pouvez utiliser Remote Config en temps réel pour écouter les mises à jour du backend Remote Config. Real-time Remote Config signale aux appareils connectés lorsque des mises à jour sont disponibles et extrait automatiquement les modifications après la publication d'une nouvelle Remote Config version.
Les mises à jour en temps réel sont compatibles avec le Firebase Unity SDK version 11.0.0 ou ultérieure pour les plates-formes Android et Apple.
- Dans votre application, ajoutez un
OnConfigUpdateListenerpour commencer à écouter les mises à jour et extraire automatiquement les valeurs de paramètre nouvelles ou mises à jour. Créez ensuite unConfigUpdateListenerEventHandlerpour traiter les événements de mise à jour. L'exemple suivant écoute les mises à jour et utilise les nouvelles valeurs extraites pour afficher un message de bienvenue 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 qui exécutent votre application et écoutent les modifications appelleront le gestionnaire d'achèvement.