Remote Configを使って、アプリ配信中に設定を変えよう

アプリを制作したら、特定の設定を途中で変更したいことがよくあります。たとえば広告実装においても、申請中はテスト用のIDで登録したいけど、公開後は本番用のIDに変更したいなど!そういったときに使えるのがRemote Config!

目次

Remote Configを使う準備

利用する前にいくつか準備が必要です。パッケージはもちろんのこと、Unity Servicesの連携も必要になります。

パッケージ導入

まずはUnityパッケージから導入を行い、使える状態にしましょう。Unityのバージョンが古いと入れられないので注意

  • パッケージマネージャーを開く
    • Window>Package Manager
  • Remote Configを追加
    • 左上プルダウンメニューからUnity Registryを選択
    • 一覧から「Remote Config」を選択
    • インストール

Unity Servicesを連携

Remote Configの設定を使う場合、Unity Servicesとの連携が必要になります。新規プロジェクトにするか、既存のプロジェクトにするか選択することが出来ます。

  • Servicesメニュー
    • Edit>Project Settingsでプロジェクトセッティングウインドを開く
    • Servicesメニューを選択
  • プロジェクトを連携
    • Organizationを選択
    • プロジェクトを選択
      • Use an Existing cloud project:既存のプロジェクトから選択
      • Create a new cloud project:新規プロジェクトを作成
  • 連携!
    • プロジェクトが選択出来たら「Link Unity project to cloud project」ボタンを押して連携
    • 確認用のダイアログが出るのでOK!

Remote Configの初期設定状態を確認とテスト用文字列を追加

連携が出来たら初期状態を確認することが出来ます。あとはこの後使うテスト用のデータとして文字列を追加しましょう

  • Remote Configウインドを表示
    • Window>Remote Configを選択
  • テスト用のデータを追加
    • Add Settingボタンを押す
    • データを追加
      • Key:testkey
      • Type:string
      • Value:teststring(好きな文字列でいいです!)
    • Pushボタンで登録
      • 押し忘れた場合、登録されないので注意
      • Pullボタンを押すと、最新情報を確認できます。登録できたか確認してみよう

※間違えて登録してしまった場合は右側のゴミ箱マークで削除>Push消した情報を登録することで抹消出来ます。

実際にデータを取得してみる

ここまでの準備ができたなら、あとはスクリプトで実際にデータを取得してみたり、変更が反映されるのを確認してみましょう。

スクリプト

Remote Configを使うには

  • ネットに繋がっているか確認
  • UnityServicesの初期化
  • サインイン
  • Remote Configのデータ取得(Fetch)
  • データの取得
    • 今回は文字列なのでGetString
using System.Threading.Tasks;
using Unity.Services.Authentication;
using Unity.Services.Core;
using Unity.Services.RemoteConfig;
using UnityEngine;

public class RemoteConfigTest : MonoBehaviour
{
    public struct userAttributes { }
    public struct appAttributes { }

    private async Task Start()
    {
        if (Utilities.CheckForInternetConnection())
        {
            await UnityServices.InitializeAsync();

            if (!AuthenticationService.Instance.IsSignedIn)
            {
                await AuthenticationService.Instance.SignInAnonymouslyAsync();
            }
        }
        await RemoteConfigService.Instance.FetchConfigsAsync(new userAttributes(), new appAttributes());
        string testValue = RemoteConfigService.Instance.appConfig.GetString("testkey");
        Debug.Log("testkey=" + testValue);
    }
}

動かしてみて確認

空のGameObjectにスクリプトを貼り付けて動かすと、コンソールに表示されたらOK

変更して試してみる

ここまで確認が出来たらあとはいろいろ試してみて下さい

  • 既存のValueを変更し、反映される
  • 新しいValueを追加する

その他の機能

基本的な操作はこれにて終了。実際に利用する場合は他のサービスと初期化やパラメータを取得できるタイミングなどの調整に気をつけて下さい。その他、次のような機能も利用出来ますので開発に合わせて利用して下さい。

環境の設定を行う

デフォルトの状態ではproductionという環境のみ設定されています。いわゆる本番環境というものです。

同じKeyだと同じ値しか持てませんが、開発中や審査中などでエンドポイントやAPIのキーなどを変えることはよくあります。その場合新たな環境を追加して、設定をずらすことが可能です。

環境を追加するにはダッシュボードに移動して、環境の追加を行う必要があります。

プログラムは基本的に同じですが、Fetchをする前にSetEnvironmentIDを呼び出して環境を指定しましょう。

        RemoteConfigService.Instance.SetEnvironmentID("ここに環境のID");
        await RemoteConfigService.Instance.FetchConfigsAsync(new userAttributes(), new appAttributes());
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメント一覧 (3件)

  • いつも有益な記事ありがとうございます。
    広告で質問があります。
    リリース後の自分のアプリを自分の端末にインストールした場合。
    広告をタップしてしまうとGoogleアドモブの規約違反になると聞きました。
    そこで自分のスマホのテストデバイスIDを設定すれば、自分のスマホではテスト広告が流れるみたいです。もしお時間ありましたら、そちらの記事を作っていただければ大変嬉しいです。

    • ご愛読ありがとうございます。
      かしこまりましたー。

コメントする

目次