即使 IAP 的价格发生变化,Google Play 应用内结算 v3 getSkuDetails() 也会返回缓存结果

Posted

技术标签:

【中文标题】即使 IAP 的价格发生变化,Google Play 应用内结算 v3 getSkuDetails() 也会返回缓存结果【英文标题】:Google Play in-app billing v3 getSkuDetails() returns cached results even if IAP's prices were changed 【发布时间】:2013-11-01 14:11:43 【问题描述】:

Google Play v3 API 的 IInAppBillingService.getSkuDetails() 方法返回缓存结果。

让我们看看这个场景:

    我在 Google Play 控制台中有一个名为 com.my.item 的商品,价格为 1 美元 我运行我的游戏,调用了 IInAppBillingService.getSkuDetails(),实际上我得到了 1 美元的价格。 现在我返回 Google Play 控制台并将价格更改为 2 美元 我再次运行我的游戏,调用 (2) 中的方法,仍然获得 1 美元。

观察:

    Google Play 购买活动确实显示了正确的价格 ($2) 等待一段时间(大约 2 小时)无济于事。 Google Play 应用上的清除数据可解决此问题。 我们在 Galaxy Nexus (4.3)、三星 Galaxy S3 (4.1.2) 以及最新的 Google Play 版本上进行了测试。

有人遇到过这个问题吗?

谢谢,马克斯。

【问题讨论】:

我认为您正在使用恢复交易来存储应用购买数据,是吗?如果是,请检查此链接:***.com/questions/16871115/…,如果您仍然使用它,那么“PURCHASE_STATE_CHANGED”可能会对您有所帮助。 【参考方案1】:

它缓存在手机上。只需清除手机的 google play 缓存(从设置中)

【讨论】:

谢谢,为我工作。按设置>应用下“Google Play 商店”(com.android.vending) 上的“清除缓存”按钮。【参考方案2】:

目前,无法以编程方式使缓存无效,因此您会从 getSkuDetails() 获得旧结果,直到 Google Play 的缓存刷新,如果网络连接良好,刷新通常应该每 24 小时发生一次。

您报告说您等了几个小时,所以这在预期之内。您能否尝试等待〜24小时,看看缓存是否更新?如果它得到更新,那么它按预期工作。如果不是,那么还有其他问题 - 可能 Google Play 无法在该设备上进行自我更新。

【讨论】:

我在 consol 上制作了一款产品,现在我要对其进行测试,但是当我从设备上测试时,它会显示示例标题,价格为 0.99 美元,你能告诉我为什么会出现这个问题吗?命名专业版,但它向我显示示例标题 谢谢 Bruno,我会这样做并报告我的发现,请您使用此信息更新您的在线开发文档,还是我错过了? 已验证,确实在 24 小时后缓存失效,我们在游戏中看到了新价格。再次感谢布鲁诺 嗨布鲁诺!我刚刚看到您的 Google I/O 讨论了 In-App Billing v3。我想我在文档和 API 逻辑上发现了一些严重的问题,但是我无法在 Google 上找到任何人。如果您不再参与这个项目,请问您看一下这个问题:***.com/questions/30921789/… 并将其转发给相关人员吗?谢谢!

以上是关于即使 IAP 的价格发生变化,Google Play 应用内结算 v3 getSkuDetails() 也会返回缓存结果的主要内容,如果未能解决你的问题,请参考以下文章

如何从Android Google Play中删除测试IAP购买

Appstore IAP 价格等级给出错误的价格

使用 Application Loader 进行批量 IAP 加载,价格等级

IAP(应用内购买)入门价格我如何管理它 iOS?

Swift IAP SK产品显示的价格错误

缓存通过 API 获取的在线价格,除非它们发生变化