【发布时间】:2019-01-20 18:38:22
【问题描述】:
我有一个 Android 应用,用户可以购买一个应用内购买项目。
根据 Google 文档,我在启动时运行 queryPurchases() 以检查应用应该以免费版还是付费版启动。
这是来自 Google 的文档:
在您的代码中至少调用两次 queryPurchases():
每次您的应用启动时,您都可以恢复任何购买 自应用上次停止后用户所做的。
在你的 onResume() 方法,因为用户可以在您的应用处于 背景(例如,在 Play 商店应用中兑换促销代码)。
本地 Google Play 服务会缓存用户购买的内容,因此该功能即使在离线模式下也能正常工作。
我已经完成了,效果很好。
但是,如果我清除 Google Play 应用程序的缓存或在离线模式下等待 8-12 小时,queryPurchases() 方法会返回错误(该方法无法获取购买,因为本地 Google Play 缓存已过期)。如果我将设备重新连接到网络,一切都会再次正常运行。
现在,在网上寻找解决方案,似乎非常不鼓励将应用内购买本地存储在应用内部存储中以应对此问题。
我的应用程序打算离线使用,但如果queryPurchases() 失败,我不喜欢将其恢复为免费版本的想法(从用户的角度来看,这会很烦人)。如果queryPurchases() 失败(用户可能开始利用这种行为),我也不喜欢“给予怀疑的好处”并开始付费版本的想法。
目前,该应用只显示一条弹出错误消息,要求将设备连接到互联网。遇到此问题的用户(他们的设备离线时他们的 Google Play 缓存失效)抱怨该应用程序不是真正的离线应用程序,因为他们看到一条弹出消息要求他们连接到互联网,他们是对的。
我该怎么办?
【问题讨论】:
-
你最终是如何实现存储的缓存的?我目前处于类似情况,但也有订阅。
-
你有没有解决这个问题?我刚刚在这里问了一个类似的问题:stackoverflow.com/questions/62027898/…
标签: android google-play in-app-purchase in-app-billing