特定の機能を有効にするアプリ内購入アイテムが多数あるアプリに取り組んでいます。
各アイテムを購入した後、それを覚えておく必要があります (もちろん)。また、アプリが削除されたり、別のデバイスにインストールされたりした場合に備えて、この情報を iCloud に保持したいと考えています。
使用するのに最適なデータ構造は何ですか?
これにユーザーデフォルトデータベースを使用できますか?
重要なのは、ユーザーがこれらの値を変更して有料機能を自分で有効にするためのアクセス権を持たないことです。
特定の機能を有効にするアプリ内購入アイテムが多数あるアプリに取り組んでいます。
各アイテムを購入した後、それを覚えておく必要があります (もちろん)。また、アプリが削除されたり、別のデバイスにインストールされたりした場合に備えて、この情報を iCloud に保持したいと考えています。
使用するのに最適なデータ構造は何ですか?
これにユーザーデフォルトデータベースを使用できますか?
重要なのは、ユーザーがこれらの値を変更して有料機能を自分で有効にするためのアクセス権を持たないことです。
このクラスを使用してKeychainItemWrapper
、フラグをキーチェーンに格納します。良い点は、これまでのところ、アプリを削除してもキーチェーンが存続することです。その後、ユーザーが同じアプリを同じデバイスに再インストールしても、キーチェーン データは残っています。
iCloudを使用する必要はありません。ユーザーがアプリを別のデバイスにインストールする場合は、アプリに [購入を復元] ボタンを提供するだけで済みます。次に、ストア キット API を呼び出して、既存の購入を復元します。「アプリ内購入プログラミング ガイド」では、これを行う方法について説明しています。
これと同じ機能により、キーチェーンのフラグが失われた場合でも、ユーザーは購入を復元できます。
これにユーザーデフォルトデータベースを使用できますか?
可能ですが、そうするのは最善の考えではありません。
重要なのは、ユーザーがこれらの値を変更して有料機能を自分で有効にするためのアクセス権を持たないことです。
その内容をNSUserDefaults
バイナリまたはプレーンテキストのプロパティ リストとして保存します。ジェイルブレイクされたデバイスで簡単に変更できます。(また、iTunes バックアップ ファイルを変更することにより、ジェイルブレイクされていないものでも変更可能です)。
あなたができることは、それらをキーチェーンに保存することです.ユーザーが購入したものをサーバーにチェックさせます。
もちろん、チェックを行うのがサーバーだけではない場合、たとえば、購入に基づいてコンテンツを送信するか送信しないかだけでなく、アプリ内でアクションを実行するためにこのチェックを使用する場合も、ハッキングされる可能性があります (Google の "MobileSubstrate cheat DoodleJump" が良い例です)。
全体として、完全に安全なシステムはありません。