Подтвердить что ты не робот

Обновляет ли приложения iOS файлы каталога библиотеки?

Я сохраняю файлы в приватном каталоге в своем приложении для iPad, а именно тот, который возвращается, когда я использую:

paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
documentsDirectory = [paths objectAtIndex:0];
documentsDirectory = [documentsDirectory stringByAppendingPathComponent:@"Private Documents"]; 

Обратите внимание, что я также добавляю в него подкаталог. Когда я обновляю приложение, пользователи сообщают мне, что их прогресс в приложении разрушается. Являются ли файлы в этом NSLibraryDirectory уничтожен каждый раз, когда я обновляю приложение? Если это так, следует ли вместо этого использовать NSDocumentDirectory?

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

4b9b3361

Ответ 1

Вы должны сохранить их в папке "Документы", они постоянно сохраняются в обновлениях.

Monotouch: documentsDirectory = environment.specialfolder.personal;

Objective-C: NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)

Ответ 2

Когда пользователь загружает обновление приложения, iTunes устанавливает обновление в новый каталог приложений. Затем он удаляет файлы данных пользователей из старой установки в новую папку приложения перед удалением старой установки. Файлы в следующих каталогах будут сохранены в процессе обновления:

Application_Home/Документы

Application_Home/Библиотека

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

Это предоставляется яблоком официально. См. Эту ссылку: Библиотека разработчиков iOS - файл, сохраненный во время обновлений приложений

Ответ 3

Я также хотел бы добавить эту информацию в личный опыт работы с большой онлайн-игрой. Вы не можете полагаться на 100%, что всегда будут находиться ваши папки "Документ" и "Библиотека". На самом деле вы не можете полагаться на то, что папка вашего приложения будет оставаться на том же месте на вашем устройстве после обновления.

Позвольте мне объяснить это немного больше. Когда вы устанавливаете приложение на свое устройство, реальным путем будет /var/mobile/Applications/ [some class id]/[ваше приложение].app/... Мы не уверены, кто определяет идентификатор класса вашего приложения (либо iOS, либо магазин приложений), но этот идентификатор может измениться при обновлении игры, в результате чего ваше приложение будет в полной папке, чтобы ваши старые файлы больше не были там, Наш QA испытал это и наших пользователей.

Я не буду подробно рассказывать о том, как мы это узнали и как нам удалось обойти это (частная компания, обычное дерьмо...), но вам нужно подумать об этом, если вы делаете приложение который затрагивает тонны пользователей и может быть обновлен пару раз. Возможно, это было исправлено, но всегда полезно иметь план резервного копирования.