Skip to content

本地貨幣信息 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)

參數 ​

參數說明
contextAndroid Context 對象
gamedreamerLocalInfoListenerGamedreamerLocalInfoListenerV2 回調器,位於 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 回調時不要使用不完整的價格資料;需要展示價格時應等待下一次成功查詢。
  • 返回失敗時,建議使用美金作為備用方案。