1

アプリ内購入をアプリケーションに統合したいので、ユーザーが新しいレベルセットを購入するたびに.plistファイルをダウンロードしたいと思います。サーバーからファイルをダウンロードして保存し、iPhoneアプリに永久に残るようにするにはどうすればよいですか?

編集

私はそのようなことを達成したい:

  • これらのplistは多くないので(20を超えることはありません)、アプリにそれらを含めて、ブール値を設定することができisPurchasedますよね?ユーザーがカテゴリを購入した場合、ブール値はに設定されYESます。私が新しいカテゴリを追加するたびに、たとえば「Cuttherope」のようなまったく新しいアップデートがあります。それは良いアプローチですか?
4

2 に答える 2

1

まず、アプリ内購入にAppleのサービスを利用してみませんか?なぜ独自の実装を使用するのですか?よくわかりませんが...Appleの承認を得ると思いますか?私が覚えている限り、Amazonは過去に同様のことをしましたが、彼らはそれを理解していませんでした。

2番目:この目的にはNSDataを使用しません。有効なプロパティリストがある場合は、それを使用するのが最適なソリューションです

NSDictionary *dict = [NSDictionary dictionaryWithContentsOfURL:[NSURL URLWithString:@"foobar.com/plistfile.plist"]];

次に、この辞書を保存できます。正直なところ、私はあなたのソリューションを使用することをお勧めしません。私があなたを正しく理解していれば、しばらくすると何千ものplistができます。私の提案:たとえば、AppDelegateのivarとして「グローバル」な可変辞書を使用します。これは最初は空である必要があります。次に、上記のようにヘルパー辞書をダウンロードし、グローバル辞書に次のように入力します

[[delegateInstance globalDictionary] addEntriesFromDictionary:dict];

新しいデータを取得するたびに。

で保存

[[delegateInstance globalDictionary] writeToFile:@"path" atomically:YES];

アプリが起動するたびに回復します。

編集:

もちろん、そのようにすることもできます。これらのplistが実際に情報を格納している場合、それは問題ありません。たとえば、請求情報をそこに保存して、他のユーザーと交換できないようにすることができます(または少なくとも交換できないようにする必要があります)。ただし、ユーザーが特定のレベルを購入した場合、または1つのplist内で情報を組み合わせることを検討しない場合にのみ質問に関する情報を取得したい場合(上記のとおり)。とにかく:ユーザーがデータを取り戻す可能性を検討してください。誰かが誤ってアプリを削除したと考えてください。彼の購入品がすべて失われたことを彼にどのように説明したいですか?アプリ内購入の方が安全です。

または少なくとも:領収書のコピーをサーバーに保存し、ユーザーがログインして過去に支払った金額を収集できるようにします;-)

楽しんで頑張ってください!:-)

于 2012-05-29T09:45:36.003 に答える
0

迅速で汚れたワンライナー:

[[NSData dataWithContentsOfURL:@"http://<yourfile>.plist"] writeToFile:@"pathforthefile.plist" atomically:YES];
于 2012-05-28T21:24:24.240 に答える