2012-12-28 21 views
6

私は、市場に$ 0.99のアプリを持っています。私はアプリ内課金を実装して、有料で特定の機能をアンロックするオプションを無料で提供できるようにしたいと考えています。私はすでにそれを可能にするコードを修正しました。問題は...既にアプリを購入した1000人以上のユーザーに、そのアプリを購入してすべての機能のロックを解除してもらう方法はありますか?有料から無料のアプリ内課金へ行く

+0

どのようなアプリがありますか?それはオフラインアプリですか?または、あなたが提供するいくつかのサービスでインターネットを使用していますか?ユーザーがあなたのアプリを使用するためのアカウントや何かを作成していますか? –

+0

オフラインアプリです。ユーザーアカウントなど何もありません。 – Roger

答えて

3

何らかの種類の永続ストレージを使用している場合、これを回避する方法があります。

SharedPreferencesの場合、最初の実行時に、SharedPreferences.contains()を使用して、環境設定の1つをチェックします。それが含まれている場合、アプリはすでにインストールされている必要があります。そうでない場合は、ユーザーに新しい(無料)とマークする別の環境設定を設定し、毎回チェックを行わないようにもう1つ設定します。

これは、環境設定に「デフォルト」の値がない場合にのみ機能します。デフォルトでxmlを設定すると、それが含まれているとマークされているかどうかはわかりません。

アセットがSDに転送されている場合、または同様のワンタイム設定がある場合は、同様のことが可能です。初めてそれをする前に既に完了しているかどうかを確認するだけです。

SQLite DBを使用している場合は、現在のバージョン(またはそれ以前)から来る場合は、DBのバージョンを増やしてonUpgrade()に "paid"とマークすることができます。

私が言ったように、それはハックですが、アプリのインストールがアップグレードか初期インストールかを確認するための「公式」な方法はわかりません。しかし、ここにいくつかの落とし穴があります。たとえば、以前の有料顧客が新しいバージョンをインストールする前に完全にアンインストールした場合、または新しいデバイスにインストールされている場合...

+0

これはうまく動作しません。ユーザーがあなたの有料版を以前に持っていたが、後でそれを削除した場合を考えてみましょう。今すぐ新しいIABバージョンをインストールしたいと考えています。明らかに、あなたの方法は、彼が既にそれを支払っている間に、彼を初期使用として分類します。 – abedfar

+0

@abedfar私は最後の文でその事件を明示します。私が言ったように、これはハックであり、過去3年で事態が変わったかもしれないが、私はこれをすべてのユーザに「正しい」ものとする良い方法はないと信じている。 – Geobits

+0

あなたは正しいです。有料のアプリを無料に変更すると、有料のユーザー(有料アプリで今やっていること)を区別するためにGoogleライセンスサーバーを引き出すことができますか?有料のアプリを無料にするとすぐにLicの検証が無意味になり、GoogleがLicのすべてのクエリに対して真実を返す必要があるため、私は個人的には疑問に思います。 – abedfar

関連する問題