2

我们刚刚使用他们新的应用内购买 SDK 在 Amazon Android Store 上推出了我们的游戏。我们看到一些销售导致用户无法获得他们支付的虚拟商品。我已经复制了一个用例,每次都会导致这种情况发生。

基本上,用户发起和 IAP,他们被带到亚马逊购买对话框,他们进行购买,他们得到亚马逊的购买确认对话框。
如果用户单击对话框上的关闭按钮或屏幕底部选项栏上的返回按钮(使用 Kindle Fire),对话框将关闭,并且 IAP 流程会向应用程序发送一条消息,购买已完成成功。我收到消息并处理它,一切都很好。
但是,如果用户点击“主页”按钮,购买确认关闭并且用户被转储到主屏幕,则应用程序永远不会收到购买成功消息。

我正在尝试解决一些问题,因为用户不会关心亚马逊 IAP 实施中消息回执的变幻莫测,他们只关心他们为没有得到的东西付费。我们有 1 件非消耗品,这不是问题,因为我们的应用会在启动时检查以前的购买。但消耗品是另一个问题。你无法恢复那些。

有没有人遇到过这种情况并且有解决方法吗?

4

1 回答 1

1

实际上有 2 个应用程序执行购买。购买由您的应用程序发起,但由设备中的亚马逊 IAP 组件执行,该设备是另一个应用程序。如果您按下主页按钮,这会将应用程序带到后台,并且通常由于 android 的积极内存管理,应用程序会进入休眠阶段甚至被终止,具体取决于设备上的资源利用率。这会导致购买无法到达您的应用。

亚马逊有一个解决方法。如此处所述 - https://developer.amazon.com/public/apis/earn/in-app-purchasing/docs-v2/implementing-iap-2.0,实施 onPurchaseUpdateResponse(),它将在应用程序重新启动。有一小段时间延迟会阻止立即“获取待处理的购买”。

还要确保在项目完成后调用 notifyFullfilment() 给用户。不这样做仍然会导致您的应用程序正常工作;但这可能会对您的获利产生负面影响(有不同的原因,我不会详细说明)。

于 2015-12-16T19:38:12.417 回答