The*_*ska 8 android android-billing android-inapp-purchase play-billing-library
我现在正在使用新的Play Billing Library
基本上,我按照文档查询要购买的可用项目
SkuDetailsParams.Builder params = SkuDetailsParams.newBuilder();
params.setSkusList(skuList).setType(itemType);
mBillingClient.querySkuDetailsAsync(params.build(),
new SkuDetailsResponseListener() {
@Override
public void onSkuDetailsResponse(int responseCode,
List<SkuDetails> skuDetailsList) {
listener.onSkuDetailsResponse(responseCode, skuDetailsList);
}
Run Code Online (Sandbox Code Playgroud)
但是,responseCode为0,列表也为空.但我检查了BillingSetupFinished是否成功.提供给SkuDetailsParams.Builder的skuList不为空,skuList(sku_id)中的值也与Google Play控制台上指定的产品ID相同.
有谁知道原因?谢谢!!
goR*_*Gon 10
听起来您的Google Play控制台设置存在问题.
请检查:
设置完成后等待一段时间.
tak*_*rom 10
我也遇到了同样的问题,但是通过执行以下操作,我得到了 SkuDetails。
核心问题是谷歌缓存了你的SKU详细信息,并且有多层缓存。
您手机上的本地 Google Play 商店应用会缓存 SKU 详细信息,而 Google 的服务器端也会缓存它们。(“计算机科学中只有两件难事:缓存失效和命名事物。”)
最终,如果您等待足够长的时间,缓存将过期,Google 将开始显示正确的信息。但谁有时间呢?
由于涉及时间因素,很难知道什么有用,什么没用,但这是对我有用的方法。
在内部测试轨道上设置您的 APK 版本。(第一次执行此操作时,您必须等待您的应用完成“待发布”。等待本身可能会解决问题。)
设置至少一名测试人员,获取选择加入链接(这需要等待您的应用完成“待发布”),然后选择加入。
使用设置应用程序的“应用程序”部分强制停止并删除 Google Play 商店应用程序的缓存。单击“存储”以访问“清除缓存”按钮。
通过内部测试轨道下载应用程序的一个版本。使用android.util.Log登录您的SKU的详细信息,以及使用的logcat验证您的SKU细节显示正确。
……但别担心,您不必每次要测试时都这样做。Google Play 商店缓存更新后,您应该能够使用 Android Studio 在调试版本中访问您的 SKU。
如果它在您的内部测试版本中不起作用
如果它在您的内部测试版本中有效,但在同一设备上的调试版本中不起作用
在这种情况下,Google Play 商店缓存是正确的,但是您的调试版本与您创建的内部测试版本有所不同。
applicationIdSuffix是这里的常见罪魁祸首。