6

Google Play 应用内结算服务{ice,er} V3 将在网络超时条件下返回哪些响应状态代码?这是其所有功能中的统一吗?

4

1 回答 1

8

我将在这里描述我的发现。我已经在安装了全功能 GP(GP Store V3.10.10、GP Services 2.0.12、G Services Framework 4.1.2)的 AVD 上测试了这一点,方法是拔掉主机的插头。

  • 如果可能,该getPurchases()方法返回一个缓存的结果(请注意,我们这里不是在讨论Service 之外的缓存,而是直接调用 getPurchases)。当然,这意味着几乎总是会得到一个缓存的结果,除非由于本地数据丢失而重新初始化服务 - 这种情况不太可能并且通常不需要在应用层。
  • consumePurchase()方法将在假定的内部网络超时 20 秒后返回整数值 6 ( BILLING_RESPONSE_RESULT_ERROR)(因此添加一点时间,直到调用者看到结果代码)。尽管BILLING_RESPONSE_RESULT_ERROR被描述为 a ,但我还是怀疑这一点,Fatal error during the API action因为这里没有其他错误代码有意义;不幸的是,对于诸如超时之类的临时情况,致命一词仍然有些不合适。
  • getSkuDetails()似乎表现得就像consumePurchase(). 更新:现在有证据表明也getSkuDetails()可以访问本地服务中的缓存信息。
  • getBuyIntent()如果该项目已为服务所知,则看起来在没有连接的情况下也可以正常工作。这就解释了为什么 Hartok 会看到空白的 GP 购买屏幕:在没有连接的情况下从 IAB V3 获得购买意图不是问题。

结论:应用内计费服务 V3 似乎可以使用内部缓存和 20 秒的服务器连接超时。对于本地缓存无法解决的服务器通信错误,使用响应代码 6。

于 2013-02-12T10:10:09.867 回答