升级Google Play Billing至5.1.0,求SkuDetails.getOriginalJson()官方替代方法
Google Play Billing 5.1.0 替代 SkuDetails.getOriginalJson() 的官方方案
在Google Play Billing 5.x版本中,官方确实移除了SkuDetails.getOriginalJson()方法——这是因为新版本重构了商品信息的模型设计,官方推荐直接通过ProductDetails的公开API获取字段,而非依赖原始JSON数据,原始JSON属于内部实现细节,Google不保证其结构的稳定性,未来版本可能随时变更。
最优官方解决方案
直接使用ProductDetails提供的公开getter方法提取所需字段,自行构建需要发送给后端的JSON或数据结构,示例常用字段获取:
- 商品ID:
productDetails.getProductId() - 商品类型(一次性购买/订阅):
productDetails.getProductType() - 商品标题:
productDetails.getTitle() - 商品描述:
productDetails.getDescription() - 价格信息:
- 一次性商品:
productDetails.getOneTimePurchaseOfferDetails()(可获取价格、货币代码等) - 订阅商品:
productDetails.getSubscriptionOfferDetails()(包含不同订阅档位的价格、周期等信息)
- 一次性商品:
不推荐的方案及风险
- 访问内部
JSONObject成员:该成员被标记为@hide,属于非公开API,直接反射访问会触发编译警告,且Google随时可能修改内部实现导致代码崩溃。 - 从
toString()解析内容:toString()的输出格式没有官方规范,版本更新后内容结构可能发生变化,依赖该方式会带来兼容性隐患。
内容的提问来源于stack exchange,提问作者Doron Yakovlev Golani
相关产品推荐
相关产品推荐

