我正在构建一个 Android 应用程序并集成应用内计费。
我在这里使用 Google 推荐的 IabHelper 类。
使用 IabHelper 的方法获取可用产品的信息(例如价格)queryInventoryAsync
可以正常工作(我获得了我在 Google Play 开发者控制台中设置的产品的产品/价格信息)。
在测试购买“托管”产品时,出现两个错误。
第一个错误发生在我点击“购买”按钮购买刚刚成功检索定价信息的产品时,我收到来自 Google Play 的警报,提示“错误:此版本的应用程序不是配置为通过 Google Play 计费。有关详细信息,请查看帮助中心”。
谷歌搜索这会产生一些建议,如果上传到 Google Play 的 apk 的版本号与我正在测试的 apk 的版本号不同,就会发生这样的错误。但令人困惑的是,在显示此警报后(以及在我单击“确定”后),我从未收到有关购买尝试失败的通知。
当我再次点击“购买”按钮重新尝试购买时,这会产生第二个错误。应用程序崩溃是因为 IabHelper 不允许同时激活两个异步操作(第一次失败的尝试永远不会被取消,因为应用程序永远不会发出失败警报,Google 请阅读此内容)。
问题 1:我是否应该做一些不同的事情来导致第一次不成功的购买异步操作被取消(并提醒应用程序以便它可以响应)?显然我会确保版本号是同步的,但这似乎是一个错误。绝不应允许操作在失败时不被取消。
问题 2:一般情况下,是否可以在 Android Studio 以调试模式运行时测试应用内计费?即我可以连接我的设备,在 Android Studio 中点击“在调试中运行”,然后使用断点单步执行代码吗?还是只能在未连接到 Android Studio / 调试器时测试应用内计费?(如果不可能,这将是一种疯狂,但我读过的一些事情表明情况就是这样)。
提前感谢您的任何提示!
编辑:事实证明,当我在我上传到 Google Play 购买的设备上安装相同的 apk 时,效果很好。但问题仍然存在:在连接到 android studio 调试器时,您不能测试应用内计费吗?