2013-04-26 8 views
10

Google Playストアには完全に無料のアプリが公開されています。Google Playアプリ内課金で無料のアイテムを提供

アプリは私が思っていたよりも人気があるので、機能の一部をロックし、アプリ内課金を使用する前にそれを要求しました。しかし、私はすべての既存のユーザーが無料でプレミアム機能を享受し続けることを好む。

だから、私は次のことについて考え:

  • 既存のユーザーが 自由のためにそれを「購入」するように、自由のためのアプリ内課金でバージョンをアップロードします。
  • アイテムの充電に一定時間がたってから、 から既存のユーザーが既にプレミアムアイテムを所有しているので、 は傷つきませんでした。

「無料」のアイテムをユーザーに与える方法はありますか?アプリ内課金のドキュメントには、すべてのアプリ内課金アイテムの価格が必要であることが書かれています。

答えて

3

Googleから直接行う方法はありません。あなたは2テストケースを持つことになります。 -

  1. 既存ユーザー
  2. 新規ユーザーあなたは、サーバー上のユニークなuser-idを保存して、アプリケーションのあなたのアプリ内に実装する際に、このユーザIDを送信する必要が あなたサーバ。

ケース1: - サーバーは、ID返信成功メッセージと一致する場合、既存のDBと一致します。

ケース2: - このユーザーIDとともに新しいユーザーの場合、アプリは確認のためにサーバーに購入トークンを送信し、購入を確認した後、サーバーは成功メッセージを送信する必要があります。

共通タスク: - アプリケーションの起動時には、Googleからリストに取得済みのアイテムに関する情報が含まれている場合は、必ずrestoreTransaction()を呼び出してそのアイテムのロックを解除してください。 アプリでサーバー確認が実装されていることを確認してください。ここで

+0

ありがとうございました。一意のユーザーIDを保持することについては考えていませんでした。素晴らしいアイデアです!しかし、それは私にとって有用ではありません。アプリはクライアントだけであり、今はサーバー側を実装する時間がありません。私はあなたの答えを受け入れるのです。私のための解決策は、アップグレードするユーザーには料金を請求しないだけですが、次回は別のデバイスにアプリをインストールすると請求されます。 – liovka

+0

ユーザーがアプリをアップグレードしたときにアプリケーションがフルバージョンにアップグレードされたかどうかをチェックする方法フルapkファイルはGoogle Playからダウンロードされ、新しいアプリのインストールと同じ方法でデバイスにアプリを再インストールするので、 – Ankit

+0

あなたが書いたことを知っています。あなたは完全に新しいインストールごとに顧客に課金を開始することは公正な妥協であるかもしれないと思いませんか? – liovka

2

を使用すると、部分的にサーバーを使用せずに、あなたが望むものを達成できる方法である:

  1. はSharedPreferencesに一意の値を書き込みます。新しいバージョンを使用してアプリを更新します。この値は、デバイスに固有のIDのハッシュでなければなりません(少なくとも、他の多くのデバイスが共有しないID)。その値が比較的ユニークであるべき理由は、それが後のユーザー間で共有されないようにするためです。再インストールに耐えられるようにするには、アプリのインストール時に削除されない、ユーザーの外部メモリの領域に書き込むこともできます。

  2. ほとんどの現在のユーザーが新しいバージョンに更新されるように十分長い時間待ちます。この段階では、このフェーズ中に新規ユーザーがあれば、SharedPreferences内で一意の値を取得します。

  3. リリースははユニークなIDが書き込まれることはありませんし、新しいバージョンでは、充電したい対象の機能を有効にしのみいずれか IDが存在している、またはユーザーが経由で支払った場合場合アプリ内課金

これは完璧ではないが、それはあなたの現在のユーザーの少なくとも最もは機能へのアクセスを継続する可能性があります。

これがGoogle Playとの契約に違反するかどうかはわかりません。その場合、自分でその問題を確認する必要があります。現在のユーザーにアプリを無料で提供し、その機能の一部を有料にしたいという事実は、あなたが既存のユーザーの祖父でなければ偽証と見なされる可能性があります。既存のすべてのユーザーにアクセスが許可されます。

あなたのサーバーと通信するコードを持つ新しいバージョンのアプリケーションをリリースする必要があるため、独自のサーバーを使用する必要がある別の回答で提出されたアプローチにも同じ問題があるように見えることに注意してください。特定の時間間隔内に現在のユーザーに新しいバージョンを強制的に更新させることはできません。それ以外の場合は、無料アプリのユーザーは一般に開発者に知られていないため、サーバーのデータベース上の現在のユーザーを識別する一意のIDをどのように収集しますか?

クリーナーのアプローチは、それらをより価値のある作り、そしてまたは、すでに多くの貴重な古い機能を使用して、入力されたコンテンツを作り、既存の機能と緊密に統合さ機能を追加することです。あなたは既存の機能を無料で提供し続けることができますが、新しい機能には料金がかかります。

このアプローチを取ることで、現在のユーザーは機能を奪われず、付加価値機能のために現在のユーザー(新しいユーザーだけでなく)に請求することもできます。このアプローチを使用することは、ユーザーにもっと納得できるだけでなく、潜在的な有料ユーザーとして現在のユーザーベース全体を持つことになるため、潜在的により報酬を与える可能性があります。

また、あなたのアプリの現在の人気は、今あなたが請求したい機能のためかもしれないと考えるかもしれません。そして、その機能がもはや無料でなくなると、新しいユーザーの継続的な流れを引き付けることに失敗するかもしれません。

+0

を使用する予定です。私は、あなたが提案したものと似たようなことをするつもりです。 1)SharedPreferencesを使用して既存のユーザーを(できるだけ)追跡します。私は中間バージョンをリリースする必要はありません。なぜなら、ユーザが更新されたかどうかは、保存されているsqliteデータベース内のいくつかのデータをチェックすることによって知ることができるからです。 2)私は充電しようとしている機能にクールなものを追加します。 – liovka

+1

SharedPreferencesはアンインストール時に削除されることに注意してください。また、ユーザーが複数のデバイスを使用している場合は、後でインストールされた場合、それらのデバイスで値が自動的に利用できないことがあります。 完全に新しい機能の充電は、私にとっては最もクリーンなアプローチのようですが、あなたのアプリとユーザーの方がはるかに優れていることを知っているので、現在のユーザーと将来のユーザーを区別する場合があります。私はあなたの2つのクラスのユーザーを区別し続けることが、今後の本当の頭痛になる可能性があることを憂慮しています。 – Carl

+0

また、ローカルデータベースに書き込まれた既存の値を使って祖父母と新しいユーザーを区別している場合、既に妥当性検査プロセスが存在しない限り、そのような値が偽造される可能性があります私の答えに記載)。 – Carl

0

ダウンロード数が多いアプリでは実現不可能ですが、2016年1月現在、アプリごとに1つのクォータごとに最大500のプロモーションコードを付与できます。

関連する問題