在我们在Android电子市场上提交第一个应用后,我遇到了一个奇怪的问题。该应用程序具有应用内购买功能,在发布之前已经过全面测试(或者至少我是这么认为的。)
我知道类似的问题可能已经存在,但我还没有找到它们,只用几句话就很难描述我的问题。
用户出现问题:
a)从Android Market下载我们的应用程序 b)通过Android Market中的OPEN链接下载后打开应用程序 c)开始购买,将用户带回Android Market d)取消或完成购买
然后:
用户不返回我们的应用程序,而是返回Android Market(显示我们应用程序的说明,其中包含用于打开应用程序的按钮等)。在LogCat中,响应代码从Android Market发送到Purchase Observer,但是我们的应用程序(现在在后台)没有收到代码,因此永远等待来自Android Market的响应。所以这实际上是两个问题,因为购买后用户应该返回Android Market屏幕并不是故意的 - 我们的应用程序应该在历史市场之前。
如果用户在Android电子市场之外打开我们的应用程序(例如主屏幕),一切正常。观察者收到取消或完整的响应代码。
我们已经使用Google自己的应用内结算示例作为我们的基础。
我希望这有点可以理解。
提前致谢
答案 0 :(得分:5)
好吧,我终于找到了答案。
我会尝试在不使用任何代码的情况下解释解决方案:)
PurchaseObserver实例仅在我的活动处于活动状态时可用 - 但在上述示例中它不活动。我错误地认为PurchaseObserver是订单应保存在数据库中的地方 - 只是为了发现您在购买时无法确定PurchaseObserver是否存在。相反,我现在只使用Observer来更改UI,然后通过ResponseHandler处理订单信息和数据库,当在Android Market中进行购买时,它始终会被调用。
我仍然认为用户在购买时(仅当用户通过Android电子市场启动应用时)才会被重新投入Android电子市场而不是我们的应用程序,这很奇怪,但我似乎找不到解决方案或解释
如果没有Android Market上的应用程序,这是不可能测试或重现问题的 - 所以我希望这个解释可以帮助你们不要犯同样的错误;)