2013-08-24 65 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