Принудительное обновление мобильного приложения
Вопрос
Как вы реализуете принудительное и мягкое обновление приложения?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Сервер или удалённый конфиг отдаёт минимальную и рекомендуемую версии
Клиент сравнивает версии покомпонентно, а не как строки
Ниже минимальной: блокирующий экран со ссылкой в App Store
Ниже рекомендуемой: ненавязчивое предложение обновиться
API держит обратную совместимость, принудительное обновление крайняя мера
Учесть офлайн и задержку ревью: минимальную версию поднимать после раскатки
Что могут спросить следом
- Почему нельзя сравнивать версии как строки?
- Что делать, если сломан сам экран обновления?
Разбор
Нужен источник правды на сервере: удалённый конфиг или эндпоинт отдаёт минимальную поддерживаемую версию и рекомендуемую. Клиент при старте и при возврате из фона сравнивает свою версию покомпонентно, потому что строковое сравнение решит, что 1.10 меньше 1.9. Если версия ниже минимальной, показываю блокирующий экран с кнопкой в App Store: это для случаев, когда старый клиент опасен, например сломан протокол или найдена уязвимость. Если ниже рекомендуемой, показываю мягкий баннер не чаще раза в несколько дней. Сам экран обновления держу максимально простым и без зависимостей. И помню, что принудительное обновление крайняя мера: лучше версионировать API и поддерживать старые клиенты, а минимальную версию поднимать, только когда новая раскатана на всех.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Термины по теме
Ещё по теме «Сборка и публикация в App Store»
- Удаление аккаунта и App Review
- Зачем нужен dSYM
- Entitlements и capabilities
- Частые причины отклонения на App Review
- Подпись iOS-приложения
- Оплата цифровых товаров в iOS-приложении
- Задача на Swift: сравнение версий для принудительного обновления
- Бинарный фреймворк и стабильность модуля