2017-03-06 6 views
1

私はアプリのいくつかのアプリを購入しており、それぞれがアプリの特定のセクションをロック解除しています。実際にアプリで購入ステータスを持っていることの最良の方法だろうアプリの購入時にキャッシュするか、Androidアプリで起動するたびにチェックしますか?

が、正しい方法で?:

  1. ストアの購入、実際の購入またはオン後に購入を復元し、SharedPreferences上とアプリの開始時にそれを読んでください。これにより問題が発生する可能性があります。払い戻しの場合、アプリは引き続き値を保持します。根ざしたユーザーは、xmlを編集して、購入した場合はその購入を追加することができます。

  2. アプリの起動時にqueryInventoryAsyncを実行し、その結果をSharedPreferenceとして保存しておきます。これにより、ネットワークがない場合には、前のqueryInventoryAsyncの結果からSharedPreference値を使用することができます。

Googleは今、クライアントを再生するので、デバイス上でローカル情報 課金でアプリキャッシュし、あなたはgetPurchases呼び出して、たとえば、より頻繁にこの 情報を照会するために、バージョン3 APIを使用することができます。 以前のバージョンのAPIとは異なり、多くのバージョン3 API呼び出しの は、Google Playへのネットワーク の接続ではなく、キャッシュの参照によって処理されます。これにより、APIの応答時間が大幅に短縮されます。

どうすればよいですか?各アプリケーションの起動時にqueryInventoryAsyncを実行すると、キャッシュされた結果を使用する必要があるとの問題はありますか?

答えて

0

私は私のゲームのすべての各アプリの起動時にqueryInventoryAsyncを使用し、これまでのところ何の問題(20Kユーザ)は存在しませんでした。

+0

ありがとうございます。 'queryInventoryAsync'が失敗した場合の結果も保存していますか? – Alin

+0

いいえ、私は結果が失敗した場合に保存しません。 –

+0

私は結果を別々に保存しません。私が気づいたことの1つは、ユーザーがアプリのアップグレード後に以前のアプリ内購入を認識しないと不平を言うことが多いということです。だから私は、キャッシュは、アップグレード時にクリアされている疑いがある、とアプリが、その後の時間にGoogleのサーバーを照会することはできませんならば、アプリが一時的に行われていないと購入を示してもよいです。 – snark

関連する問題