我在应用程序中使用InApp V3代码进行应用内购买,当设备中没有Google帐户时,出现此错误BILLING_RESPONSE_RESULT_BILLING_UNAVAILABLEerror value :3。我想知道是否还有其他可能会发生此错误,因为当我收到此错误时,我需要向用户显示一些数据的弹出窗口。如果这是由于设备上无法使用Google帐户而引起的,我将显示带有相关文本的对话框。这是我正在使用的代码

mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
    public void onIabSetupFinished(IabResult result) {
        if (!result.isSuccess()) {
                // error here
            return;
        }
    }
});

这是错误Error checking for billing v3 support. (response: 3:Billing Unavailable)

最佳答案

正如我们可以直接在google提供的示例的IabHElper的code of the setup中看到的那样,该错误表示:



如您所见here,该错误意味着

Billing API version is not supported for the type requested

这是应用内结算引用(IAB版本3),因此该错误表示该设备上未安装IAB v3。

实际上,这意味着用户拥有一个Google帐户,并且可能还有一个应用程序内结算服务,但是它没有最新版本。这种情况发生在旧设备上,并且用户从不更新任何东西,它曾经是可以看到旧市场应用程序而不是Play应用程序的设备。

因此,您必须向用户显示的错误以及要执行的测试不是设备是否有Google帐户,而是设备是否已安装并正确更新了Google Play服务。

更新:

如果您在所有库SDK和Google提供的帮助程序类中查找代码,那么唯一可以在所调用函数中找到它的唯一地方是startSetup类的IabHelper
Intent serviceIntent = new Intent(
                "com.android.vending.billing.InAppBillingService.BIND");
        if (!mContext.getPackageManager().queryIntentServices(serviceIntent, 0)
                .isEmpty()) {
            // service available to handle that Intent
            mContext.bindService(serviceIntent, mServiceConn,
                    Context.BIND_AUTO_CREATE);
        } else {
            // no service available to handle that Intent
            mServiceConn=null;
            if (listener != null) {
                listener.onIabSetupFinished(new IabResult(
                        BILLING_RESPONSE_RESULT_BILLING_UNAVAILABLE,
                        "Billing service unavailable on device."));
            }
        }

这意味着应用程序无法连接到设备中的服务,因为程序包管理器甚至都不知道它。多数民众赞成在唯一的选择,可以触发该错误。这意味着它无法连接到服务?这意味着其中之一:
  • 设备未安装服务。
  • 它具有旧版本,因为我们知道Play商店的最新版本使用IAB v3。

  • 因此,您的错误仅代表其中之一,对您来说意味着您必须向用户显示消息,例如“您没有安装Google Play服务,或者必须更新它”。并且没有其他可能性或得到该错误。

    但是,如果您想让用户更轻松,则可以说他们需要将Google Play应用更新为最新版本。这将使一切正常运作。

    10-07 19:41
    查看更多