Обновление корпоративных приложений iOS 8

Я работаю над корпоративным приложением, которое распространяется на itms-services.

Это приложение имеет службу, которая позволяет пользователю узнать, когда есть обновление, поэтому, когда пользователь нажимает кнопку обновления, приложение вызывает itms-services для загрузки и установки последней версии.

До iOS 8 при вызове itms-services из приложения система закрывала приложение и запускала процесс обновления. Теперь есть раздражающее изменение, когда приложение больше не закрывается, пользователь не знает, что процесс обновления начался.

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

Кто-нибудь знает лучшее решение для этого?

ОБНОВЛЕНИЕ: Это приложение также распространяется в App Store, поэтому я не могу использовать ничего, что могло бы вызвать отказ Apple.

Спасибо


person Franco Carbonaro    schedule 07.10.2014    source источник
comment
Можете ли вы попробовать вызвать кнопку «Домой» после запуска обновления или попробовать закрыть приложение с помощью ? '[[NSThread mainThread] выход] '   -  person Luo Sen    schedule 07.10.2014
comment
Да, пользователь может использовать кнопку «Домой». Можно ли вызывать [[NSThread mainThread] exit]? Вы знаете, одобрила бы это Apple? Это приложение также распространяется в App Store.   -  person Franco Carbonaro    schedule 07.10.2014
comment
[[NSThread mainThread] exit] — правильный способ закрыть приложение! но я не знаю, действительно ли вам нужно закрыть его перед обновлением. родной способ обновления - просто попасть домой   -  person Luo Sen    schedule 07.10.2014
comment
Я хотел бы закрыть, потому что кажется, что сейчас ничего не произошло, обратная связь может справиться с этим, но я хотел бы знать, есть ли правильный способ сделать это.   -  person Franco Carbonaro    schedule 07.10.2014
comment
насколько я знаю, кнопка «Домой» — это правильный способ сделать это перед обновлением, но с точки зрения закрытия приложения [[NSThread mainThread] exit] — правильный способ! Вы могли бы провести небольшое исследование, чтобы узнать, что говорят другие люди!   -  person Luo Sen    schedule 07.10.2014
comment
Мне также интересно, можно ли определить, нажимал ли пользователь «Установить» или «Отмена» в диалоговом окне подтверждения системы.   -  person heximal    schedule 04.12.2014


Ответы (2)


Вы можете позвонить

[[UIApplication sharedApplication] performSelector:@selector(suspend)];

чтобы поместить приложение в фоновый режим сразу после открытия вашего URL-адреса.

person James Moore    schedule 22.10.2014
comment
Это работает очень хорошо для меня. Франко: Почему бы вам не использовать этот код, но обязательно удалить его при сборке для магазина приложений? Это ведь другая сборка? (Должен быть как минимум другой профиль обеспечения). Добавьте директиву препроцессора, чтобы удалить его из сборок App Store, и Apple не отклонит ваше приложение. - person Jesper Schläger; 05.11.2014

Процесс обновления в iOS 8 не останавливает выполнение приложения до тех пор, пока обновление не будет завершено. Если вы посмотрите на главный экран во время обновления, вы увидите два значка одного и того же приложения. После завершения обновления значок «обновление» исчезнет, ​​и ваше приложение будет обновлено.

Если вы выпускаете корпоративное приложение, вы, вероятно, не проходите процесс проверки Apple. Вы можете рассмотреть возможность использования частных методов для закрытия вашего приложения, когда запускается поток обновления в приложении. Вы даже можете вызвать сбой, если хотите (например, попытаться получить доступ к индексу массива за пределами границ), хотя вы, вероятно, получите отчеты о сбое. ;)

person Ian MacDonald    schedule 07.10.2014
comment
Я не могу использовать частные методы, потому что одно и то же приложение распространяется в App Store, только некоторые из наших клиентов используют корпоративное распространение. Что касается второго значка, это не мой случай, я читал о людях, говорящих, что второй элемент может быть создан, когда идентификатор пакета не совпадает (stackoverflow.com/questions/25772664/). Пока мое приложение работает, начинается процесс загрузки, а процесс установки начнется только тогда, когда приложение не работает на переднем плане. Спасибо - person Franco Carbonaro; 07.10.2014
comment
Вы уверены, что на iOS 8 есть только один значок? Значки не обязательно будут отображаться на одной и той же странице главного экрана. По моему опыту, после обновления до iOS 8 их всегда было два, даже если идентификатор пакета не изменился. Этот второй значок отображается до завершения обновления, а затем исчезает. - person Ian MacDonald; 07.10.2014
comment
В моем случае новая иконка заменяет текущую, и было бы идеально, если бы выполнение было остановлено. - person Franco Carbonaro; 07.10.2014