Android 应用内计费 getSkuDetails return 空
Android inapp billing getSkuDetails return null
我开发了一个 Android 应用程序,其中包括应用内购买(非消耗品)并且一切正常。
现在我必须为我的应用程序创建一个新的 PRO 版本,而不是非消耗性产品具有订阅产品。
这是我所做的:
- 创建了一种名为 pro 的新口味。
- 更改了这个新口味的 applicationId 从
com.mydomain.mypackage 到 com.mydomain.mypackage.pro.
我可以在调试和发布模式下毫无问题地编译和安装我的免费版和专业版,并且这两个版本同时安装在我的设备中,并显示它们各自的名称和图标,所以我想我已经完成了这两个正确步骤。
- 在 Google 中创建了一个 ID 为 com.mydomain.mypackage.pro.
的新应用程序
- 填写了 Google 开发人员控制台中的所有字段和图像,以便新应用已完全配置并准备好发布(它显示一个绿色勾号)。
- 使用这些 ID 创建了 4 个订阅项 com.mydomain.mypackagepro.plan1monthly、com.mydomain.mypackagepro.plan1annual、com.mydomain.mypackagepro.plan2monthly 和 com.mydomain.mypackagepro.plan2annual。他们都很活跃。
请注意,在这些 id 中我使用了 mypackagepro 而不是 mypackage.pro,我想这不是问题。
- 在我的 pro flavor 代码中,我将 InApp Billing key 设置为新的,取自 Services and APIs。
- 在我的代码中,我使用我在以前版本中使用的代码请求新项目 ID,所以我想这没问题,因为它可以很好地处理 inapp 消耗品。我仔细检查了请求的 ID 是否与我在 Google Play 控制台中设置的 ID 相同。
- 在发布模式下生成了 pro flavor 的签名 APK。
- 在我的设备中安装了这个 APK。
- 已将此 APK 上传到我的 Alpha 频道并发布(我很确定它已发布,而不是草稿模式或类似模式)。我已将 2 个帐户添加为测试人员(其中一个是我自己的开发者帐户)到此频道。
在此之后,如果我启动我的应用程序,返回的库存是空的(我想这没问题,因为我还没有购买任何订阅),但是如果我请求这些 ID 的详细信息,方法 getSkuDetails returns 4 项为空。
我已经等了 10 个小时,以防 apk 没有完全发布。但是在这 10 个小时之后,问题仍然存在,queryInventoryAsync returns 一个空的库存和每个订阅的 getSkuDetails returns null。
我是不是漏掉了什么??
--- 编辑 ---
我必须添加更多信息。
在仔细检查该应用程序是否发布为 Alpha 后,我尝试使用 link:
下载它
https://play.google.com/apps/testing/com.mydomain.mypackage.pro
这显示了一个网页,告诉我我已被邀请测试该应用程序并且我必须接受邀请。
除此之外还有 link 从 Play 商店下载应用程序。
所以我接受邀请并从 Play 商店下载并安装该应用程序。
我很确定这会修复错误,但不幸的是问题仍然存在,每次我为订阅调用 getSkuDetails 方法 returns null.
所以:
- 应用已发布(alpha 版)
- 我是测试人员并接受了邀请。
- Apk 从 Play 商店下载并安装。
- 4 个订阅有效
- 订阅的id与上的id相同
getSkuDetails,没有错别字
- 初始化iabhelper的Key ID对应com.mydomain.mypackage.pro.
但是,getSkuDetails returns 为空。
我终于找到我的问题了。
我在打电话
mHelper.queryInventoryAsync(true, additionalSkuList, null, mQueryFinishedListener);
传递应用内项目字段中的订阅。完成此操作后,我的应用程序即可运行:
mHelper.queryInventoryAsync(true, null, additionalSkuList, mQueryFinishedListener);
我开发了一个 Android 应用程序,其中包括应用内购买(非消耗品)并且一切正常。
现在我必须为我的应用程序创建一个新的 PRO 版本,而不是非消耗性产品具有订阅产品。
这是我所做的:
- 创建了一种名为 pro 的新口味。
- 更改了这个新口味的 applicationId 从 com.mydomain.mypackage 到 com.mydomain.mypackage.pro.
我可以在调试和发布模式下毫无问题地编译和安装我的免费版和专业版,并且这两个版本同时安装在我的设备中,并显示它们各自的名称和图标,所以我想我已经完成了这两个正确步骤。
- 在 Google 中创建了一个 ID 为 com.mydomain.mypackage.pro. 的新应用程序
- 填写了 Google 开发人员控制台中的所有字段和图像,以便新应用已完全配置并准备好发布(它显示一个绿色勾号)。
- 使用这些 ID 创建了 4 个订阅项 com.mydomain.mypackagepro.plan1monthly、com.mydomain.mypackagepro.plan1annual、com.mydomain.mypackagepro.plan2monthly 和 com.mydomain.mypackagepro.plan2annual。他们都很活跃。 请注意,在这些 id 中我使用了 mypackagepro 而不是 mypackage.pro,我想这不是问题。
- 在我的 pro flavor 代码中,我将 InApp Billing key 设置为新的,取自 Services and APIs。
- 在我的代码中,我使用我在以前版本中使用的代码请求新项目 ID,所以我想这没问题,因为它可以很好地处理 inapp 消耗品。我仔细检查了请求的 ID 是否与我在 Google Play 控制台中设置的 ID 相同。
- 在发布模式下生成了 pro flavor 的签名 APK。
- 在我的设备中安装了这个 APK。
- 已将此 APK 上传到我的 Alpha 频道并发布(我很确定它已发布,而不是草稿模式或类似模式)。我已将 2 个帐户添加为测试人员(其中一个是我自己的开发者帐户)到此频道。
在此之后,如果我启动我的应用程序,返回的库存是空的(我想这没问题,因为我还没有购买任何订阅),但是如果我请求这些 ID 的详细信息,方法 getSkuDetails returns 4 项为空。
我已经等了 10 个小时,以防 apk 没有完全发布。但是在这 10 个小时之后,问题仍然存在,queryInventoryAsync returns 一个空的库存和每个订阅的 getSkuDetails returns null。
我是不是漏掉了什么??
--- 编辑 ---
我必须添加更多信息。 在仔细检查该应用程序是否发布为 Alpha 后,我尝试使用 link:
下载它https://play.google.com/apps/testing/com.mydomain.mypackage.pro
这显示了一个网页,告诉我我已被邀请测试该应用程序并且我必须接受邀请。
除此之外还有 link 从 Play 商店下载应用程序。 所以我接受邀请并从 Play 商店下载并安装该应用程序。 我很确定这会修复错误,但不幸的是问题仍然存在,每次我为订阅调用 getSkuDetails 方法 returns null.
所以:
- 应用已发布(alpha 版)
- 我是测试人员并接受了邀请。
- Apk 从 Play 商店下载并安装。
- 4 个订阅有效
- 订阅的id与上的id相同 getSkuDetails,没有错别字
- 初始化iabhelper的Key ID对应com.mydomain.mypackage.pro.
但是,getSkuDetails returns 为空。
我终于找到我的问题了。 我在打电话
mHelper.queryInventoryAsync(true, additionalSkuList, null, mQueryFinishedListener);
传递应用内项目字段中的订阅。完成此操作后,我的应用程序即可运行:
mHelper.queryInventoryAsync(true, null, additionalSkuList, mQueryFinishedListener);