离线接受应用内购买+删除已取消的购买

约瑟夫·麦克德莫特

这篇文章标题中涉及两个项目的方法似乎相互冲突,并且很难测试,正是这些极端情况导致购买的产品停止工作时客户不满意。

关于Stack Overflow的许多讨论都已经有2年多的历史了,尚无定论,它们引用的是已弃用的AIDL库,而不是Google Play结算服务。

我想确保用户可以离线访问我的Android应用程序的高级版本,该高级版本是通过Google Play上的一次性非消耗性应用程序内产品购买的。我还想防止客户购买应用内的升级,然后激活它,然后取消/要求退款,并保留使用高级功能的权限。

该文档指出,我们可以信任getPurchasesList()始终退回客户可以访问的产品:https : //developer.android.com/google/play/billing/billing_library_overview

但是,我还看到一些相互矛盾的报告,即当客户下线时(例如,在长途旅行中),getPurchasesList()之后的Google缓存最终会过期,这将导致客户失去对高级内容的访问权限。有人声称Google缓存会在12个小时后过期,但是我将手机置于飞行模式14个小时,并且仍然从getPurchasesList()得到响应,因此这些声明可能已经过时了。

当Google帐单缓存过期时,响应的结构是什么?从客户未进行任何购买或已退还购买商品的响应中可以看出。假设当缓存过期时,我们收到了来自Google的空响应,我们如何确定这些之间的区别:

  • getPurchasesList() 不包含任何购买,因为客户从未进行过任何购买。
  • getPurchasesList() 不包含任何购买,因为客户获得了退款。
  • getPurchasesList() 不包含任何购买商品,因为缓存已过期,但客户确实购买了商品并拥有了该商品。

除非我在某处丢失了某些内容,否则关于此重要场景,缓存生存期,如何对其进行测试等方面的官方文档似乎很少。

我当然可以维护自己对客户购买的产品的缓存,例如。存储一个令牌,令牌必须至少每3天从Google Billing更新一次,否则您将失去访问权限,但这真的是正确的方法吗?

詹卢卡·加蒂尼(Gianluca Ghettini)

恕我直言,本地存储getPurchasesList()响应绝对可以。我会详细说明。

这完全取决于您的威胁模型:对我而言,用户无法更改应用程序代码本身,也无法访问应用程序的私有存储。如果用户可以这样做,那么一切都会崩溃,因为用户可以愉快地删除或跳过限制应用功能的代码。

因此,鉴于用户无法更改应用程序或无法访问应用程序私有存储的威胁模型,您可以轻松地缓存getPurchasesList()响应令牌并在设备离线时使用它。

显然,对令牌的任何更新也必须反映到缓存中。(例如过期或退款状态)

我也同意您的看法,即Google并未提供有关如何处理极端情况的足够信息,它们只是展示了万事俱备的令人高兴的情况。

我必须承认,我没有彻底研究它们提供的示例应用程序:https : //github.com/android/play-billing-samples

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

应用内购买已购买

来自分类Dev

应用内购买是否可以在离线模式下使用?

来自分类Dev

已购买应用内购买的消耗品

来自分类Dev

恢复应用内购买

来自分类Dev

应用内动态购买

来自分类Dev

应用内购买Swift

来自分类Dev

应用内购买-无需购买即可还原

来自分类Dev

在应用内购买-购买错误的产品

来自分类Dev

应用拒绝-应用内购买

来自分类Dev

如何处理退款/取消应用内购买

来自分类Dev

测试Android应用程序内购买:购买的订阅会自动取消而不是自动续订吗?

来自分类Dev

在应用内购买-尝试再次购买易耗品时-该应用内购买已被购买

来自分类Dev

如何根据Apple ID在iOS中检查已购买或未使用应用内购买的用户

来自分类Dev

从iOS应用中删除应用内购买选项

来自分类Dev

与应用删除相关的消耗性应用内购买

来自分类Dev

从iOS应用中删除应用内购买选项

来自分类Dev

检查是否已购买应用内付款项

来自分类Dev

迅速恢复应用内购买

来自分类Dev

Cordova 3应用内购买

来自分类Dev

Android应用内购买责任

来自分类Dev

应用内购买密码提示

来自分类Dev

应用内购买Swift游戏

来自分类Dev

iOS应用内购买可免费提供广告:这是Apple会接受的东西吗?

来自分类Dev

在应用内购买后重新加载SKScene或View以删除iAd

来自分类Dev

如何进行应用内购买删除广告

来自分类Dev

用户进行应用内购买时删除广告

来自分类Dev

在应用内购买时删除RevMob广告横幅

来自分类Dev

在应用商店外进行应用内购买

来自分类Dev

付费应用的iOS应用内购买