本地貨幣信息 V2
作用
可選。gamedreamerLocalInfoV2 用於查詢遊戲配置檔位在當前 Google Play 地區的本地化價格。
接口會先讀取後台配置的價格檔位與商品映射,再查詢 Google Play Billing 商品價格,最後按價格檔位回調給遊戲。
函數
java
import com.gd.sdk.GDSDK;
import com.gd.sdk.listener.GamedreamerLocalInfoListenerV2;
public static void gamedreamerLocalInfoV2(
Context context,
GamedreamerLocalInfoListenerV2 gamedreamerLocalInfoListener)參數
| 參數 | 說明 |
|---|---|
context | Android Context 對象 |
gamedreamerLocalInfoListener | GamedreamerLocalInfoListenerV2 回調器,位於 com.gd.sdk.listener |
回調
onLocalInfo 回調
java
void onLocalInfo(HashMap<String, Object> map)查詢成功時回調。外層 Map 的 key 是後台配置的業務價格檔位,例如 0.99;value 是對應的價格信息 Map。
onFail 回調
java
void onFail(String message)查詢失敗時回調,message 為失敗信息。
返回結構
json
{
"0.99": {
"amount": "33",
"currency": "TWD",
"currencySymbol": "$",
"formattedPrice": "$33.00"
}
}外層 Map
外層 key 是後台配置的價格檔位,例如 0.99、2.0,用於對應遊戲內的充值檔位。它不是本地貨幣金額,也不是商品 ID。
內層欄位
| 欄位 | 說明 |
|---|---|
amount | 商店報價的純數字金額,不包含貨幣符號、貨幣代碼、千分位或空格。小數點固定使用 .,並去除無意義的尾零。 |
currency | 商店返回的 ISO 4217 貨幣代碼,例如 TWD、HKD、USD。需要判斷或記錄幣別時使用此欄位。 |
currencySymbol | 根據裝置顯示 Locale 取得的一般貨幣符號,可能因語言、地區及系統版本不同而返回 $、NT$ 或 TWD。不保證與 formattedPrice 中的符號一致。 |
formattedPrice | 可直接展示給使用者的完整本地化價格,包含商店決定的貨幣符號、金額、小數位、分組分隔符及符號位置。 |
amount、currency 和 formattedPrice 來自同一筆商店報價;currencySymbol 只用於提供裝置 Locale 對應的一般貨幣符號。不要從 formattedPrice 反解析金額或幣別,也不要自行拼接貨幣符號與金額。
示例代碼
java
GDSDK.gamedreamerLocalInfoV2(this, new GamedreamerLocalInfoListenerV2() {
@Override
public void onLocalInfo(HashMap<String, Object> map) {
Object itemObject = map.get("0.99");
if (!(itemObject instanceof Map)) {
return;
}
Map<?, ?> item = (Map<?, ?>) itemObject;
String amount = String.valueOf(item.get("amount"));
String currency = String.valueOf(item.get("currency"));
String currencySymbol = String.valueOf(item.get("currencySymbol"));
String formattedPrice = String.valueOf(item.get("formattedPrice"));
// 直接展示價格時使用 formattedPrice,例如 "$33.00"。
priceTextView.setText(formattedPrice);
}
@Override
public void onFail(String message) {
Log.e("Game", "local price query failed: " + message);
}
});使用建議
- 價格 UI 直接展示時,優先使用
formattedPrice。 - 需要自行排列金額和符號時,使用
amount、currencySymbol,並自行處理符號位置和空格。 - 需要判斷或記錄幣別時,使用
currency,不要根據currencySymbol判斷。 - 不要使用外層價格檔位作為商品 ID,也不要在 V2 結果中尋找
productId。 onFail回調時不要使用不完整的價格資料;需要展示價格時應等待下一次成功查詢。- 返回失敗時,建議使用美金作為備用方案。