Что происходит с данными приложения, когда я обновляю или удаляю приложение iOS?

Когда я обновляю свои приложения на iOS, конфигурация приложений всегда сохраняется, включая пароли. Мне интересно, кто-нибудь знает, сохраняются ли данные, когда я (как конечный пользователь) также удаляю приложения.

Вот вопросы:

  • Действительно ли обновление на iOS представляет собой удаление, а затем установку или действительно другую операцию, чем удаление?
  • Есть ли реальная деинсталляция или это просто удаление?

Учитывая, что поставщик приложения не может отличить удаление от конечного пользователя от обновления, как ожидается, что данные конфигурации будут защищены?

Ответы (2)

Это удаление и повторная установка. Новая копия загружается из AppStore, а фактический файл приложения удаляется с устройства, а затем копируется повторно. Это та же операция, что и при удалении, только с немедленной установкой.

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

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

Пользовательские данные хранятся в очень специфических областях в приложениях iOS, и есть дополнительные области (кеш и tmp), где данные могут храниться временно, которые могут быть воссозданы на лету (или повторной загрузкой), если это необходимо. До iOS5 обновление через App Store было бы полной переустановкой, эффективно, но с сохранением области пользовательских данных, чтобы ваши обновленные Angry Birds сохраняли ваши высокие баллы и т. д. Однако удалите приложение, и вы также удалите эти пользовательские области, поскольку они не могут существовать вне приложения (они изолированы и недоступны через файловую систему, например механизм и т. д.

Чтобы обезопасить эти области, сделайте резервную копию через iTunes. Приложение (или его последняя двоичная версия) сохраняется вместе с данными пользователя. Можно загрузить приложение, создать некоторые данные, создать его резервную копию, удалить приложение и данные, затем обновить приложение из iTunes, не устанавливая его на свой телефон, а затем добавить приложение обратно в свой список синхронизации, после чего оно вытолкнет новый двоичный файл и повторно заполнит пользовательские области вашими сохраненными данными.

Я считаю, что начиная с iOS 5 и выше возможно «дельта-обновление», при котором вместо переустановки всего приложения поверх (с сохранением пользовательских данных) вы загружаете только измененные биты, но я не могу найти точных деталей прямо сейчас. Конечно, будущие обновления ОС будут происходить таким образом, и я уверен, что это произойдет, если оно еще не пришло к загрузкам в магазинах приложений, как в магазинах приложений Mac, так и в магазинах приложений iOS.

Согласно документации по разработке, дельта-обновления доступны только для ОС, аналогично OSX. На самом деле я не предвижу, что они легко представят это для приложений в магазинах, поскольку создавать эти патчи для каждой предыдущей версии довольно сложно. Сделать это для одного приложения несложно, но Apple фактически предлагает оба варианта. Требования к работе дельта-обновлений довольно высоки, и их может быть сложно поддерживать в течение длительного времени. Это потребует от разработчиков некоторой работы, чтобы предложить это, и они также должны будут предложить полное не дельта-обновление.
Спасибо за разъяснения.