问题描述
我已在我的应用中的应用产品中实施。我可以成功购买,一切正常。但是在一台设备上,购买不起作用,尽管当我再次尝试购买时,我收到“产品已拥有”的响应,表明购买没问题。但是 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() 调用完成它的事情,并且 onBillingSetupFinished() 回调在提供的BillingClientStateListener。只有在此之后,您才能调用 queryPurchases 方法。如果您在完成与服务的连接之前调用 queryPurchases,您将获得一个空列表。