アプリ内課金を使用してアプリケーションを実行しようとすると、「このバージョンのアプリケーションはGoogle Play経由の課金用に設定されていません。詳細についてはヘルプセンターを確認してください」というエラーが表示されます。
マニフェストファイルに既に請求許可があり、署名済みの.apkをドラフトとしてGoogle Playにアップロードし、同じ署名済みのapkを携帯電話にもインストールしています。
この問題を解決する方法についてのヘルプはありますか?
ああ、数時間試した後、解決策を見つけました。
このエラーは、いくつかの理由により発生する可能性があります。
Google IABテストの要件のリストは次のとおりです。
前提条件:
テスト要件:
P.S:リリース証明書によるデバッグ: https://stackoverflow.com/a/15754187/1321401 (Thnx @ dipp リンク用)
P.P.S:すでに長い間このリストを作りたかった。
公開されたバージョンが携帯電話でテストしているバージョンと同じでない場合も同じことが起こります。
たとえば、アップロードされたバージョンはAndroid:versionCode="1"
であり、携帯電話でテストしているバージョンはAndroid:versionCode="2"
です。
ライブ証明書を使用してAPKに署名する必要があります。次に、それをテストデバイスにインストールします。その後、InAppBillingをテストできます。 Eclipseからデバイスへの直接実行(デバッグモード)でアプリケーションをテストしている場合、このエラーが発生します。
Android.test.purchased
をSKUとして使用している場合、それはすべて機能しますが、最終応答にdeveloperPayloadがありません。
アプリアイテムで独自の下書きを使用している場合は、すべての方法でテストできますが、課金されるため、後で自分で払い戻す必要があります。
Google Play開発コンソールで使用するものと同じGmailアカウントでアイテムを購入することはできません。
開発者コンソールで:
Settings
-> Account details
-> License Testing
->テストアクセスのあるGmailアカウント
ここにアカウントを入力します
2018年からここにいる場合は、Playストアから直接APKをダウンロードし、「派生」APKをインストールする必要があります。おそらく、GoogleのPlayストアに「Google Playによるアプリ署名」という機能があるためです。
私に起こったことを追加してみましょう。
これは主に署名が原因でした。
プロジェクト構造に署名の詳細を追加したので、実行するたびに、予想される署名済みAPKがインストールされると考えていました。しかし、ビルドタイプ「デバッグ」が選択されました。
以下の修正で問題が解決しました。
これは、Google Playのものとは異なるバージョンのapkを使用する場合に発生します。
同じ問題があり、DZDomiから投稿を読む前に解決しませんでした。 Google Developer Consoleに有効にする必要がある設定があるということが突然起こりました。 [アプリの購入]セクションには、製品の行があり、一番右にステータスがあります。 ACTIVEである必要があります!
SOや他のサイトに関する多くの回答とコメントに反して、Google Playからテストデバイスにダウンロードされた製品のアルファ版またはベータ版で事前テストを実行する必要はありません(アルファ版/ベータ公開プロセスは、多くの場合、半日を消費します)。また、開発者スタジオからテストデバイスに署名済みリリースapkをロードおよび再ロードする必要もありません。
開発者スタジオからADBを介してテストデバイスに直接読み込まれたデバッグアプリを使用して、アプリ請求サービスで予備のGoogle Playをデバッグできます。これを妨げるエラーが発生している場合は、コードで何か間違ったことをしている可能性があります。 SKUのケース(製品ID)とその形式に特に注意してください(たとえば、APKをcom.mydomain.my_product_idとしてロードする場合は、同じ方法で同じケースとドメインを提供するようにしてください) 。また、itemTypeには特に細心の注意を払ってください。これは、アプリの購入またはサブスクリプションで管理/非管理をそれぞれ「inapp」または「subs」にする必要があります。
Chirag Patelが提案したように、請求コードが適切に確立されていれば、予備テスト中にAndroid.test.purchased Sku(製品ID)を使用してすべてのテストを実行します。このデータはGoogleテストシステムによって提供されないため、請求処理全体でこのIDを確認し、署名、トークン、およびペイロードチェックを通過させます。さらに、テスト製品の1つにこのIDを与えて、購入のテスト、ロック解除/ロード、およびスキーマ全体の表示を行います。購入をクリアするには、同じSkuとこの方法でフォーマットされたトークン文字列を渡すだけで、他のフィールドは関係ありません。
"inapp:"+appContext.getAppContext().getPackageName()+":Android.test.purchased";
このテスト段階を完了したら、アルファ/ベータ製品を使用したセミライブテストに移行します。 Googleグループ(本質的にはメーリングリスト)を作成し、テストユーザーのメールを追加し、このグループを追加/招待して、このフェーズでデバイスをテストします(アプリのGoogle開発者リストの「APK」部分で実行)。購入はシミュレートされますが、実際には課金されません-ただし、購入をクリアして再テストするために、GoogleはGoogleウォレットから返金する必要があることを示しています。これは、アルファ/ベータロードとテストユーザーを使用する時間のかかるプロセスを必要とするテストの唯一のフェーズです。
IABをデバッグする場合、何をする必要がありますか。
Googleに送信して、マニフェストのIAB権限でアプリのバージョンをプレイします。
Google Playのアプリに製品を追加します。 アプリ内課金の管理
署名済みのカスタムデバッグキーストアを設定します。 署名済みキーストアを使用するようにEclipseを構成
私の場合、インストールされたapkとアップロードされたapkの署名が異なるため、同じメッセージが表示されました。
ここで言及されていないもう1つの理由は、実際のデバイスでテストする必要があることです。エミュレーターが本当に良くなったので、間違いを犯すのは簡単です。
私の問題は、debug.keystoreでそれをチェックしようとしたこと、つまり、Eclipseで実行することです。アルファモードで公開したキーストアでエクスポートしました(テストする前に公開する必要があります)。私の携帯電話と私はそれを正常にテストできるよりも。
この問題は、apkをアップロードした後にアプリ内購入を追加したが、Playストア(アルファ版、ベータ版、および本番)でアプリケーションを公開していない場合にも発生します。
これは基本的に、Playストアでapkを公開した後にアプリ内購入を追加する必要があることを意味します(アルファ版、ベータ版、および製品版)。そうしないと、アプリ内購入を購入したり、クエリしたりできません。
ソリューション
Googleはアプリのバージョンを更新するのに時間がかかるため、Playストアにアプリをアップロードした後しばらくお待ちください。
Moto c2 +にも同じ問題があります。私の場合、i restartにするとデバイスの問題になります。