在将应用内计费集成到客户的项目中时,我遇到了很多看起来很奇怪的行为。我希望有人可以阐明可能是根本原因的原因以及我可以对它们做些什么(如果有的话)。到目前为止几天的谷歌搜索(很多结果导致堆栈溢出)和一些额外的搜索似乎与我们的问题不太一样,但确实给出了一些类似的问题。
作为购买的背景知识,它是购买一个简单益智游戏的世界/关卡包。我们会显示一个手推车来表明该物品是可购买的,一个旋转/加载图标来表明正在进行购买,并且我们会在购买完成时显示世界信息(这个世界中完成的关卡等)。显示微调器时,您无法开始尝试购买(按钮已禁用),但您可以继续正常玩游戏的可用部分。
这似乎适用于相当多的设备,包括现在他们的一个设备,当他们借给我测试时它无法工作,在对代码进行一些小的更改之后,现在每次都可以工作。为了快速列出我们似乎遇到的问题:
- 测试用户购买成功,他们会看到默认的 Google Play Toast,但我最多 5 分钟都没有收到购买成功的消息(到目前为止,我们等待的时间最长)。微调器始终显示。
- 与上述相同,但我们根本没有得到任何回应。将设备放置了一个多小时,但没有任何结果。旋转器永远不会消失。
- 更令人不安的是,有人告诉我,我的一个客户设备在被告知购买成功后显示了我们期望在购买失败时看到的行为。(即微调器被替换为手推车图标,而不是水平数据)。仅当我在购买后收到失败消息时才会发生这种情况。但是,我没有从这个案例中获得任何日志信息,所以我无法确认。
- 注意:此特定错误不再发生,但因此我不得不对代码进行一些更改,如果可能的话我想取消这些更改。按“接受并购买”后,用户会看到一条消息“'错误'此时无法处理您的付款。您可能会收到一封电子邮件,要求您验证您的帐户'。” 发生此错误时,我会同时收到成功和失败响应。
- 在确认付款之前的某个时间点退出购买会导致根本没有收到任何响应,微调器永远不会消失。同样,我没有步骤来重现它,因为描述相当模糊并且没有日志。
请注意,在我们大约一半的测试设备和测试帐户上,购买效果非常好。通常会在 30 秒内收到响应并交付产品。另请注意,Restore Transactions 在所有这些情况下都按预期工作(1、2 和 3 都返回成功响应,而 4 不返回任何内容)。由于问题 2 和 3,我现在将应用程序标记为在启动购买提示后下次启动应用程序时执行恢复事务调用,这似乎是一种解决方法,但问题发生得太频繁以至于无法令人满意.
对于一些快速的技术规格,我使用 Unity3D 和最新版本的 Prime31 插件。我相信这些不是问题,因为我获得的日志信息(通常在问题 2 的情况下)和我自己收集的日志显示没有关于购买状态更改事件的信息,而通常在收到消息时有几个。其中第一个在传递给应用程序之前由设备本身记录。
明天当我访问我的客户办公室时,我应该能够获得受影响设备的列表以及一些日志。但是我认为这与设备无关,因为他们有 2 个 ASUS Nexus 7 可供测试,其中一个始终有效,第二个仍然偶尔显示错误。
任何人都可以对这些问题有所了解吗?这是我第一次尝试使用 Google Play 进行应用内计费,但它并不像最初看起来那么简单。
谢谢