Есть ли предлагаемый способ доставки содержимого покупки внутри приложения клиенту? - PullRequest
0 голосов
/ 27 февраля 2011

Я занимаюсь разработкой игры для iPad, которая позволяет покупать новые игровые уровни (в основном набор картинок, связанных с некоторыми заголовком и описанием) с помощью StoreKit.Эти наборы изображений хранятся в облаке.Руководство по программированию StoreKit на самом деле не дает советов о том, как извлечь контент с сервера, и я застрял в поиске того, что будет хорошей практикой проектирования здесь.Мне приходит в голову пара реализаций:

  1. Извлечение всего содержимого в виде сжатого архива и распаковка архива на клиенте в соответствии с известным соглашением о каталогах и файлах и проверка на наличиеналичие каталога, чтобы узнать, какие дополнительные уровни приобрел пользователь.
  2. Извлечение содержимого по одной картинке за раз, а затем сериализация и сохранение набора с NSKeyedArchiver в файле с тем же именем идентификатора продукта,Чтобы проверить, купил ли пользователь конкретный набор, я бы затем проверил наличие файла с именем, подобным идентификатору продукта.
  3. То же, что 2, но вместо этого используется платформа Core Data.

Я думаю, что решение Core Data имеет то преимущество, что данные изображений не будут загружаться до тех пор, пока они действительно не будут запрошены (так как ограничения памяти на iPad довольно малы).Оптимизация памяти может быть важной, поскольку мне нужно отображать эскизы этих изображений без необходимости загружать в память весь полноразмерный набор.Решение для сжатых архивов также имеет это преимущество.

Какую практику вы бы предложили?

1 Ответ

0 голосов
/ 27 февраля 2011

Здесь вы объединяете два отдельных вопроса: как извлечь контент и как сохранить его на устройстве.

Чтобы извлечь контент, лучше всего, вероятно, получить какой-нибудь архив и разархивироватьэто на устройстве.Этот архив может быть zip-файлом, XML-файлом с изображениями, кодированными в base64 в виде значений некоторых узлов, или пользовательским двоичным форматом файла, что на самом деле не имеет значения.Я бы не стал загружать каждый отдельный ресурс по отдельности, так как это может легко привести к ситуации, когда данные загружаются только частично.

После того, как у вас есть архив, вам нужно будет распаковать его и сохранить содержимое наУстройство.Храните ли вы его как файлы в структуре каталогов, как сериализованный NSDictionary в файле или как объекты, сохраненные в Core Data, решать только вам.Как структура каталогов, так и решения Core Data имеют то преимущество, что вы можете легко загружать только отдельные ресурсы по мере необходимости.Любой из них является правильным выбором, используйте тот, который лучше всего подходит для вашей ситуации, или тот, который вам удобнее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...