私は新しい市場戦略を試しているので、すべてのコンテンツのロックを解除するアプリ内購入で、今すぐ 0.79 ユーロのアプリを無料で公開します。また、すでにアプリを購入したユーザーを裏切りたくないので、アプリを既に購入しているユーザーがすべてのロックを解除するためにアプリ内課金を購入する必要がないチェックを実装することを考えました。
私の問題は... アプリがいつ購入されたかを確認できますか? それとも簡単な方法がありますか?
私は新しい市場戦略を試しているので、すべてのコンテンツのロックを解除するアプリ内購入で、今すぐ 0.79 ユーロのアプリを無料で公開します。また、すでにアプリを購入したユーザーを裏切りたくないので、アプリを既に購入しているユーザーがすべてのロックを解除するためにアプリ内課金を購入する必要がないチェックを実装することを考えました。
私の問題は... アプリがいつ購入されたかを確認できますか? それとも簡単な方法がありますか?
これを更新するだけで、それは可能です。この質問への回答を見てください。領収書のフィールドの 1 つは「最初の購入日」です。
インストール/購入日についてOSに尋ねる方法がないため、ユーザーがアプリを購入したかどうかを確認する方法がないため、これを確実に行うことはできません。
提案どおりに保存できますがNSUserDefaults
、ユーザーがアプリを削除すると、この情報は失われます。
アプリを削除してもキーチェーンはクリアされませんが、iOS デバイスが復元されるとこれらの設定が失われる可能性があるため、問題は依然として存在します。
rckoenesの説明は正しいです。私は最近そのようなシナリオを経験しており、ここでの回答に記載されているオプションを検討しました。私が最終的に使用するオプションは、既存のアプリのバージョンではなく、アプリの別の拡張機能(「pro」や「lite」など)をリリースすることです。これにより、アプリの購入ステータスを処理する煩わしさがすべて解消されます。次に、すべてのプレミアムコンテンツを含むフル有料バージョンと、コンテンツのロックを解除するためのアプリ内購入を含む1つの無料バージョンがあります。それがお役に立てば幸いです。
アプリケーションの現在のバージョンが状態を保存すると仮定すると、アプリケーションの次のバージョンの最初の起動時に、保存された状態 (例: のキーNSUserDefaults
、ドキュメント ディレクトリのファイルなど)を確認できます。
ただし、これは 1 回だけ行う必要があるため、チェックが実行されたことを示す別の場所に別のフラグを設定する必要があります。
これは非常に簡単です。新しいアプリがいつオンラインになるかがわかっている場合は、インストールの日付/時刻を確認するだけです (最初の実行時に日付/時刻をキーチェーンに保存します)。無料アプリがオンラインになった日時より前にアプリをインストールしたユーザーは、コンテンツにアクセスできます。新しいユーザーが日付/時刻をいじるのが心配な場合は、オンライン タイム サービスを使用して実際の時刻を取得してください。