android - Android - queryPurchase() 返回一个空列表,但我购买了应用内产品
问题描述
我已经在我的应用程序中实现了应用程序产品。我可以成功购买,一切正常。但是在一台设备上,购买不起作用,尽管当我再次尝试购买时,我收到“产品已拥有”的响应,这表明购买很好。但是 queryPurchase() 返回一个空的购买列表。我在那个设备上只有一封电子邮件。
public void queryPurchase() {
Runnable queryPurchaseRequest = getQueryPurchaseRequest();
executeRequest(queryPurchaseRequest);
}
private Runnable getQueryPurchaseRequest() {
return new Runnable() {
@Override
public void run() {
Purchase.PurchasesResult purchasesResult = mBillingClient.queryPurchases(BillingClient.SkuType.INAPP);
if(purchasesResult.getResponseCode() == BillingResponseCode.OK) {
ArrayList<Purchase> purchaseList = new ArrayList<>();
purchaseList.addAll(purchasesResult.getPurchasesList());
if(isSubscriptionSupported()) {
Purchase.PurchasesResult subscriptionResult
= mBillingClient.queryPurchases(BillingClient.SkuType.SUBS);
if (subscriptionResult.getResponseCode() == BillingResponseCode.OK) {
purchaseList.addAll(subscriptionResult.getPurchasesList());
} else {
Log.e(TAG, "Got an error response trying to query subscription purchases");
}
}
onQueryPurchasesFinished(purchaseList);
} else {
Utilities.setPurchaseLog("onBilling manager on query purchase request: result unknown\n");
}
}
};
}
注意:计费结果,订阅响应代码一切似乎都成功了。一切都在其他设备上完美运行。
有人有解决办法吗?谢谢你的帮助!
解决方案
自计费库 2.x 版(优先级:P1,严重性 S2)以来,这是一个已经发生多年的已知错误
https://issuetracker.google.com/issues/160473001
我认为您能做的最好的事情就是去那里并留下您的明星/评论以加快速度。
但是,有时我们可能会错过一些事情:事实证明,您需要等待 billingClient.startConnection() 调用完成它的工作,并且在提供的 BillingClientStateListener 上调用 onBillingSetupFinished() 回调。只有在那之后,您才能调用 queryPurchases 方法。如果您在完成与服务的连接之前调用 queryPurchases,您将获得一个空列表。
推荐阅读
- ios - AudioKit v5 如何在同一个输入节点上使用 AmplitudeTap 和 NodeRecorder
- django - 通过 Django Rest Framework 中的相关模型强制执行权限
- reactjs - MUI sx 道具中的动态样式?
- angular - Tizen Studio DevTools ERR_BAD_SSL_CLIENT_AUTH_CERT 问题
- html - 表单聚焦时更改标签的颜色
- amazon-web-services - Cloud9 是否提供 t2.micro 实例?
- android - 将 ML 模型添加到 Android Studio
- forms - 如何为 Web 界面使用表单和 url 参数的嵌入式设备设置 nginx 反向代理?
- javascript - 使用 for .. of 循环向所有按钮添加相同的事件侦听器
- graphql - AWS AppSync 错误:模板转换产生空响应