在App Billing V3中

时间:2013-08-24 20:50:59

标签: android in-app-purchase in-app-billing

我在In App Billing中遇到了问题。我正在使用TrivialDrive示例中的帮助程序类 这是我实现它的方式。

  1. 用户按下删除广告
  2. 启动助手
  3. 使用侦听器检测何时设置帮助程序。
  4. 查询广告资源
  5. 使用侦听器检测完成时间
  6. 检查是否已购买。如果是,请删除广告并退出
  7. 如果没有,则启动购买流程购买。
  8. 这在一台设备上运行正常,但是如果用户在一台设备上购买然后在另一台设备上尝试,则第二台设备的工作方式如下:

    帮助器设置正常,然后当它检查库存时,它没有找到购买的物品(我知道在更新之前有一段延迟)。然后它尝试购买,但说已在Google Play窗口上购买的商品。如果我能在代码中检测到这一点,那就没问题了,但它会返回给用户取消购买的监听器。

    有没有办法检测用户是否已使用purchaseFinishedListener

    购买了该项目

2 个答案:

答案 0 :(得分:2)

handleActivityResult方法中的代码返回User Cancelled

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");

答案 1 :(得分:0)

试试这个

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

public void onQueryInventoryFinished(IabResult result, Inventory inventory) {

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

    if (inventory.hasPurchase(SKU_CONTENT)) {

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

};