2014-09-19 71 views
14

我被Google In App v3卡住了 - 我测试了没有消费的购买(例如,应用程序在购买和消费之间崩溃) - 现在我不找不到出路。Android消费品:“已经拥有该商品”,但inventory.hasPurchase()为虚假

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

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

我可以不消耗任何东西,因为我没有购买消费。如何在这里继续?

编辑 重现它像下面这样:购买应用内消耗品,然后禁用互联网连接。之后,您几个小时内无法再购买该产品。刚刚通过Play商店(Diamond Digger Saga)的流行应用进行测试,我的行为完全相同。真的没有可能避免/解决这个问题吗?

+0

您是否使用您的Google帐户登录了您的Android设备? – 2014-09-23 08:52:15

+0

是的 - 我需要登录到该帐户才能从Play商店中的测试版测试人员加载应用 – swalkner 2014-09-23 09:52:59

+0

试用库存inv = mHelper.queryInventory(true,list_of_skus);? – ElDuderino 2014-09-23 15:59:00

回答

0

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

唉,经过几次运行的应用程序后,我遇到了你的问题。我放弃了试图同时从手机中删除开发者帐户。虽然令人难以置信的不便,但是这样做却解决了这个问题,并且允许我测试购买,消费,查询等。

0

如果您正在做的一切都正确并且您的代码没问题 - 最可能的问题是缓存的Google Play服务数据。

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

要解决此问题,请尝试打开Goog​​le Play并使用Recent Apps按钮将其关闭(单击它,然后将应用程序划过应用程序),这将比通常的“后退”按钮更快地终止应用程序。然后关闭设备几分钟。

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

请确定您使用的是WiFi,因为如果您使用的是移动数据,它可能会更新很少。 最终数据将被更新,您将得到您的购买。 在我的情况下,它发生在5分钟或smth之后。