2013-08-24 70 views
4

我在應用程序結算中遇到問題。我正在使用TrivialDrive示例中的幫助器類。
這是我如何實現它。在應用程序結算V3中

  1. 用戶按下刪除廣告
  2. 開始助手
  3. 使用監聽器檢測時,助手是設置。
  4. 查詢庫存
  5. 使用監聽器檢測完成時
  6. 檢查是否購買已經作出。如果這樣刪除廣告並退出
  7. 如果沒有則啓動購買流程購買。

能正常工作在一個設備上,但是,如果用戶的一個裝置上購買然後嘗試它的另一設備的第二裝置的工作原理如下上:

助手設置爲正常,那麼當它檢查庫存,它找不到任何項目購買(我明白這是更新之前有一個延遲)。然後它嘗試購買,但是說在Google Play窗口中已經購買了該項目。如果我可以在代碼中檢測到這一點,那就沒問題,但它會返回給用戶取消購買的偵聽器。

有沒有辦法檢測到用戶已經使用purchaseFinishedListener購買了物品?

回答

2

handleActivityResult方法的代碼返回用戶取消

else if (resultCode == Activity.RESULT_CANCELED) {
logDebug("Purchase canceled - Response: " + getResponseDesc(responseCode));
result = new IabResult(IABHELPER_USER_CANCELLED, "User canceled.");
if (mPurchaseListener != null) mPurchaseListener.onIabPurchaseFinished(result, null);
}

我增加了行if (responseCode==BILLING_RESPONSE_RESULT_ITEM_ALREADY_OWNED) result = new IabResult(BILLING_RESPONSE_RESULT_ITEM_ALREADY_OWNED, "Success");

0

嘗試此

IabHelper.QueryInventoryFinishedListener mGotInventoryListener =新
IabHelper.QueryInventoryFinishedListener(){

public void onQueryInventoryFinished(IabResult result, Inventory inventory) { 

    ..................... 

    if (inventory.hasPurchase(SKU_CONTENT)) { 

     mHelper.consumeAsync(inventory.getPurchase(SKU_CONTENT), null); 
    } 
} 

};

+0

我不希望消費的項目,只是爲了檢查它是否已被購買。查詢庫存報告項目沒有購買(由於延遲),但當我啓動購買流程時,它知道我已經購買,因爲它已經說明已經購買了。然而,這並沒有返回給聽衆,只是用戶取消了購買 – Dandroid

+0

不使用消費代碼...只是從這個代碼sku detals並使用它,因爲你想 –

+0

但如果我使用此代碼,購買由於延誤未被購買 – Dandroid