web-dev-qa-db-ja.com

InApp購入でこのエラーコード3を取得する可能性はありますか?

アプリケーションでアプリ内購入にInApp V3コードを使用していますが、Googleアカウントがデバイスで使用できない場合、このエラー_BILLING_RESPONSE_RESULT_BILLING_UNAVAILABLE_および_error 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)

24

Googleが提供するサンプルのIabHElperの セットアップのコード で直接確認できるように、エラーの意味は次のとおりです。

「デバイスで請求サービスを利用できません。」

here を読むことができるように、そのエラーは

Billing API version is not supported for the type requested

これはアプリ内課金リファレンス(IABバージョン3)であるため、エラーはIAB v3がデバイスにインストールされていないことを意味します。

実際、これはユーザーがGoogleアカウントを持ち、おそらくアプリ内課金サービスも持っていることを意味しますが、最新バージョンは持っていません。これは古いデバイスで発生し、ユーザーが何も更新しない場合は、Playアプリではなく古いMarketアプリを表示できるデバイスを使用します。

したがって、ユーザーに表示する必要があるエラー、および実行する必要があるテストは、デバイスに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アプリを最新バージョンに更新する必要があると言えます。そして、それはすべてが魅力のように動作します。

34
Carlos Robles

このエラーは、ユーザーがデバイスからGoogleアカウントを削除した後にも受信されます。

15
pareshgoel

任意のアカウントでPlayストアにサインインします。

サインイン後、Android Studio Emulator。

5

主に問題の可能性BILLING_RESPONSE_RESULT_BILLING_UNAVAILABLEは、セルビアや多くの国のように、一部の国ではまだアプリ購入が許可されていないことです。

Google Playがアプリ内購入をサポートしていない国のユーザーは、BILLING_RESPONSE_RESULT_BILLING_UNAVAILABLE

これにより、ユーザーが携帯電話にインストールされているGoogle Play Serviceを更新していない可能性が低くなるため、このケースを心配する必要はありません。

5
N Sharma

このハッキングを試してください

Playアプリのキャッシュ、データ、アップデートを削除し、Playアプリを再起動してください。または、最新の更新を試してください(修正されている場合)

ご参考までに:

念頭に置いてください:

  • IABv3はGoogle Playサービスに組み込まれているため、Playサービスapkの更新が必要です。

  • V2は、Playストアクライアント自体に組み込まれました。キャッシュ/ EULAの問題は、特にIABに関連するものではなく、Play Servicesのセットアップに関連しています(とにかく、キャッシュ部分であるほとんどのユーザーには不要であることを願っています)。

  • この移行期間にアプリが利用される前にPlay Servicesを更新する必要があるのは残念ですが、ほとんどの人はOSのアップグレードを待つよりも良いことに同意すると思います。」

この参照を参照してください: バグレポートG +投稿

2
LOG_TAG

Googleアカウントでデバイスを認証していない場合、このエラーを受け取ることがあります。

1
User2364902

あなたがトンガ(私として)またはGoogle Playでアプリを購入できない他の国にいる場合、VPNを使用して請求をテストする必要があります。そうしないと、このエラーが発生します。

0
John T

ウィリアムズが言ったように、まだこの問題に直面している人にとって、ほとんどの場合、あなたの国ではiabはサポートされていません。 VPNを使用して機能させることができます。

0
Drilon Blakqori