Firebase Remote Config for Unity を使ってみる

Firebase Remote Config を使ってアプリ内パラメータを定義し、その値をクラウドで更新することができます。これにより、アプリのアップデートを配布しなくてもアプリの外観や動作を変更できます。

Remote Config ライブラリは、アプリ内デフォルト パラメータ値を格納すること、更新されたパラメータ値をサービスからフェッチすること、フェッチ済みの値をアプリで有効にするタイミングを制御することにそれぞれ使用されます。詳しくは Remote Config API の概要をご覧ください。

Remote Config をアプリに追加する

Firebase Remote Config を使用するには、Firebase プロジェクトを作成してから、Firebase Unity SDK パッケージを Unity プロジェクトに追加する必要があります。

設定

事前準備

Android

  • Unity 5.0 以降
  • Android NDK バージョン 10d 以降

iOS

  • Unity 5.0 以降
  • Xcode 8.0 以降

Unity プロジェクトをまだ用意していない場合は、いずれかのクイックスタート サンプルをダウンロードし、特定の Firebase 機能をお試しいただけます。クイックスタートを使用する場合は、次のステップでバンドル識別子が必要になるため、プロジェクト設定からバンドル識別子を忘れずに取得してください。

Firebase コンソールでアプリを設定する

アプリに Firebase を追加するには、Firebase プロジェクトと、アプリ用の Firebase 構成ファイルが必要です。

Firebase プロジェクトを作成するには:

  1. Firebase コンソールに移動します。

  2. [プロジェクトを追加] をクリックし、[プロジェクト名] でプロジェクト名を選択するか、新しいプロジェクト名を入力します。

    • アプリに関連付けられた既存の Google プロジェクトがある場合は、[プロジェクト名] プルダウン メニューからプロジェクトを選択します。
    • 既存の Google プロジェクトがない場合は、[プロジェクト名] に新しいプロジェクト名を入力します。
  3. (省略可)プロジェクト ID を編集します。

    Firebase プロジェクトには一意の ID が自動的に割り当てられます。一般公開される Firebase サービスでは、この ID は次のように表示されます。

    • デフォルト データベース URL - your-project-id.firebaseio.com
    • デフォルト ホスティング サブドメイン - your-project-id.firebaseapp.com
  4. 残りの設定手順に沿って操作した後、[プロジェクトを作成](既存の Google プロジェクトを使用する場合は [Firebase を追加])をクリックします。

Firebase プロジェクトのリソースが自動的にプロビジョニングされます。通常、この処理には数分かかります。処理が完了すると、Firebase コンソールに Firebase プロジェクトの概要ページが表示されます。

Android

  1. [Android アプリに Firebase を追加] をクリックし、設定手順に沿って操作します。既存の Google プロジェクトをインポートする場合、このステップは自動的に実行されることがあります。その場合は、構成ファイルをダウンロードするだけでかまいません。
  2. 求められたら、アプリのパッケージ名を入力します。必ずアプリで使用しているパッケージ名を入力してください。パッケージ名を設定できるのは、アプリを Firebase プロジェクトに追加するときだけです。
  3. 処理中に google-services.json ファイルをダウンロードします。このファイルは、いつでもダウンロードできます。
  4. 初期化コードを追加したらアプリを実行して、Firebase を正常にインストールしたという確認を Firebase コンソールに送信します。

iOS

  1. [iOS アプリに Firebase を追加] をクリックして設定手順に沿って操作します。既存の Google プロジェクトをインポートする場合、このステップは自動的に実行されることがあります。その場合は、構成ファイルをダウンロードするだけでかまいません。
  2. 求められたら、アプリのバンドル ID を入力します。必ずアプリで使用しているバンドル ID を入力してください。バンドル ID を設定できるのは、アプリを Firebase プロジェクトに追加するときだけです。
  3. 処理中に GoogleService-Info.plist ファイルをダウンロードします。このファイルは、いつでもダウンロードできます。
  4. 初期化コードを追加したらアプリを実行して、Firebase を正常にインストールしたという確認を Firebase コンソールに送信します。
  5. Firebase コンソールからダウンロードした GoogleService-Info.plist を、Unity プロジェクトの任意のフォルダにドラッグします。

アプリに Firebase Unity SDK を追加する

  1. Firebase Unity SDK をダウンロードします。
  2. [Assets] > [Import Package] > [Custom Package] メニュー項目を選択します。
  3. 使用している Unity のバージョンと一致するディレクトリから FirebaseRemoteConfig.unitypackage をインポートします。
    • Unity 5.x 以前では、.NET 3.x フレームワークを使用しているため、dotnet3/FirebaseRemoteConfig.unitypackage パッケージをインポートする必要があります。
    • Unity 2017.x 以降では、.NET 4.x フレームワークを使用できます。プロジェクトが .NET 4.x を使用するように構成されている場合は、dotnet4/FirebaseRemoteConfig.unitypackage パッケージをインポートします。
  4. [Import Unity Package] ウィンドウが表示されたら [Import] ボタンをクリックします。

