Android inapp计费getSkuDetails返回null

时间:2018-10-08 08:04:54

标签: android in-app-billing

我已经开发了一个Android应用程序,其中包含inapp购买(非消耗品),并且一切正常。

现在,我必须为我的应用程序创建一个新的PRO版本,而不是让非消耗性产品具有订阅产品。

这就是我所做的:

  1. 创建了一个称为pro的新口味。
  2. 更改了此新样式的applicationId com.mydomain.mypackage到com.mydomain.mypackage.pro。

我可以在调试和发行模式下编译并安装我的免费版和专业版,而不会出现问题,并且两个版本同时安装在我的设备中,并显示它们各自的名称和图标,所以我想我已经正确完成了这两个步骤

  1. 在Google中创建了一个ID为com.mydomain.mypackage.pro的新应用。
  2. 填充了Google开发者控制台中的所有字段和图像,以便新应用已完全配置并可以发布(显示绿色复选框)。
  3. 创建了4个订阅项目,其ID为com.mydomain.mypackagepro.plan1monthly,com.mydomain.mypackagepro.plan1annual,com.mydomain.mypackagepro.plan2monthly和com.mydomain.mypackagepro.plan2annual。他们都很活跃。 请注意,在这些ID中,我使用的是mypackagepro而不是mypackage.pro,我想这不是问题。
  4. 在我的专业版代码中,我将InApp结算密钥设置为从服务和API中获取的新密钥。
  5. 在我的代码中,我使用我以前版本中使用的代码来请求新的商品ID,所以我认为这是可以的,因为它可以很好地处理不合格的消耗品。我已经仔细检查了请求的ID是否与我在Google Play控制台中设置的ID相同。
  6. 在发布模式下生成签名的APK,以增强专业性。
  7. 已将此APK安装在我的设备中。
  8. 将此APK上载到我的Alpha频道并发布(我很确定它已发布,并且未处于草稿模式或类似模式)。我在该频道中添加了2个帐户作为测试人员(其中一个是我自己的开发人员帐户)。

此后,如果我启动我的应用程序,则返回的库存为空(我想这还可以,因为我还没有购买任何订阅),但是如果我请求这些ID的详细信息,则getSkuDetails方法将返回null这四个项目。

我已经等了10个小时,以防apk没有完全发布。但是在这10个小时之后,问题仍然存在,queryInventoryAsync返回空库存,而getSkuDetails为每个订阅返回null。

我错过了什么吗?

---编辑---

我必须添加更多信息。 在仔细检查该应用程序是否已发布为Alpha之后,我尝试使用此链接下载该程序:

https://play.google.com/apps/testing/com.mydomain.mypackage.pro

这向我显示了一个网页,告诉我已经受邀测试该应用程序,并且必须接受邀请。

除此之外,还有一个链接可以从Play商店下载该应用。 因此,我接受邀请并从Play商店下载并安装该应用。 我非常确定这将解决错误,但是不幸的是,问题仍然存在,每次我为订阅调用getSkuDetails时,该方法都将返回null。

所以:

  • 应用已发布(测试版)
  • 我是测试人员,接受了邀请。
  • Apk是从Play商店下载并安装的。
  • 4个订阅处于活动状态
  • 订阅的ID与上的ID相同 getSkuDetails,没有错字。
  • 用于初始化iabhelper的密钥ID与com.mydomain.mypackage.pro对应。

但是,getSkuDetails返回null。

1 个答案:

答案 0 :(得分:1)

我终于找到了问题。 我在打电话

mHelper.queryInventoryAsync(true, additionalSkuList, null, mQueryFinishedListener);

在字段中为inapp项传递订阅。完成此操作后,我的应用即可运行:

mHelper.queryInventoryAsync(true, null, additionalSkuList, mQueryFinishedListener);