Comments 21
UPD: комментарий ниже несколько проясняет суть проблемы.
В Android'е для этого есть AppCompat, а в iOS'е такого нету.
Но разве iOS 14 не обратно совместима с iOS 13? — старые приложения на ней перестают работать?всякие неприятные баги могут вылазить. У меня например одна приложуха отказывается показывать строку состояния, хотя какой-то приуроченный к ios14 багфикс они уже выпустили
Ещё добавился новый способ ввода текста — свайп (забыл как он в самом айосе называется, в других мобилах и в кастомных клавиатурах чаще это название встречал). Так я в рабочем приложении огрёб веселья в обработке текстовых полей, а если б я этого не сделал, веселились бы пользователи.
А насчёт «перестаёт работать» — и такое встречается. У меня например одна игрулька отвалилась — «Необходимо обновить %appname%. Это приложение должно быть обновлено разработчиком для работы под управлением этой версии iOS» (и два варианта- оставить и удалить). Но, подозреваю, её не обновляли уже очень давно.
Ну не запустилась игрушка на новой версии iOS, ну бывает.
Где большой список проблемных приложений? У меня лично все работает (как у пользователя).
Да нет, вчера пришло ~10 обновлений программ с текстом "Встречайте версию под iOS 14", хотя я сижу на 13-ой. Народ раздул с мухи слона, потому что не дали 10 дней на подготовку, как в предыдущие релизы.
Серьезные дефекты и так за 10 дней никто не починит и не оттестирует, а бета программа длилась достаточно долго
Нет. Большинство компаний поддерживает несколько версий iOS. Допустим, конкретно мы увеличиваем deployment target, только если в более новой версии есть что-то, что нам действительно нужно. Разумеется, меньшая фрагментация действительно позволяет покрыть 90+% пользователей поддержкой только пары версий iOS, что многие делают. А некоторым нужны самые последние фишки, и без них приложение не будет работать. Но в целом ничто не заставляет вас отключать поддержку старых версий.
Xcode 12 (который вчера вышел) позволяет собирать приложения для iOS начиная с iOS 9.
Как правило, просто в новой версии есть более оптимальный способ сделать что-то, благодаря новым API. Но если старый код работает, нет большого смысла в немедленном переписывании – вы только потеряете пользователей старых устройств. Ну и без этого можно жить.
Конечно, бывают ситуации, когда старый API вдруг стал работать не так в новой версии, и нужны специальные обработчики, но это не так часто и, как правило, это всего какие-нибудь несколько строк, отличающихся от версии к версии. Нет нужды отключать поддержку ради этого.
Последняя ситуация, которую я могу придумать – старые API пропали в новой версии совсем. Тут может теоретически понадобиться много переписывать, но, честно, я сходу не припомню у Apple ни одного API, которое бы пропало. Обычно API объявляют deprecated, но оно так и остаётся в системе на годы. Наверное, что-то и убирали, но были годы, чтобы к этому подготовиться.
Я веду к тому, что, как правило, если вы не хотите немедленно переписать всё на новых API, поддержка старой версии стоит очень мало и в плане времени, и в плане сложности кода.
API, которое бы пропало
Было. То за которое на них Касперский в суд подал. По сути это было как раз изменение, после которого не то что функция по другому вызывается, а вообще её больше нет.
Тот же `UIAlertView` как работал, так и работает, хотя его объявили deprecated ещё в iOS 8.
Да. То что редко, я согласен.
С Касперским (и не только с ними, но вроде только Касперский в итоге пошел в суд) они закрыли функции, через которые был родительский контроль организован. Там много приложений пострадало. Они на замену им встроили в систему свой аналог (экранное время или как оно там)
Тут две проблемы. Первая – не совсем проблема Apple: многие разработчики привыкли тестировать на GM, потому что от GM до релиза всегда было время. Их можно понять, но лучше бы они начинали тестировать пораньше, на то беты и выкладывают.
Но даже если вы – ответственный и дальновидный разработчик, который заранее заготовил обновление под новую версию iOS, проблема в том, что его можно опубликовать только с новой версией Xcode. И бета-версии запрещены. Обычно можно опубликовать обновление с GM-версии, что даёт разработчикам (и Apple) неделю на то, чтобы пройти ревью до выхода новой версии iOS. Таким образом, из-за действий Apple, все разработчики вынуждены опубликовать свои обновления за 1 день. А ведь ревью! Для всех разом! Сколько оно займёт? То есть, если у вас есть ломающий приложение баг в iOS 14, который можно исправить только средствами iOS 14 (новый API, к примеру), То ваши пользователи минимум пару-тройку дней не смогут пользоваться вашим приложением, и вы ничего не можете со своей стороны с этим сделать.
Но и это ещё не всё! Обычно можно публиковать обновления приложений с помощью GM-версии Xcode. Но в этот раз несколько разработчиков, как минимум, столкнулись с тем, что нельзя. Ждите релиза. А GM версию вначале выложили с одним номером билда, потом с другим, но тем же контентом, а потом с другим номером билда и другим контентом. И всё это за сутки.
Разработчики приложений недовольны действиями Apple: iOS 14 вышла с предупреждением всего за сутки до релиза