2012-06-25 16 views
5

ユーザーがアプリ内購入を行うときにグローバル変数を設定する必要があります。私はNSUserDefaultsを使うことができ、 "Purchased"というキーを持っていますが、それはあまり安全ではないようです。iOSアプリ内購入 - ユーザーが購入したかどうかを確認する最善の方法

ユーザーが購入したかどうかを知るために、データを安全に保存する最良の方法は何ですか?

たとえば、特定のビューでは、「購入」ボタンを表示するかどうかを知る必要があります。彼らはすでに購入している場合は明らかに非表示にする必要があります。

答えて

3

安全なデータの場合は、iOSキーチェーンを使用する必要があります。ここではドキュメントがあります:

http://developer.apple.com/library/mac/#documentation/Security/Conceptual/keychainServConcepts/iPhoneTasks/iPhoneTasks.html

は、この情報がお役に立てば幸いです。

+0

これはiOSで役に立たないと思います。 – soleil

+1

それは確かです。キーチェーンはiOS上に存在し、データを格納する最も安全なネイティブな方法です。ユーザーはこのデータを簡単に編集することができないため、キーチェーンにデータを保存するのが最も安全な方法です。 – C0deH4cker

0

この情報を保存する必要はありません。すべてのユーザーの購入を復元する方法があります。 restoreCompletedTransactionsを探します。

あなたのビューですべてのユーザーの購入を確認して、引き続き購入可能なすべてのアイテムの[購入]ボタンを表示することができます。

UPDATE

ああ!私はあなたの質問を誤解しました。上記の方法では、たとえば、アプリの再インストールの場合にユーザーが行った購入を得ることができます。あなたの質問に関しては、NSUserDefaultsに購入した製品に関連する情報を保存して、商品、レベル、または彼が支払ったものをユーザーに提供することは、まったく問題ありません。

すべての質問に答えるためのアプリ内購入の実装に役立つthisステップバイステップチュートリアルをお勧めします。

+0

ユーザーがインターネットに接続していない場合でもこの機能は動作しますか? – soleil

+0

いいえ、そうではありませんが、ユーザーは何かを購入することも、価格などの他の情報も取得することができないので、購入可能なアイテムを表示することはできません。インターネットに接続していない場合は、ユーザーに通知してボタンを無効にしてください。 –

+0

はい、1日で購入してからしばらくしてからアプリに戻ってきて接続していない場合でも、インターフェースは購入済みであることをまだ表示できるはずです。新しい機能私は何とかそれを保存することができなければなりません。 – soleil

関連する問題