Gia*_*ini 5 android in-app-purchase in-app-billing google-play
我有一个 Android 应用程序,用户可以购买一项应用内购买项目。
根据 Google 文档,我queryPurchases()在启动时运行以检查应用程序是否应作为免费版本或付费版本启动。
这是来自谷歌的文档:
在代码中至少调用 queryPurchases() 两次:
每次启动您的应用程序时,您都可以恢复用户自应用程序上次停止以来进行的任何购买。
在您的 onResume() 方法中,因为当您的应用程序处于后台时,用户可以进行购买(例如,在 Play 商店应用程序中兑换促销代码)。
本地 Google Play 服务会缓存用户购买的内容,因此该功能即使在离线模式下也能正常工作。
我已经做到了并且效果很好。
但是,如果我清除 Google Play 应用程序的缓存或在离线模式下等待 8-12 小时,该queryPurchases()方法将返回错误(该方法无法获取购买内容,因为本地 Google Play 缓存已过期)。如果我将设备重新连接到网络,一切都会恢复正常。
现在,在网上寻找解决方案时,似乎非常不鼓励将应用内购买本地存储在应用程序内部存储上来解决此问题。
我的应用程序旨在离线使用,但我不喜欢在queryPurchases()失败时将其恢复为免费版本的想法(从用户的角度来看,这会非常烦人)。我也不喜欢“给予怀疑的好处”的想法,并在失败时从付费版本开始queryPurchases()(用户可能会开始利用这种行为)。
目前,该应用程序仅显示一条弹出错误消息,要求将设备连接到互联网。遇到此问题的用户(他们的 Google Play 缓存在设备离线时失效)抱怨该应用程序不是真正的离线应用程序,因为他们看到一条弹出消息,要求他们连接到互联网,他们是对的。
我应该怎么办?
自己在本地缓存 queryPurchases 的结果。如果离线,则返回到该结果。那么你唯一的失败案例是如果有人买了东西然后很快就离线了,这是一个真正的极端情况(在这种情况下他们需要连接)。
| 归档时间: |
|
| 查看次数: |
1568 次 |
| 最近记录: |