2017-03-06 52 views
1

我有一些应用程序为我的应用程序购买,每个解锁应用程序的某些部分。缓存应用程序购买或检查Android应用程序每次启动?

这将是真正具有在应用中购买状态的最佳方式,但在一个正确的方式?:

  1. 商店购买,后的实际购买或恢复购买,在SharedPreferences和在应用程序启动时阅读它。这可能会产生问题:在退款的情况下,应用程序将继续有价值。一个扎根的用户可以编辑xml并添加购买项目,如果这样做的话。

  2. 在应用程序启动时执行一个queryInventoryAsync并将结果存储为SharedPreference以备将来在应用程序中使用。如果没有网络,这将允许使用先前的queryInventoryAsync结果中的SharedPreference值。

因为谷歌游戏客户端现在缓存应用程序内本地设备上的账单信息 ,您可以使用API​​第3版,通过一个getPurchases通话更频繁地查询此 信息,例如。 与以前版本的API不同,许多版本3 API调用 将通过缓存查找服务,而不是通过与Google Play的网络 连接,这会显着加快API的 响应时间。

那该怎么办?在每个应用程序启动时queryInventoryAsync是否会因为它应该使用缓存结果而创建任何问题?

回答

0

我在所有游戏中的每个应用程序启动时使用queryInventoryAsync,到目前为止一直没有问题(20万用户)。

+0

谢谢。如果'queryInventoryAsync'失败,你还要存储结果吗? – Alin

+0

不,我不保存结果,以防万一它失败 –

+0

我不单独存储结果。我注意到的一件事是,用户经常抱怨应用程序升级后应用程序无法识别以前的应用内购买。所以我怀疑缓存在升级过程中会被清除,如果应用程序无法及时查询Google的服务器,那么应​​用程序可能暂时显示购买未完成。 – snark