リモートコンフィグ

アップデートを配信せずに、バランス、価格、機能フラグを変更できます。すべてのレスポンスは署名され、デバイス上で検証され、オフラインプレイ用にキャッシュされます。

コードのコメントと API 名は、SDK と一致させるため英語のままにしています。

このページの内容

値の型#

キーはリモートコンフィグページで作成します。値はテキストとして保存され、SDK が値をどう読み取るかを示す型が付きます。

型例上限
stringWelcome back!最大 10,000 文字
number25任意の有限な数値
booleanfalsetrue または false
json{"sale": 0.2}最大 50,000 バイト

値を読み取る#

ゲッターが失敗することはありません。キーが存在しない場合や変換できない場合は、指定したフォールバック値を返します。

C#
int damage = Majacloud.RemoteConfig.GetInt("enemy_damage", 25);
float speed = Majacloud.RemoteConfig.GetFloat("player_speed", 4.5f);
bool maintenance = Majacloud.RemoteConfig.GetBool("maintenance_mode", false);
string welcome = Majacloud.RemoteConfig.GetString("welcome_message", "Hi!");
ShopConfig shop = Majacloud.RemoteConfig.GetJson<ShopConfig>("shop");

取得と更新#

Unity と Godot はゲームの起動時にコンフィグを取得します。Web では自分で fetch() を呼び出してください。2 回目以降の取得では ETag が送信されるため、コンフィグに変更がなければ小さな 304 レスポンスが返るだけです。

C#
Majacloud.RemoteConfig.ConfigUpdated += config => ApplyBalance();

var fetch = await Majacloud.RemoteConfig.FetchAsync(); // 304 when nothing changed
if (fetch.Ok) Debug.Log("Config v" + fetch.Value.Version + (fetch.Value.Changed ? " (new)" : ""));

オフラインとキャッシュ#

最後に検証されたコンフィグはデバイスにキャッシュされ、起動時に読み込まれます。そのため、オフライン時や最初の取得が完了する前でもゲッターは動作します。ネットワークが原因で取得に失敗した場合はキャッシュが維持され、キャッシュより古いコンフィグは拒否されます。

署名の検証#

data は base64url 形式のペイロード、checksum はその SHA-256、signature は storage/keys/ の秘密鍵で data に対して作成された RSA-SHA256 署名です。SDK はコンフィグを使用する前に、これら 3 つに加えてプロジェクト ID とバージョンを確認します。

SDK公開鍵の取得元
UnityTools ▸ Majacloud ▸ Setup ▸ Test connection
GodotProject ▸ Tools ▸ Majacloud: Test connection
WebconfigPublicKey オプション(API キーページに表示される PEM)
RESTGET /v1/project → config_public_key_pem
公開鍵が固定されていない場合、SDK は初回使用時に鍵を取得します。本番ビルドでは鍵を固定してください。また、ゲームはその公開鍵を固定するため、storage/keys/ を必ずバックアップに含めてください。

OpenSSL を使って、レスポンスを自分で検証することもできます。

bash
# Verify a config response yourself (what every SDK does before using it)
curl -s https://majacloud.majanite.com/v1/project -H "X-Project-ID: $PROJECT_ID" -H "X-Client-Key: $CLIENT_KEY" | jq -r .project.config_public_key_pem > public.pem
curl -s https://majacloud.majanite.com/v1/config -H "X-Project-ID: $PROJECT_ID" -H "X-Client-Key: $CLIENT_KEY" > response.json

jq -j .data response.json > data.txt
jq -r .signature response.json | base64 --decode > signature.bin
openssl dgst -sha256 -verify public.pem -signature signature.bin data.txt   # Verified OK
jq -r .data response.json | tr '_-' '/+' | base64 --decode 2>/dev/null | jq .     # the payload

履歴と復元#

すべての変更はバージョン管理されます。ダッシュボードではプランに応じて 7~365 日間の履歴が保持され、以前の値をワンクリックで復元できます。

ページタイトル、見出し、本文を検索します。

↑↓ で移動 ↵ で開く Esc で閉じる