设备离线时检查Inapp购买

时间:2019-01-20 18:38:22

标签: android google-play in-app-purchase in-app-billing

我有一个Android应用,用户可以购买一个应用内购买。

根据Google文档,我在启动时运行queryPurchases(),以检查该应用程序应以免费版还是付费版启动。

这是Google的文档:

  

在您的代码中至少两次调用queryPurchases():

     
      
  • 每次启动应用程序,以便您可以恢复所有购买   自应用程序上次停止以来用户所做的操作。

  •   
  • 在您的onResume()中   方法,因为用户可以在您的应用程序位于   背景(例如,在Play商店应用中兑换促销代码)。

  •   

本地Google Play服务会缓存用户购买的商品,因此该功能即使在离线模式下也可以使用。

我已经做到了,效果很好。

但是,如果我清除了Google Play应用的缓存,或者在离线模式下等待了8-12个小时,则queryPurchases()方法会返回错误(该方法无法获取购买信息,因为本地Google Play缓存已过期)。如果我将设备重新连接到网络,那么一切都会恢复正常。

现在,在网上寻找解决方案时,强烈建议不要在应用程序内部存储中本地存储inapp购买,以解决此问题。

我的应用程序打算离线使用,但是我不喜欢在queryPurchases()失败的情况下将其恢复为免费版本的想法(从用户的角度来看,这很烦人)。如果queryPurchases()失败(用户可能开始利用此行为),我也不喜欢“给怀疑带来好处”的想法,而是从付费版本开始。

目前,该应用程序仅显示一条弹出错误消息,要求将设备连接到互联网。遇到此问题(设备离线时Google Play缓存无效)的用户抱怨该应用程序不是真正的离线应用程序,因为他们看到一条弹出消息,要求他们连接到互联网,并且正确。 >

我该怎么办?

1 个答案:

答案 0 :(得分:1)

自己本地缓存queryPurchases的结果。如果离线,则返回该结果。然后,您唯一的失败案例是有人买东西然后迅速下线,这是一个真正的极端案例(在这种情况下,他们需要连接)。