Обновление приложения для iPhone по сравнению с новой версией

Допустим, у меня есть существующее приложение IOS, которое доступно в Appstore версии 1.0.

Теперь я делаю некоторые изменения в приложении и хочу отправить обратно.

Есть ли 2 разных способа отправки? Например, могу ли я сохранить версию 1.0 и просто отправить приложение ИЛИ мне нужно создать новую версию 1.1, а затем отправить ее?

В чем отличия процесса?

Также со стороны клиента, как это работает для новых/существующих пользователей?


person copenndthagen    schedule 11.12.2011    source источник


Ответы (5)


Я только что узнал кое-что об обновлениях версий и App Store. Только что у меня возникли проблемы, и у пользователей произошел сбой из-за поведения системы iOS, которое я не мог понять раньше. И, что очень важно, в последних версиях iTunes, AppStore и iOS изменили некоторые правила обновления и установки. Теперь это работает следующим образом: - Когда пользователь устанавливает новую версию, все файлы в комплекте загружаются и копируются в предыдущий существующий пакет, но СТАРЫЕ ФАЙЛЫ ИЛИ КОМПОНЕНТЫ НЕ УДАЛЯЮТСЯ (или не все удаляются). Итак, итоговый комплект НЕ равен комплекту свежеустановленной новой версии. - Например, если файл xib/nib локализован на разные языки для новой версии, обновленный пакет будет включать обе версии: одну в корневой папке и другую в каждой локализованной папке. Система, очевидно, будет использовать первый, и только новая установка покажет локализации для этого файла. Одно из моих приложений показывает эту проблему с MainWindow.xib, и поскольку в ссылках и классах есть некоторые изменения, обновленные приложения аварийно завершают работу каждый раз, когда вы пытаетесь запустить, поскольку они используют устаревший объект. Я создал новую версию, изменив имя локализованных файлов xib/nib. Поскольку MainWindow является одним из них, я, конечно, должен изменить ссылку в info.plist.

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

НО, очень странно то, что я думаю, что новая версия iOS и iTunes не допускают понижения версии. Я пытался это сделать, но не получилось. То есть, если вы устанавливаете версию, например 1.2, невозможно AFAIK установить последнюю v1.1 ни на устройстве, ни в iTunes->"Приложения". Таким образом, пакет двойной версии будет жить до переустановки приложения.

person Gabriel    schedule 11.12.2011
comment
очень информативный ответ, Габериэль :) Не могли бы вы сообщить мне часть sqlite? Что именно произошло, если старая и новая версии имеют файл sqlite с одинаковым именем (скажем, abc.sqlite1.0)? Как будет вести себя моя новая версия приложения? это переопределит старый sqlite? Или я получу данные как из sqlite. - person Lalit Paliwal; 24.07.2012
comment
да. Все, что я сказал, относится к элементам в пакете приложений. Если они оба имеют одинаковое имя в комплекте, то старый заменяется новым, как и ожидалось. - person Gabriel; 25.07.2012
comment
@Gabriel: Есть ли способ скопировать данные из старой базы данных в новую, прежде чем она будет заменена? - person Mrunal; 11.10.2013
comment
@Mrunal, извините за задержку. Я думаю, что путь заключается не в замене вашей старой базы данных, а в создании новой. Если файл с таким же именем находится в той же папке в комплекте, он будет заменен при обновлении. - person Gabriel; 27.10.2013
comment
О каких версиях вы говорите? Потому что мне приходилось иметь дело только с базой данных и другими файлами, такими как условия. Я решил это, сохранив константу DB_VERSION, которую я могу сохранить в общих настройках ([NSUserDefaults standardUserDefaults]) и оценить ее, чтобы узнать, должен ли я заменить свои файлы. - person IgniteCoders; 15.04.2014
comment
@MansApps Я не помню, в какой версии я обнаружил эту проблему. Дата сообщения — 11 декабря 2011 года. Иди разберись. У меня были проблемы с этим, потому что некоторые файлы, которые не были локализованы в предыдущей версии, существовали в корневой папке пакета, а новые версии находились в локализованных папках. Таким образом, старый использовался при вызове сбоя приложения. - person Gabriel; 15.04.2014
comment
@Gabriel, спасибо за ответ, я позабочусь об этом, когда добавлю новые локализации в свой проект. - person IgniteCoders; 16.04.2014

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

Вы добавляете новую версию в iTunes connect, затем обновляете номер версии в Xcode, чтобы он совпадал, и создаете новый архив. Это довольно просто.

person jrturton    schedule 11.12.2011

Вы всегда должны увеличивать номер версии любого обновления вашего приложения.

Пользователи увидят значок на значке App Store на устройстве и в iTunes на своем ПК. Перейдя в раздел обновлений, вы увидите ваше приложение вместе со списком внесенных вами изменений и кнопкой для установки обновления. Они также могут обновлять все приложения одновременно.

person Abhi Beckert    schedule 11.12.2011

Вам больше не нужно открывать номера версий для отправки. Откройте Xcode, перейдите в «Окно» — «Органайзер» — «Архивация и распространение» приложения, которое вы успешно создали.

person Alex Montgomery    schedule 11.09.2014

person    schedule
comment
Вы можете использовать [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"] для обработки изменений версий в качестве базы данных или новых/устаревших ключей в общих настройках ([NSUserDefaults standardUserDefaults]). Вот пример: stackoverflow.com/a/23082595/2835520 - person IgniteCoders; 15.04.2014