Удаляет ли обновление приложений iOS файлы каталогов библиотеки? - PullRequest
12 голосов
/ 26 февраля 2011

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

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

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

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

Ответы [ 3 ]

17 голосов
/ 16 мая 2013

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

Application_Home / Documents

Application_Home / Library

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

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

3 голосов
/ 27 апреля 2012

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

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

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

2 голосов
/ 26 февраля 2011

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

Monotouch: documentsDirectory = environment.specialfolder.personal;

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

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