問題タブ [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.
android - アプリ内課金で開発者のペイロードを設定することが重要なのはなぜですか?
アプリ内課金APIのバージョン3を使用しています。私は単一の管理された非消耗品を持っています。この機能はまだアプリでリリースしていないので、購入する前に購入ペイロードの内容を決定したいと思います。
購入リクエストを行うときに開発者のペイロード文字列を設定します
アプリ内課金バージョン3APIを使用すると、購入リクエストをGooglePlayに送信するときに「デベロッパーペイロード」文字列トークンを含めることができます。通常、これは、この購入要求を一意に識別する文字列トークンを渡すために使用されます。文字列値を指定すると、GooglePlayはこの文字列を購入応答とともに返します。その後、この購入についてクエリを実行すると、GooglePlayはこの文字列を購入の詳細とともに返します。
アプリケーションが購入を行ったユーザーを識別するのに役立つ文字列トークンを渡す必要があります。これにより、後でこれがそのユーザーによる正当な購入であることを確認できます。消耗品の場合はランダムに生成された文字列を使用できますが、非消耗品の場合はユーザーを一意に識別する文字列を使用する必要があります。
Google Playから応答が返ってきたら、デベロッパーのペイロード文字列が購入リクエストで以前に送信したトークンと一致することを確認してください。さらなるセキュリティ対策として、自分の安全なサーバーで検証を実行する必要があります。
正誤を問わず、購入確認を行うサーバーを設置するという「さらなるセキュリティ対策」を講じないことにしました。そして、私は購入の自分の記録を保存しません-私は常に課金APIを呼び出します。それで、私がこのペイロード検証を行う理由は本当にありますか?検証API自体は、購入したアイテムを報告する前にユーザーのIDを確実に検証します。攻撃者がデバイス(アプリまたはGoogle Play APIのいずれか)を侵害した場合、追加のチェックを行うメリットはありません。簡単に回避できるデバイス上のユーザーのID。それとも、私が考えていないのにこれを行う理由はありますか?
android - アプリ内購入の問題
アプリ内購入を実装している最新のアプリに取り組んでいます。
オンラインで優れたチュートリアルを探したところ、Bundell のチュートリアルが見つかりました。
コードを何度も調べましたが、エラーが発生し続けます。次のようになります。
これは nullpointerException ですが、何が起こっているのかわかりません。このコードを使用して、アプリ内購入を行います。
ボタンがあり、クリックするとアクティビティが終了します。アクティビティを終了するたびに、このエラーが発生します....
onDestroy が呼び出されると、事態は悪化します。stopService() メソッドと関係があると思います。
そのメソッドは次のようになります。
みんなお願いします..ヒント/ポインター、または説明を教えてもらえますか?
編集
わかりました...完了しました... onDestroyを削除し、stopServiceをfinishメソッドの前にコピーしました...別のnullpointerexceptionを取得しています..ちょっと同じです:
android - Androidでのアプリ内課金にサンプルライブラリを使用する:IInAppBillingService.aidlによって作成されたインターフェイス
Googleの新しいアプリ内課金ライブラリ(バージョン3)を使用すると、アプリケーションに課金を追加するのが大幅に簡単になります。開発者ブログ(リンクを参照)に示されているコードは、すでに非常に単純に見えます。
しかし、SDKのフォルダにあるサンプルアプリケーションに出くわしましたextras\google\market_billing\in-app-billing-v03
。それは「TrivialDrive」と呼ばれています。
サンプルコードを使おうとすると、いくつか質問がありました。
IInAppBillingService.aidl
ファイルを新しいパッケージに貼り付けるのはcom.android.vending.billing
正しいですか?作成されたJavaインターフェースは、2つのTo Doメッセージを表示します。例getBuyIntent()
:「TODO:これをアプリ固有のキーに変更してください」。よく聞こえません。ただし、このインターフェイスは本番環境に対応していますか?util
サンプルの「src」には、、、およびその他のクラスを含むIabHelper
フォルダーがBase64
あります。Purchase
そのディレクトリをコピーして、これらすべてのヘルパー関数をそのまま使用できますか?
android - Android 課金サンプルの IabHelper クラスのオンライン ドキュメント?
アプリ内課金 V3 の Android デベロッパー ガイドには、 TrivialDriveというサンプル アプリが付属しています。その中には、IabHelper というユーティリティ クラスがあり、このガイドでは、独自のアプリにインポートするようアドバイスされています。
IabHelper クラスのオンライン ドキュメントがあるかどうかを知りたいですか? d.android.com を検索しましたが、何も見つかりませんでした。または、代わりにソース ファイルから Javadoc を抽出する必要がありますか?
android-billing - アプリの購入の問題で「ご注文を処理できませんでした」?
私は「In App Subscription」で作業しており、http: //www.robotmedia.net/2011/06/android-billing-library-in-app-billing-made-simple/に記載されているすべての手順に従いました。結構ですが、購入して支払いをしようとすると、「支払いを処理できませんでした。もう一度やり直してください」というエラーが表示され、次のようなエラーが記録されます
私は過去 3 日間頭を壊しています。誰かがこの問題を解決するのを手伝ってくれますか? 前もって感謝します。
c# - Android 課金サービスを MonoDroid で作成したアプリに統合できますか?
現在、プロジェクトで Xamarin を使用することについて議論していますが、Android 課金システムについて何かアイデアを持っている人はいますか? 理想的には、サブスクリプション サービスで。それはすべてプレイストアで行われますか?
android - Google Play からアプリ内アイテムの価格を取得する
このリンクを参考にしています
親愛なる皆様、Google Play から私のアプリのアプリ内製品の価格を表示する必要があります。上記のリンクに示されているように、Google Play から価格を取得しようとしましたが...
それを言う
どうすればこのエラーを解決できますか? または、どの方法で Google Play からアプリ内製品の価格を取得できますか?
これが私のコードです。
android - Android アプリ内課金: 別の非同期操作 (進行中) のため、非同期操作を開始できません
Google のチュートリアルで推奨されているように、ユーティリティ クラスを使用していIabHelper
ますが、このエラーに悩まされています。複数の非同期IabHelper
操作を同時に実行できないようです。在庫の取得がまだ進行中のときに購入を開始しようとして、なんとかヒットしました。
ここonActivityResult
で提案されているように、すでにメインクラスに実装しようとしましたが、エラーが発生する前にそのメソッドを呼び出すことすらできません。次に、これを見つけましたが、このメソッドがどこにあるかわかりません-クラスにはありません。flagEndAsync
IabHelper
今、私はこれを回避する方法を探しています(シーバン全体を再実装することなく)。私が考えることができる唯一の解決策はasyncActive
、非同期タスクが開始される前にチェックされるブール値フィールドを作成し、アクティブな別のタスクがある場合はそれを行わないことです。しかし、これには他にも多くの問題があり、アクティビティ全体では機能しません。また、まったく実行しないのではなく、許可されたらすぐに非同期タスクをキューに入れて実行することをお勧めします。
この問題の解決策はありますか?
android - Androidアプリ内課金:launchPurchaseFlowが進行中のため、launchPurchaseFlowを開始できません
アプリ内課金を初めて実装し、静的SKUIDを使用して最初の購入をテストしています。
それは最初は非常にうまくいきました。電話mHelper.launchPurchaseFlow(...)
してテスト購入を完了しました。私のアクティビティはonActivityResult
コールバックを受け取り、それをで処理するようにしましたmHelper.handleActivityResult(...)
。すべてが素晴らしかった。
ただし、次の部分をテストしたかったので、アプリを再起動して同じSKU(静的purchased
SKU)を購入しようとしました。
2回目にアイテムを購入しようとすると、OnIabPurchaseFinishedListener
が呼び出さpurchase failed
れ、ログに「アプリ内請求エラー:アイテムを購入できません。エラー応答:7:アイテムは既に所有されています」と表示されます。
それは理にかなっていますが、別のアイテムを購入しようとすると、次のエラーでアプリがクラッシュします。
java.lang.IllegalStateException:別の非同期操作(launchPurchaseFlow)が進行中であるため、非同期操作(launchPurchaseFlow)を開始できません。
失敗したonActivityResult
購入を実行しようとしてもコールバックが発生しないため、失敗した起動フローは処理およびクリーンアップされません。したがって、別の購入を試みると、最後に失敗したトランザクションの途中にあると思われるため、クラッシュするのはそのためです。
私は何が間違っているのですか?失敗後にlaunchPurchaseFlow()が確実にクリーンアップされるようにするにはどうすればよいですか?