5

我对应用内计费有疑问。我正在使用 TrivialDrive 示例中的帮助程序类。
这是我如何实现它。

  1. 用户按下删除广告
  2. 启动助手
  3. 使用侦听器检测何时设置了帮助程序。
  4. 查询库存
  5. 使用 Listener 检测何时完成
  6. 检查是否已经购买。如果是这样,请删除广告并退出
  7. 如果没有,则启动PurchaseFlow 进行购买。

这在一台设备上运行良好,但是如果用户在一台设备上购买然后在另一台设备上尝试,第二台设备的工作方式如下:

助手正常设置,然后在检查库存时,发现没有购买任何物品(我知道在更新之前有延迟)。然后它会尝试购买,但在 Google Play 窗口中显示该商品已购买。如果我可以在代码中检测到这一点,那就没问题了,但它会向侦听器返回用户取消购买的信息。

有没有办法检测用户已经使用 购买了该商品purchaseFinishedListener

4

2 回答 2

3

方法中的代码handleActivityResult返回 User Canceled

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

于 2013-08-26T10:50:51.877 回答
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);
    }
}

};

于 2013-08-24T22:34:15.517 回答