有没有比在每个应用启动时调用getPurchases更好的方法?

时间:2014-10-06 11:34:07

标签: android in-app-billing android-billing

我有一个应用程序,它提供应用程序内购买以解锁一些功能。根据购买的功能,应用可能需要切换布局。因此,启动时的主要活动通过调用getPurchases()来进行此检查。由于此调用是通过网络进行的,因此我需要显示加载对话框,直到收到响应。然后,我可以将此信息存储在内存中以用于剩余的会话。

然而,我担心的是糟糕的用户体验。每次应用程序启动时,用户都会收到加载对话框,这看起来很糟糕。此外,如果在那个时刻如果互联网出现故障,那么用户可能会在加载时停留很长时间(直到超时),然后应用程序将表现得好像他没有进行任何购买。

或者,我可以选择将购买历史存储为Android sqllite DB中的标记。因此,该应用会从Google结算API获取详细信息,如果该信息尚未包含在数据库中。如果设置了标志,那么应用程序将跳过此检查。但是,我担心带有root电话的用户可能只需打开这些标志即可。

其他开发人员如何处理此事?

1 个答案:

答案 0 :(得分:0)

我正在关注android developer training for in-app billing,似乎您没有遵循相同的文档,因为似乎没有getPurchases()方法。尽管如此,您仍然担心网络呼叫会对用户体验产生负面影响,这可以通过线程来避免。没有必要自己修改代码,只需遵循android documentation并查看示例代码<<android-sdk>>/extras/google/play_billing/samples/TrivialDrive/src/com/example/android/trivialdrivesample,这些代码将在您安装必要的软件包后可用。

至于你对根电话的担忧,我怀疑它们在经济上是不合理的,也就是说,保护你的应用程序的成本可能会超过任何由于根电话而导致的预期损失。