未使用API​​ v3

时间:2015-06-05 02:18:16

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

我正试图通过Android In-App Billing的第3版API工作,并遇到了以下问题:

如果我使用launchPurchaseFlow开始购买,它会按预期显示购买对话框,让我完成购买。购买完成后,如果我再次请求SKU详细信息,则会将产品报告为拥有。因此,购买过程本身就可以正常运作。

什么不起作用的是购买本身的通知。我传递给OnIabPurchaseFinishedListener的{​​{1}}永远不会被调用。如果我取消购买,也不完成,我也不会。

我打开了launchPurchaseFlow类的日志记录,并在LogCat中获得以下输出:

IabHelper

那就结束了。

我的活动在显示购买对话框时收到onPause()事件,当对话再次消失时收到onResume()事件(如果购买被取消或完成,则两者都有)。除了IabHelper: Starting in-app billing setup. IabHelper: Billing service connected. IabHelper: Checking for in-app billing 3 support. IabHelper: In-app billing version 3 supported for <my app> IabHelper: Subscriptions AVAILABLE. IabHelper: Starting async operation: refresh inventory IabHelper: Querying owned items, item type: inapp IabHelper: Package name: <my app> IabHelper: Calling getPurchases with continuation token: null IabHelper: Owned items response: 0 IabHelper: Continuation token: null IabHelper: Querying SKU details. IabHelper: Got sku details: <my test product> IabHelper: Querying owned items, item type: subs IabHelper: Package name: <my app> IabHelper: Calling getPurchases with continuation token: null IabHelper: Owned items response: 0 IabHelper: Continuation token: null IabHelper: Querying SKU details. IabHelper: Ending async operation: refresh inventory IabHelper: Starting async operation: launchPurchaseFlow IabHelper: Constructing buy intent for <my test product>, item type: inapp IabHelper: Launching buy intent for <my test product>. Request code: 1 之外,这两个事件目前在我的应用中都不执行任何操作。

这是API中的错误吗?或者我需要先设置一些东西?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:3)

挖掘IabHelper的来源,我发现了问题:

购买意图的结果将发送到活动的onActivityResult(...)方法。从那里,它需要手动转发到IabHelper's handleActivityResult(...)方法,如下所示:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (myIabHelper.handleActivityResult(requestCode, resultCode, data)) return;
    super.onActivityResult(requestCode, resultCode, data);
}

这解决了成功和中止购买的问题。

&#34;耶&#34!;全面的文件......