如何获取SkuDetails.getPrice()及Unity localizedPriceString返回的货币值列表?
获取SkuDetails.getPrice()/Unity localizedPriceString的货币值列表的方法
首先明确:官方并没有提供这个方法返回的货币符号/值的完整固定列表,因为返回结果完全依赖用户的Google Play商店结算区域、设备区域设置,以及Google Play当前支持的结算货币,是动态变化的。
不过你可以通过以下几种方式获取可用的货币相关信息:
测试收集法:
创建测试SKU,使用Google Play的测试账号,切换不同区域(可调整设备系统区域+Google Play账号区域,或使用合规测试环境工具),调用SkuDetails.getPrice()或Unity的localizedPriceString,收集返回的本地化价格字符串,整理对应的货币符号和格式。这种方式能得到最准确的实际返回结果。参考ISO 4217标准:
Google Play支持的结算货币基本遵循ISO 4217货币代码标准,你可以基于这套标准的货币代码(如USD、EUR、CNY)对应货币符号。需要注意的是,getPrice()返回的是本地化后的字符串,部分地区的格式可能有差异(比如欧元在部分地区会放在金额后方),所以这只能作为参考。单独提取货币代码自行处理:
如果你需要更可控的货币符号显示,建议不要直接依赖getPrice()的完整字符串,而是调用SkuDetails.getCurrencyCode()获取ISO 4217货币代码,再通过以下方式生成符号:- Android端:用
java.util.Currency.getInstance(currencyCode).getSymbol()获取对应符号 - Unity端:用
System.Globalization.CultureInfo.GetCultures(CultureTypes.SpecificCultures).FirstOrDefault(c => new RegionInfo(c.LCID).ISOCurrencySymbol == currencyCode)?.Let(ci => new RegionInfo(ci.LCID).CurrencySymbol)来获取符号
这种方式可以让你自主控制货币符号的显示逻辑,避免依赖getPrice()的固定格式。
- Android端:用
内容的提问来源于stack exchange,提问作者hidd
相关产品推荐
相关产品推荐

