はじめに
CYBIRD Advent Calendar 2023 5日目担当の@kyorokyoroです。
主にUnityを使用した開発をしております。
4日目は@ayany0_zzZさんの快適なデスクワークのために!ハッピーライフハック5選!でした。
是非こちらも合わせてご覧ください!
概要
FirebaseのRemoteConfigからFirebaseコンソール上で設定した値や、A/Bテストでユーザーごとに異なる値を取得することができます。
その値はパラメータキーから取得するのですが、コンソールの設定より先にアプリ側の実装をした際やコンソールからRemoteConfigが削除された場合など、存在しないパラメータキーを取得しようとした際の情報がなかったのでまとめました。
準備
RemoteConfigの取得
起動時にRemoteConfigを取得してRemoteConfigManagerに保存する。
/// <summary>
/// FirebaseRemoteConfig取得.
/// </summary>
private void RemoteConfig()
{
FirebaseRemoteConfig remoteConfig;
remoteConfig = FirebaseRemoteConfig.DefaultInstance;
remoteConfig.FetchAsync(TimeSpan.Zero).ContinueWithOnMainThread(task =>
{
var info = FirebaseRemoteConfig.DefaultInstance.Info;
switch (info.LastFetchStatus)
{
case LastFetchStatus.Success:
FirebaseRemoteConfig.DefaultInstance.ActivateAsync()
.ContinueWithOnMainThread(task => {
// RemoteConfigManagerに保存
remoteConfigManager.SetRemoteConfig(remoteConfig);
});
break;
}
});
}
using System;
using Firebase.RemoteConfig;
using UnityEngine;
/// <summary>
/// RemoteConfig用マネージャークラス.
/// </summary>
public class RemoteConfigManager : MonoBehaviour
{
private FirebaseRemoteConfig remoteConfig;
/// <summary>
/// FirebaseRemoteConfigのセット.
/// </summary>
/// <param name="remoteConfig">remoteConfig</param>
public void SetRemoteConfig(FirebaseRemoteConfig remoteConfig)
{
this.remoteConfig = remoteConfig;
}
}
パラメータ値の取得
bool型
存在しないキー時の値:false
デフォルト値をあわせてfalseにしておくとよい。
/// <summary>
/// パラメータキーからbool値を取得.
/// </summary>
/// <param name="key">パラメータキー</param>
/// <returns>FirebaseRemoteConfigが未取得の場合はfalse 存在しないパラメータキーもfalse</returns>
public bool GetBooleanValue(string key)
{
if (remoteConfig == null)
{
return false;
}
return remoteConfig.GetValue(key).BooleanValue;
}
string型
存在しないキー時の値:空文字
デフォルト値をあわせて空文字にしておくとよい。
/// <summary>
/// パラメータキーからstring値を取得.
/// </summary>
/// <param name="key">パラメータキー</param>
/// <returns>FirebaseRemoteConfigが未取得の場合はstring.Empty 存在しないパラメータキーもfalse</returns>
public string GetStringValue(string key)
{
if (remoteConfig == null)
{
return string.Empty;
}
return remoteConfig.GetValue(key).StringValue;
}
double,long型
存在しないキー時の値:FormatException: Input string was not in a correct format.(入力文字列の形式が正しくありません。)
数値が取得できないため値をそのまま使用するとエラーになってしまうので注意。
try-catchを使用してエラー時は特定の値を返すようにする。
/// <summary>
/// パラメータキーからdouble値を取得.
/// </summary>
/// <param name="key">パラメータキー</param>
/// <returns>FirebaseRemoteConfigが未取得の場合は0 存在しないパラメータキーも0</returns>
public double GetDoubleValue(string key)
{
if (remoteConfig == null)
{
return 0;
}
try
{
return remoteConfig.GetValue(key).DoubleValue;
}
catch (Exception e)
{
return 0;
}
}
/// <summary>
/// パラメータキーからlong値を取得.
/// </summary>
/// <param name="key">パラメータキー</param>
/// <returns>FirebaseRemoteConfigが未取得の場合は0 存在しないパラメータキーも0</returns>
public long GetLongValue(string key)
{
if (remoteConfig == null)
{
return 0;
}
try
{
return remoteConfig.GetValue(key).LongValue;
}
catch (Exception e)
{
return 0;
}
}
最後に
double,long型を使用する際は実装時は正常に動作していてもコンソールから削除など外部要因でエラーになりますので気をつけましょう。
6日目は@gumitaさんの 初めてのUnrealEngine5 です。
お楽しみに。