Android 我什么时候需要IabHelper类来进行InApp购买?

Android 我什么时候需要IabHelper类来进行InApp购买?,android,in-app-purchase,in-app-billing,Android,In App Purchase,In App Billing,我按照此文档创建了一个测试应用程序,它在单击按钮后启动应用程序内购买过程。 我发布了一个alpha版本的应用程序,并测试了应用程序内购买,它运行正常 我的问题是,我被其他应用程序内购买示例弄糊涂了。他们都使用一个名为“IbaHelper”的类来进行应用内购买。 但是,似乎不需要这个类来进行应用内购买。 该类甚至在官方的应用内计费V3“TrivalDrive”示例中使用,但在我上面发布的应用内计费指南中从未提及 那么,有人能给我解释一下,为什么以及什么时候我应该使用IABHeloper类吗 先谢谢

我按照此文档创建了一个测试应用程序,它在单击按钮后启动应用程序内购买过程。
我发布了一个alpha版本的应用程序,并测试了应用程序内购买,它运行正常

我的问题是,我被其他应用程序内购买示例弄糊涂了。他们都使用一个名为“IbaHelper”的类来进行应用内购买。 但是,似乎不需要这个类来进行应用内购买。 该类甚至在官方的应用内计费V3“TrivalDrive”示例中使用,但在我上面发布的应用内计费指南中从未提及

那么,有人能给我解释一下,为什么以及什么时候我应该使用IABHeloper类吗

先谢谢你

以下是我用于进行应用内购买的代码的简化版本:

private void doPurchase() {
    try {
        Bundle buyIntentBundle = mService.getBuyIntent(3, getPackageName(), "premium.upgrade",
            "inapp", "");

        if (buyIntentBundle != null && buyIntentBundle.getInt("RESPONSE_CODE") == 0) {
            PendingIntent pendingIntent = buyIntentBundle.getParcelable("BUY_INTENT");

            startIntentSenderForResult(pendingIntent.getIntentSender(), 1001, new Intent(),
                Integer.valueOf(0), Integer.valueOf(0), Integer.valueOf(0));
        }
    } catch (SendIntentException e) {
        e.printStackTrace();
    } catch (RemoteException e) {
        e.printStackTrace();
    }
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == 1001) {
        String purchaseData = data.getStringExtra("INAPP_PURCHASE_DATA");

        if (resultCode == RESULT_OK) {
            try {
                JSONObject jo = new JSONObject(purchaseData);
                String sku = jo.getString("productId");
                Log.i(">>>", "You have bought the "
                    + sku
                    + ". Excellent choice, "
                    + "adventurer!");
            } catch (JSONException e) {
                Log.e(">>>", "Failed to parse purchase data.");
                e.printStackTrace();
            }
        }
    }
}

你说得对,考虑到这个助手,导游有点困惑。基本上,IAB Helper是一个由谷歌员工编写的Helper类,负责很多繁重的工作。因此,如果您使用IAB帮助程序,就不必像在doPurchase()方法中那样编写那么多代码。您只需编写以下行:

mHelper.launchPurchaseFlow(activity, sku, RC_REQUEST, mPurchaseFinishedListener);
购买后的东西也是如此,不要摆弄JSON对象

if (info.getSku().equals(sku))
    doSomething();
注意:您必须在之前设置mHelper并实现各种侦听器。当然,IABPhelper在后台做的事情与在方法中做的完全相同。这只是另一层抽象

这就是关于IAB助手的好消息。坏消息是:IAB助手有一些相当严重的错误,这些错误会导致偶尔的崩溃。尽管我仍然建议使用它,因为它会捕捉到更多你甚至想都不敢想的错误

在下面的Android开发者培训网站上,你可以找到一个指南,它展示了如何很好地使用这个工具。

当。谷歌甚至不能编写一个应用内购买的无bug实现,这真是太可怜了。@trans是的,这有点奇怪,因为它是平台的一个基本部分。尽管如此,我已经使用了一个调用的库很长时间,没有遇到任何明显的问题。我强烈推荐所有与IAB相关的产品。