SDK の初期化

Android の Firebase Unity SDK には Google Play 開発者サービスが必要であり、SDK を使用する前に最新版にしておく必要があります。次のコードをアプリケーションの先頭に追加して、SDK で他のメソッドを呼び出す前に Google Play 開発者サービスを確認し、必要であれば、Firebase Unity SDK で必要とされるバージョンに更新します。

Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task => {
  var dependencyStatus = task.Result;
  if (dependencyStatus == Firebase.DependencyStatus.Available) {
    // Create and hold a reference to your FirebaseApp, i.e.
    //   app = Firebase.FirebaseApp.DefaultInstance;
    // where app is a Firebase.FirebaseApp property of your application class.

    // Set a flag here indicating that Firebase is ready to use by your
    // application.
  } else {
    UnityEngine.Debug.LogError(System.String.Format(
      "Could not resolve all Firebase dependencies: {0}", dependencyStatus));
    // Firebase Unity SDK is not safe to use here.
  }
});

アプリをビルドする

Android

  1. [File] > [Build Settings] メニュー項目を選択します。
  2. [Platform] リストから [Android] を選択します。
  3. [Switch Platform] をクリックし、ターゲット プラットフォームとして [Android] を選択します。
  4. Unity ステータスバーの右下隅にあるスピナー(コンパイル中)アイコンが停止するまで待ちます。
  5. [Build and Run] をクリックします。

iOS

  1. [File] > [Build Settings] メニュー項目を選択します。
  2. [Platform] リストから [iOS] を選択します。
  3. [Switch Platform] をクリックし、ターゲット プラットフォームとして [iOS] を選択します。
  4. Unity ステータスバーの右下隅にあるスピナー(コンパイル中)アイコンが停止するまで待ちます。
  5. [Build and Run] をクリックします。

アプリ内デフォルト パラメータ値を設定する

Remote Config オブジェクトにデフォルトのパラメータ値を設定しておくと、サービスから値が取得されない場合にデフォルト値を使用することができます。これにより、Remote Config サービスに接続する前にアプリを意図したとおりに動作させることができます。

これを行うには、文字列辞書を作成し、追加するデフォルトを表す Key-Value ペアを入力します(SetDefaults を呼び出すと、文字列以外のプロパティはそのプロパティの型に変換されます)。

System.Collections.Generic.Dictionary defaults =
  new System.Collections.Generic.Dictionary();

// These are the values that are used if we haven't fetched data from the
// service yet, or if we ask for values that the service doesn't have:
defaults.Add("propertyname_string", "default local string");
defaults.Add("propertyname_int", 1);
defaults.Add("propertyname_float", 1.0);
defaults.Add("propertyname_bool", false);

Firebase.RemoteConfig.FirebaseRemoteConfig.SetDefaults(defaults);

アプリ内で使うパラメータ値を取得する

ここまでの手順で、パラメータ値を Remote Config オブジェクトから取得できるようになりました。Remote Config サービスに設定した値をフェッチし、有効化すると、それらの値をアプリで使用できるようになります。または SetDefaults() を使って設定したアプリ内パラメータ値を取得します。

アプリ内パラメータ値を取得するには、GetValue() を呼び出します。このとき、引数としてパラメータキーを指定します。これは、ConfigValue を返します。ConfigValue には、値をさまざまな基本タイプに変換するプロパティがあります。

Firebase コンソールでアプリを接続する

Firebase コンソールでアプリを Firebase プロジェクトに追加します。

必要に応じてパラメータ値をサービスに設定する

  1. Firebase コンソールでプロジェクトを開きます。
  2. メニューから [Remote Config] を選択して Remote Config ダッシュボードを表示します。
  3. アプリで定義したパラメータと同じ名前のパラメータを定義します。それぞれのパラメータにデフォルト値(最終的にはアプリ内デフォルト値をオーバーライドします)や条件値を設定することができます。詳しくは Remote Config のパラメータと条件をご覧ください。

必要に応じてサービスから値をフェッチし、有効化する

Remote Config サービスからパラメータ値をフェッチするには、FetchAsync() メソッドを呼び出します。Remote Config サービスに設定したすべての値がフェッチされ、Remote Config オブジェクトにキャッシュされます。

FetchAsync() によってフェッチされた値は、フェッチが完了するとローカルにキャッシュされますが、ActivateFetched() が呼び出されるまでは使用できません。FetchAsync() は非同期で実行されるため、新しい値が計算途中の場合や、問題や異常な動作を引き起こす可能性のある場合は適用されないようにすることができます。

(オプション)デベロッパー モードを有効にする

開発中にスロットリングを無効にするためにデベロッパー モードを有効にするには、FirebaseRemoteConfig.Setting プロパティを使用して新しい ConfigSettings を設定し、IsDeveloperMode を true に設定します。

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。