loadOwnedPurchasesFromGoogle()无法加载商品及购买历史问题求助
关于缓存读取权限的问题
当系统提示当前应用版本无法访问billing服务时,确实无法读取对应缓存,原因如下:
BillingProcessor.loadOwnedPurchasesFromGoogle()方法的执行逻辑需要先和Google Play Billing服务完成合法性校验,校验不通过时不会触发本地缓存读取流程- 你此前已经清空了SharedPreferences存储的本地购买缓存,在没有成功和Billing服务建立连接的前提下,无法从服务端拉取新的购买数据写入本地,因此缓存长期为空
无需部署即可测试的方案
1. 用Google Play静态测试商品调试
无需将应用版本上传到Play Console发布,直接使用谷歌官方预留的静态测试商品ID替换你的业务商品ID即可完成流程测试,常用测试ID包括:
- 普通消耗品:
android.test.purchased - 订阅商品:
android.test.subscription - 购买失败场景:
android.test.canceled
仅需保证测试设备登录的谷歌账号已加入Play Console的内部测试名单、应用签名和Play Console绑定的测试签名一致即可,无需部署新版本。
2. 本地Mock BillingProcessor返回结果
开发阶段可以直接写模拟逻辑替换真实的BillingProcessor调用,根据测试需要预设商品列表、购买记录、支付结果返回值,完全不需要依赖Google Play服务和线上部署,适合调试前端业务逻辑。
3. 快速恢复原有服务访问能力
你清空SharedPreferences后功能失效,大概率是本地存储的Billing服务关联校验信息被清除,可按以下步骤修复,不需要重新部署版本:
- 清理测试设备上的Google Play客户端缓存,重启设备后重新登录已加入测试名单的谷歌账号
- 确保当前本地编译的安装包签名、版本号和你上传到Play Console内部测试轨道的安装包完全一致,直接本地安装即可正常访问Billing服务
- 核对代码中
R.string.play_console_license对应的许可密钥,确认和Play Console中获取的公钥完全匹配

内容的提问来源于stack exchange,提问作者pilotman
相关产品推荐
相关产品推荐

