รีโมตคอนฟิก

เปลี่ยนค่าบาลานซ์ ราคา และฟีเจอร์แฟล็กได้โดยไม่ต้องออกอัปเดต ทุกการตอบกลับมีลายเซ็น ตรวจสอบบนอุปกรณ์ และแคชไว้สำหรับเล่นออฟไลน์

คอมเมนต์ในโค้ดและชื่อ API ยังคงเป็นภาษาอังกฤษเพื่อให้ตรงกับ SDK

ในหน้านี้

ประเภทค่า#

สร้างคีย์ในหน้า รีโมตคอนฟิก ค่าจะถูกเก็บเป็นข้อความพร้อมประเภทที่บอก SDK ว่าต้องอ่านค่าอย่างไร:

ประเภทตัวอย่างขีดจำกัด
stringWelcome back!สูงสุด 10,000 ตัวอักษร
number25ตัวเลขใดก็ได้ที่ไม่ใช่ค่าอนันต์
booleanfalsetrue หรือ false
json{"sale": 0.2}สูงสุด 50,000 ไบต์

อ่านค่า#

Getter ไม่มีวันล้มเหลว โดยจะคืนค่าสำรองของคุณเมื่อไม่มีคีย์หรือแปลงค่าไม่ได้

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 ดึงคอนฟิกเมื่อเกมเริ่มต้น ส่วนบนเว็บให้เรียก fetch() เอง การดึงครั้งต่อๆ ไปจะส่ง 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)" : ""));

ออฟไลน์และการแคช#

คอนฟิกที่ตรวจสอบแล้วล่าสุดจะถูกแคชไว้บนอุปกรณ์และโหลดตอนเริ่มเกม getter จึงใช้งานได้ทั้งตอนออฟไลน์และก่อนการดึงครั้งแรกจะเสร็จ หากการดึงล้มเหลวเพราะเครือข่าย จะยังใช้สำเนาในแคชต่อไป และคอนฟิกที่เก่ากว่าสำเนาในแคชจะถูกปฏิเสธ

การตรวจสอบลายเซ็น#

data คือเพย์โหลดแบบ base64url ส่วน checksum คือ SHA-256 ของเพย์โหลด และ signature คือลายเซ็น RSA-SHA256 ของ data ที่สร้างด้วย private key ใน storage/keys/ SDK จะตรวจสอบทั้งสามค่า รวมถึง Project ID และเวอร์ชัน ก่อนใช้คอนฟิก

SDKที่มาของคีย์สาธารณะ
UnityTools ▸ Majacloud ▸ Setup ▸ Test connection
GodotProject ▸ Tools ▸ Majacloud: Test connection
Webตัวเลือก configPublicKey (PEM ในหน้าคีย์ API)
RESTGET /v1/project → config_public_key_pem
หากไม่ได้ปักหมุดคีย์ไว้ SDK จะดึงคีย์มาเมื่อใช้งานครั้งแรก ควรปักหมุดคีย์สำหรับบิลด์ production และสำรอง 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 เพื่อปิด