Cấu hình từ xa

Thay đổi chỉ số cân bằng, giá và cờ tính năng mà không cần phát hành bản cập nhật. Mọi phản hồi đều được ký, xác minh trên thiết bị và lưu đệm để chơi offline.

Chú thích trong mã và tên API được giữ nguyên tiếng Anh để khớp với SDK.

Trên trang này

Kiểu giá trị#

Tạo khóa trên trang Cấu hình từ xa. Giá trị được lưu dạng văn bản kèm một kiểu cho SDK biết cách đọc:

KiểuVí dụGiới hạn
stringWelcome back!Tối đa 10.000 ký tự
number25Mọi số hữu hạn
booleanfalsetrue hoặc false
json{"sale": 0.2}Tối đa 50.000 byte

Đọc giá trị#

Getter không bao giờ thất bại: chúng trả về giá trị dự phòng của bạn khi khóa không tồn tại hoặc không chuyển đổi được.

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

Tải và cập nhật#

Unity và Godot tải cấu hình khi game khởi động; trên web, bạn tự gọi fetch(). Các lần tải sau gửi kèm ETag, nên cấu hình không đổi chỉ tốn một phản hồi 304 rất nhỏ.

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 và bộ nhớ đệm#

Cấu hình đã xác minh gần nhất được lưu đệm trên thiết bị và nạp khi khởi động, nên getter vẫn hoạt động khi offline và trước khi lần tải đầu tiên hoàn tất. Lần tải thất bại do mạng vẫn giữ bản đã lưu đệm; cấu hình cũ hơn bản đã lưu đệm sẽ bị từ chối.

Xác minh chữ ký#

data là payload base64url, checksum là SHA-256 của payload và signature là chữ ký RSA-SHA256 trên data, được tạo bằng khóa riêng tư trong storage/keys/. SDK kiểm tra cả ba, cùng với ID dự án và phiên bản, trước khi dùng một cấu hình.

SDKNguồn của khóa công khai
UnityTools ▸ Majacloud ▸ Setup ▸ Test connection
GodotProject ▸ Tools ▸ Majacloud: Test connection
WebTùy chọn configPublicKey (chuỗi PEM trên trang Khóa API)
RESTGET /v1/project → config_public_key_pem
Nếu chưa ghim khóa, SDK sẽ tải khóa ở lần dùng đầu tiên. Hãy ghim khóa cho bản build production, và nhớ sao lưu storage/keys/: game đã ghim khóa công khai tương ứng.

Bạn có thể tự xác minh phản hồi bằng 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

Lịch sử và khôi phục#

Mọi thay đổi đều được lưu phiên bản. Bảng điều khiển giữ lịch sử từ 7 đến 365 ngày tùy theo gói và khôi phục bất kỳ giá trị cũ nào chỉ với một cú nhấp.

Tìm theo tiêu đề trang, đề mục và nội dung.

↑↓ để di chuyển ↵ để mở Esc để đóng