問題タブ [android-billing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
8 に答える
24902 参照

android - アプリ内課金で開発者のペイロードを設定することが重要なのはなぜですか?

アプリ内課金APIのバージョン3を使用しています。私は単一の管理された非消耗品を持っています。この機能はまだアプリでリリースしていないので、購入する前に購入ペイロードの内容を決定したいと思います。

「セキュリティのベストプラクティス」から:

購入リクエストを行うときに開発者のペイロード文字列を設定します

アプリ内課金バージョン3APIを使用すると、購入リクエストをGooglePlayに送信するときに「デベロッパーペイロード」文字列トークンを含めることができます。通常、これは、この購入要求を一意に識別する文字列トークンを渡すために使用されます。文字列値を指定すると、GooglePlayはこの文字列を購入応答とともに返します。その後、この購入についてクエリを実行すると、GooglePlayはこの文字列を購入の詳細とともに返します。

アプリケーションが購入を行ったユーザーを識別するのに役立つ文字列トークンを渡す必要があります。これにより、後でこれがそのユーザーによる正当な購入であることを確認できます。消耗品の場合はランダムに生成された文字列を使用できますが、非消耗品の場合はユーザーを一意に識別する文字列を使用する必要があります。

Google Playから応答が返ってきたら、デベロッパーのペイロード文字列が購入リクエストで以前に送信したトークンと一致することを確認してください。さらなるセキュリティ対策として、自分の安全なサーバーで検証を実行する必要があります。

正誤を問わず、購入確認を行うサーバーを設置するという「さらなるセキュリティ対策」を講じないことにしました。そして、私は購入の自分の記録を保存しません-私は常に課金APIを呼び出します。それで、私がこのペイロード検証を行う理由は本当にありますか?検証API自体は、購入したアイテムを報告する前にユーザーのIDを確実に検証します。攻撃者がデバイス(アプリまたはGoogle Play APIのいずれか)を侵害した場合、追加のチェックを行うメリットはありません。簡単に回避できるデバイス上のユーザーのID。それとも、私が考えていないのにこれを行う理由はありますか?

0 投票する
1 に答える
214 参照

android - アプリ内購入の問題

アプリ内購入を実装している最新のアプリに取り組んでいます。

オンラインで優れたチュートリアルを探したところ、Bundell のチュートリアルが見つかりました。

コードを何度も調べましたが、エラーが発生し続けます。次のようになります。

これは nullpointerException ですが、何が起こっているのかわかりません。このコードを使用して、アプリ内購入を行います。

ボタンがあり、クリックするとアクティビティが終了します。アクティビティを終了するたびに、このエラーが発生します....

onDestroy が呼び出されると、事態は悪化します。stopService() メソッドと関係があると思います。

そのメソッドは次のようになります。

みんなお願いします..ヒント/ポインター、または説明を教えてもらえますか?

編集

わかりました...完了しました... onDestroyを削除し、stopServiceをfinishメソッドの前にコピーしました...別のnullpointerexceptionを取得しています..ちょっと同じです:

0 投票する
1 に答える
1074 参照

android - Androidでのアプリ内課金にサンプルライブラリを使用する:IInAppBillingService.aidlによって作成されたインターフェイス

Googleの新しいアプリ内課金ライブラリ(バージョン3)を使用すると、アプリケーションに課金を追加するのが大幅に簡単になります。開発者ブログ(リンクを参照)に示されているコードは、すでに非常に単純に見えます。

しかし、SDKのフォルダにあるサンプルアプリケーションに出くわしましたextras\google\market_billing\in-app-billing-v03。それは「TrivialDrive」と呼ばれています。

サンプルコードを使おうとすると、いくつか質問がありました。

  1. IInAppBillingService.aidlファイルを新しいパッケージに貼り付けるのはcom.android.vending.billing正しいですか?作成されたJavaインターフェースは、2つのTo Doメッセージを表示します。例getBuyIntent():「TODO:これをアプリ固有のキーに変更してください」。よく聞こえません。ただし、このインターフェイスは本番環境に対応していますか?
  2. utilサンプルの「src」には、、、およびその他のクラスを含むIabHelperフォルダーがBase64あります。Purchaseそのディレクトリをコピーして、これらすべてのヘルパー関数をそのまま使用できますか?
0 投票する
2 に答える
2447 参照

android - Android 課金サンプルの IabHelper クラスのオンライン ドキュメント?

アプリ内課金 V3 の Android デベロッパー ガイドには、 TrivialDriveというサンプル アプリが付属しています。その中には、IabHelper というユーティリティ クラスがあり、このガイドでは、独自のアプリにインポートするようアドバイスされています。

IabHelper クラスのオンライン ドキュメントがあるかどうかを知りたいですか? d.android.com を検索しましたが、何も見つかりませんでした。または、代わりにソース ファイルから Javadoc を抽出する必要がありますか?

0 投票する
1 に答える
3778 参照

android-billing - アプリの購入の問題で「ご注文を処理できませんでした」?

私は「In App Subscription」で作業しており、http: //www.robotmedia.net/2011/06/android-billing-library-in-app-billing-made-simple/に記載されているすべての手順に従いました。結構ですが、購入して支払いをしようとすると、「支払いを処理できませんでした。もう一度やり直してください」というエラーが表示され、次のようなエラーが記録されます

私は過去 3 日間頭を壊しています。誰かがこの問題を解決するのを手伝ってくれますか? 前もって感謝します。

0 投票する
1 に答える
1074 参照

c# - Android 課金サービスを MonoDroid で作成したアプリに統合できますか?

現在、プロジェクトで Xamarin を使用することについて議論していますが、Android 課金システムについて何かアイデアを持っている人はいますか? 理想的には、サブスクリプション サービスで。それはすべてプレイストアで行われますか?

0 投票する
2 に答える
3038 参照

android - Google Play からアプリ内アイテムの価格を取得する

このリンクを参考にしています

親愛なる皆様、Google Play から私のアプリのアプリ内製品の価格を表示する必要があります。上記のリンクに示されているように、Google Play から価格を取得しようとしましたが...

それを言う

どうすればこのエラーを解決できますか? または、どの方法で Google Play からアプリ内製品の価格を取得できますか?

これが私のコードです。

0 投票する
19 に答える
30502 参照

android - Android アプリ内課金: 別の非同期操作 (進行中) のため、非同期操作を開始できません

Google のチュートリアルで推奨されているように、ユーティリティ クラスを使用していIabHelperますが、このエラーに悩まされています。複数の非同期IabHelper操作を同時に実行できないようです。在庫の取得がまだ進行中のときに購入を開始しようとして、なんとかヒットしました。

ここonActivityResultで提案されているように、すでにメインクラスに実装しようとしましたが、エラーが発生する前にそのメソッドを呼び出すことすらできません。次に、これを見つけましが、このメソッドがどこにあるかわかりません-クラスにはありません。flagEndAsyncIabHelper

今、私はこれを回避する方法を探しています(シーバン全体を再実装することなく)。私が考えることができる唯一の解決策はasyncActive、非同期タスクが開始される前にチェックされるブール値フィールドを作成し、アクティブな別のタスクがある場合はそれを行わないことです。しかし、これには他にも多くの問題があり、アクティビティ全体では機能しません。また、まったく実行しないのではなく、許可されたらすぐに非同期タスクをキューに入れて実行することをお勧めします。

この問題の解決策はありますか?

0 投票する
6 に答える
27185 参照

android - Androidアプリ内課金:launchPurchaseFlowが進行中のため、launchPurchaseFlowを開始できません

アプリ内課金を初めて実装し、静的SKUIDを使用して最初の購入をテストしています。

それは最初は非常にうまくいきました。電話mHelper.launchPurchaseFlow(...)してテスト購入を完了しました。私のアクティビティはonActivityResultコールバックを受け取り、それをで処理するようにしましたmHelper.handleActivityResult(...)。すべてが素晴らしかった。

ただし、次の部分をテストしたかったので、アプリを再起動して同じSKU(静的purchasedSKU)を購入しようとしました。

2回目にアイテムを購入しようとすると、OnIabPurchaseFinishedListenerが呼び出さpurchase failedれ、ログに「アプリ内請求エラー:アイテムを購入できません。エラー応答:7:アイテムは既に所有されています」と表示されます。

それは理にかなっていますが、別のアイテムを購入しようとすると、次のエラーでアプリがクラッシュします。

java.lang.IllegalStateException:別の非同期操作(launchPurchaseFlow)が進行中であるため、非同期操作(launchPurchaseFlow)を開始できません。

失敗したonActivityResult購入を実行しようとしてもコールバックが発生しないため、失敗した起動フローは処理およびクリーンアップされません。したがって、別の購入を試みると、最後に失敗したトランザクションの途中にあると思われるため、クラッシュするのはそのためです。

私は何が間違っているのですか?失敗後にlaunchPurchaseFlow()が確実にクリーンアップされるようにするにはどうすればよいですか?