【问题标题】:Android consumable: "already own that item" but inventory.hasPurchase() is falseAndroid 消耗品:“已经拥有该物品”但 inventory.hasPurchase() 为 false
【发布时间】:2014-09-19 05:53:13
【问题描述】:

我被 Google In App v3 卡住了 - 我测试了一次没有消费的购买(例如,当应用在购买和消费之间崩溃时) - 现在我找不到出路。

如果我再次尝试购买,它会显示“您已经拥有该商品”。但是当我测试所有权时,它说我不拥有它:

Inventory inv = mHelper.queryInventory(false, null);
inv.getPurchase(sku); // null
inv.hasPurchase(sku); // false

我也不能消费,因为我没有要消费的东西。此处如何进行?

编辑 复制如下:购买应用内消耗品,然后禁用互联网连接。之后,您将在几个小时内无法再次购买该产品。刚刚使用 Play 商店(Diamond Digger Saga)中的一款流行应用程序进行了测试,我的行为完全相同。真的没有可能避免/解决这个问题吗?

【问题讨论】:

  • 您是否使用用于测试应用的 Google 帐户登录到您的 Android 设备?
  • 是的 - 我需要登录到该帐户才能从 Play 商店的 beta 测试人员加载应用
  • 试试 Inventory inv = mHelper.queryInventory(true, list_of_skus);?
  • 完全相同的问题...
  • 完全正确。我可以在圆顶时间后再次购买(或在删除 Play 商店的缓存后!),例如相同的行为。 Diamond Digger Saga 和我的应用程序。

标签: android in-app-purchase


【解决方案1】:

我遇到了这个确切的问题。我在手机上有两个 Google 帐户,一个是开发者帐户(我愚蠢地使用了我的个人帐户),另一个是我在开发者控制台中注册的测试帐户。我已经从我的手机帐户中删除并重新添加了开发者帐户,这使我可以从我的应用程序中进行测试购买,考虑如果开发者帐户是此列表中的第二个,它将使用第一个进行购买。

唉,在运行了几次应用程序后,我遇到了您的问题。我放弃了两者的尝试,并从我的手机中删除了开发者帐户。虽然非常不方便,但它摆脱了这个问题,让我可以测试购买、消费、查询等。

【讨论】:

    【解决方案2】:

    如果您做的一切正确并且您的代码正常 - 很可能问题出在缓存的 Google Play 服务数据中。

    例如,当您在设备 A 上进行测试购买时 - 在设备 B 上(使用相同的 Google 帐户登录)您将在一段时间内继续收到inventory 而无需购买。你的inventory.getPurchase(sku) 将返回nullinventory.hasPurchase(sku) 将返回false;

    要解决此问题,请尝试打开 Google Play 并使用“最近使用的应用程序”按钮将其关闭(单击它然后将应用程序滑开),这将比通常的“返回”按钮更快地终止应用程序。然后关闭您的设备几分钟。

    我们的目标是让 Google Play 更新它的缓存。

    确保您使用的是 wifi,因为如果您使用的是移动数据网络,它可能很少更新。 最终数据将被更新,您将获得购买。 就我而言,它发生在 5 分钟或之后。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多