我已经在我的应用程序中使用计费服务实现了应用程序购买(托管),当用户想要购买物品时,他将做出购买请求,即使用户已经购买了该物品也需要互联网。所以为了方便用户,我正在这样做,如果用户已经购买了该项目,那么值将被保存在共享的前缀中。并且当用户点击该特定项目时,首先它将检查共享前缀。价值,无论用户是否已经购买物品,如果不是,则去购买请求,否则显示他/她的物品。 我的问题是,这是安全的方式?或者我还要做别的事情?Android应用程序内购买检查买家离线
6
A
回答
8
这并不安全。我会阻止你以这种方式实施这样的检查。你应该采用标准方法并使用getPurchases()方法。您可以随时(甚至离线)调用此方法,并且如果用户已购买,它们将从该方法返回。以下是一个示例代码:
IInAppBillingService service; // initialize it first
Bundle response = service.getPurchases(3, "you app package", "inapp", null);
int responseCode = response.getInt(KEY_RESPONSE_CODE);
if (responseCode == RESPONSE_OK) {
ArrayList<String> purchases = response.getStringArrayList(KEY_INAPP_PURCHASE_ITEM_LIST);
...
}
您需要验证购买是否签署了正确的证书并且购买状态未被取消。但是这比在共享属性中存储数据更安全。这种方法的另一个优点是,用户重新安装应用程序后,所有购买也将在那里自动提供。
1
该技术的完整示例在TrivialDrive示例应用程序中,它适用于我,但是我在考虑离线情况。 Google Play应用缓存了购买内容,并对getPurchases(3,“pkg”,“inapp”,null)进行了脱机响应,但这种方式无限期地运行或者存在类似于此缓存的超时时间...
+0
我试过使用ionic2 inapp插件。它脱机工作,但是当我重新启动设备时,它会发生连接错误!这意味着缓存有一些限制! –
相关问题
- 1. 检查应用程序内购买
- 2. 应用程序内购买购买
- 3. 应用程序内购买 - 应用程序让我购买后再次购买
- 4. 在应用程序内购买检索购买的信息
- 5. 检查是否已购买已购买的应用程序iphone
- 6. 应用程序内购买
- 7. Android应用程序内购买费用
- 8. Android应用程序内购买
- 9. Libgdx + Android应用程序内购买
- 10. iphone - 应用程序内购买查询
- 11. 应用程序内购买 - 知道用户点击“购买”时
- 12. 用iPad购买应用内购买
- 13. Android应用内购买
- 14. Android应用内购买 - RESULT_ITEM_UNAVAILABLE
- 15. iPhone - 应用程序内购买:记录购买
- 16. Catch“应用程序内购买已被购买”事件
- 17. iOS应用程序内购买跟踪购买的物品
- 18. 购买iOS应用程序内购买时的折扣
- 19. 应用程序内购买存储购买状态
- 20. 恢复购买 - 在应用内购买
- 21. 已购买应用内购买
- 22. 应用内购买 - 恢复购买
- 23. 应用内购买iPhone应用程序?
- 24. 没有从应用程序商店购买应用程序内购买弹出
- 25. 应用内购买购买请求不显示购买窗口
- 26. 使用if语句检查多个应用程序内购买
- 27. 苹果应用程序内购买 - 买定制内容
- 28. Android应用内购买流程中断
- 29. iOS应用购买。如何检查购买是否已经购买?
- 30. Android应用程序突然停止 - 应用程序内购买
“您可以致电这种方法在任何时候(甚至是离线)“---它怎么会起作用? – Zotyi