[英]Android app crashes after successful purchase of subscription with Google Play Billing Library
[英]Google play billing purchase result shows empty list after a successful purchase in the google play billing library (Native android)
購買成功后,Google Play 計費庫中的 Google Play 計費購買結果顯示為空列表。
購買產品時,它會按預期返回列表。 導航到兩個屏幕后,如果我再次檢查購買屏幕,同一個應用程序的購買列表為空。
為什么導航到屏幕后采購清單是空的?
if (billingClient.isReady()) {
Purchase.PurchasesResult purchasesResult = billingClient.queryPurchases(BillingClient.SkuType.INAPP);
List<Purchase> purchases = purchasesResult.getPurchasesList();
if (purchases.size() > 0) {
for (Purchase pur : purchases) {
String thisSku = pur.getSkus().get(0);
if (thisSku.equals(AD_REMOVAL_SKU)) {
return true;
}
}
}
billingClient = BillingClient.newBuilder(context).enablePendingPurchases().setListener(purchasesUpdatedListener).build();
private PurchasesUpdatedListener purchasesUpdatedListener = new PurchasesUpdatedListener() {
@Override
public void onPurchasesUpdated(BillingResult billingResult, List<Purchase> list) {
// To be implemented in a later section.
LogUtils.LOGI(TAG, "billingResult on billingResult" + billingResult.getResponseCode());
if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK && list != null) {
Toast.makeText(context.getApplicationContext(), list.toString(), Toast.LENGTH_LONG).show();
Toast.makeText(context.getApplicationContext(), billingResult.toString(), Toast.LENGTH_LONG).show();
Purchase info = list.get(0);
for (Purchase purchase : list) {
Purchase.PurchasesResult purchasesResult = billingClient.queryPurchases(BillingClient.SkuType.INAPP);
if (purchase.getPurchaseState() == Purchase.PurchaseState.PURCHASED) {
if (info.getSkus().get(0).equals(AdsRemovalHelper.SKU)) {
ConsumeParams consumeParams = ConsumeParams.newBuilder().setPurchaseToken(purchase.getPurchaseToken()).build();
LogUtils.LOGI(TAG, "Consume params ===" + consumeParams);
billingClient.consumeAsync(consumeParams, new ConsumeResponseListener() {
@Override
public void onConsumeResponse(BillingResult billingResult, String s) {
if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK ) {
LogUtils.LOGI(TAG, "Consume String ===" + consumeParams);
Toast.makeText(context.getApplicationContext(), purchase.getSkus().toString(), Toast.LENGTH_LONG).show();
}
}
});
}
} else if (purchase.getPurchaseState() == Purchase.PurchaseState.PENDING) {
LogUtils.LOGI(TAG, "ConsumeString ===" );
} else if (purchase.getPurchaseState() == Purchase.PurchaseState.UNSPECIFIED_STATE) {
LogUtils.LOGI(TAG, "Consume S11111tring ===" );
}
} }
由於queryPurchases
已queryPurchasesAsync
如果您使用的是 Billing 4.0 API,請嘗試使用queryPurchasesAsync
。 https://developer.android.com/reference/com/android/billingclient/api/BillingClient#queryPurchases(java.lang.String)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.