Configuração remota

Altere balanceamento, preços e feature flags sem lançar uma atualização. Toda resposta é assinada, verificada no dispositivo e guardada em cache para jogar offline.

Comentários de código e nomes da API ficam em inglês para corresponder aos SDKs.

Nesta página

Tipos de valor#

Crie chaves na página Configuração remota. Os valores são armazenados como texto, com um tipo que diz ao SDK como lê-los:

TipoExemploLimite
stringWelcome back!Até 10.000 caracteres
number25Qualquer número finito
booleanfalsetrue ou false
json{"sale": 0.2}Até 50.000 bytes

Leia valores#

Os getters nunca falham: eles retornam o seu valor padrão quando uma chave não existe ou não pode ser convertida.

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");

Busca e atualizações#

Unity e Godot buscam a configuração quando o jogo inicia; na web, chame fetch() você mesmo. As buscas seguintes enviam o ETag, então uma configuração inalterada custa apenas uma pequena resposta 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)" : ""));

Offline e cache#

A última configuração verificada fica em cache no dispositivo e é carregada na inicialização, então os getters funcionam offline e antes de a primeira busca terminar. Uma busca que falha por causa da rede mantém a cópia em cache; uma configuração mais antiga que a do cache é recusada.

Verificação de assinatura#

data é o payload em base64url, checksum é o SHA-256 dele e signature é uma assinatura RSA-SHA256 sobre data, feita com a chave privada em storage/keys/. Os SDKs verificam os três, além do ID do projeto e da versão, antes de usar uma configuração.

SDKDe onde vem a chave pública
UnityTools ▸ Majacloud ▸ Setup ▸ Test connection
GodotProject ▸ Tools ▸ Majacloud: Test connection
WebA opção configPublicKey (o PEM na página Chaves de API)
RESTGET /v1/project → config_public_key_pem
Sem uma chave fixada, os SDKs a buscam no primeiro uso. Fixe-a nas builds de produção e inclua storage/keys/ nos seus backups: os jogos fixam a chave pública correspondente.

Você mesmo pode verificar uma resposta com o 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

Histórico e restauração#

Cada alteração é versionada. O painel mantém o histórico por 7 a 365 dias, conforme o plano, e restaura qualquer valor anterior com um clique.

Busca em títulos de páginas, seções e texto.

↑↓ para navegar ↵ para abrir Esc para fechar