Приложение отклонено из-за несоблюдения рекомендаций по хранению данных iOS - PullRequest
7 голосов
/ 11 января 2012

Мы храним данные в каталоге документов приложения, и мы получили отклонение приложения. Мы попытались с атрибутом «не выполнять резервное копирование» для хранения данных в текущей версии с кодом ниже.

- (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL{

    const char* filePath = [[URL path] fileSystemRepresentation];

    const char* attrName = "com.apple.MobileBackup";

    u_int8_t attrValue = 1;

    int result = setxattr(filePath, attrName, &attrValue, sizeof(attrValue), 0, 0);

    return result == 0;

}

Мы использовали его в соответствии с рекомендациями по хранению данных iOS.

В более ранней версии мы также пытались хранить данные в приватном каталоге. Но мы не смогли получить одобрение заявки.

Не могли бы вы дать нам более подробное описание того, почему мы не можем получить одобрение заявки? или же нам нужны другие изменения в коде, касающиеся хранения данных? Итак, чтобы мы могли получить одобрение и у нас появилась новая версия приложения в iTunes.

Ответы [ 2 ]

6 голосов
/ 23 февраля 2012

Я думаю, что комментарий @ Jasarien является правильным ответом, но дальнейших комментариев не было, и этот вопрос относительно новый, поэтому я расширю.

Чтобы другие увидели отклонение, вы получите:

В Руководстве по хранению данных iOS указано:

  1. В каталоге / Documents должны храниться только документы и другие данные, созданные пользователем или которые не могут быть иным образом воссозданы вашим приложением, и они будут автоматически сохранены в iCloud.

  2. Данные, которые могут быть загружены повторно или восстановлены, должны храниться в каталоге / Library / Caches. Примеры файлов, которые вы должны поместить в каталог Caches, включают файлы кэша базы данных и загружаемый контент, например, используемый в журналах, газетах и ​​приложениях для карт.

  3. Данные, которые используются только временно, должны храниться в каталоге / tmp. Хотя эти файлы не сохранены в iCloud, не забудьте удалить эти файлы, когда закончите с ними, чтобы они не продолжали занимать место на устройстве пользователя.

  4. Используйте атрибут «не выполнять резервное копирование» для указания файлов, которые должны оставаться на устройстве, даже в ситуациях нехватки памяти. Используйте этот атрибут с данными, которые могут быть воссозданы, но должны сохраняться даже в ситуациях недостаточного хранения для правильного функционирования вашего приложения или потому, что клиенты ожидают, что оно будет доступно во время автономного использования. Этот атрибут работает с помеченными файлами независимо от того, в каком каталоге они находятся, включая каталог «Документы». Эти файлы не будут удалены и не будут включены в резервную копию iCloud или iTunes пользователя. Поскольку эти файлы занимают место на устройстве, ваше приложение отвечает за периодический мониторинг и очистку этих файлов. "

Например, только содержимое, которое пользователь создает с помощью вашего приложения, например документы, новые файлы, изменения и т. Д., Может храниться в каталоге / Documents и архивироваться с помощью iCloud.

Временные файлы, используемые вашим приложением, должны храниться только в каталоге / tmp; пожалуйста, не забудьте удалить файлы, хранящиеся в этом месте, когда пользователь выходит из приложения.

Данные, которые могут быть воссозданы, но должны сохраняться для правильного функционирования вашего приложения - или потому что клиенты ожидают, что оно будет доступно для автономного использования - должны быть помечены атрибутом «не выполнять резервное копирование». Дополнительную информацию см. В разделе «Технические вопросы и ответы 1719: как предотвратить резервное копирование файлов в iCloud и iTunes?».

Итак, я понимаю, почему вы используете «не выполнять резервное копирование» и ожидаете соблюдения, но я думаю, что, как сказал @Jasarien, - они означают, что вы переходите к более отдельным каталогам, таким как cache или temp.

На самом деле то, что определенно прошло бы проверку, это переключение на Core Data и использование внутреннего SQLite - но это, вероятно, слишком много работы.

Итак, чтобы завершить - пост о том, как сохранить в кэши или TMP - Где сохранять файлы в приложениях iOS 5? (на самом деле, может быть, это был дубликат этого ...: - /)

GL! Одед

- Правка -

Еще один хороший пост: https://stackoverflow.com/questions/8164868/ios-data-storage-guidelines-available-since-when

- Правка № 2 -

И еще один хороший пост: iOS 5 не позволяет хранить загруженные данные в каталоге Documents?

Полагаю, мне следовало указать на дубликаты ...:)

0 голосов
/ 22 марта 2013

Посмотрите по этой ссылке http://developer.apple.com/library/ios/#qa/qa1719/_index.html#//apple_ref/doc/uid/DTS40011342 Код, который вы используете, совместим с 5.0.1, а не с 5.1 и более поздними. Вы должны использовать кэш для <= 5.0. Но лучшим решением будет развертывание для 5.1 и более поздних версий вместо 5.0, потому что если у вас большие объемы данных, вполне вероятно, что кэш будет очищен раньше. Надеюсь, это поможет. </p>

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