Хочется добавить про практический кейс: SPM создает по умолчанию статические библиотеки (т.е. копируются в апку), но если создать какой-нибудь экстеншен (например, Live Activities) и подключить туда либу, то либа скопируется в оба бинарника. Все как в схемах из статьи, но вот такая реальность со вторым экзекьютебл-файлом.
Emerge в Твиттере постоянного натыкается на такое разбирая структуру приложений
Сначала поделюсь исторической картиной: такой же вопрос был после презентации телефона с сенсорным экраном. Зачем он незрячему, если он может звонить по обычному телефону, а вот этот новый специально сделан с упором на графику. Довольно быстро оказалось (в iOS 3, вроде бы), что можно дать альтернативное управления и незрячие смогут делать что и остальные люди: не только звонить, но и заказывать еду, общаться, читать новости и т.п. С очками их ролью в жизни сейчас похожий момент: мы не знаем во что это превратится.
Теперь пофантазирую конкретно. Что будут люди делать в очках? Да тоже самое, что сейчас делают: если я программирую, то с покупкой очков я не поменяю сферу работы на 3д-моделирование. Зато в очках можно открыть несколько приложений, переключаться между ними поворотом головы, вводить текст просто диктуя его и смотреть всякие иммерсивные фильмы с клевым звуком. Вот и незрячие смогут делать ровно это же: использовать привычные программы, но с другим управлением, где-то более удобным.
Плюс всякие новые приложеньки появятся, разных идей будет много. Пример прямо в тексте есть: камеры очков могут сканировать все вокруг и рассказывать что видят. Или отвечать на вопросы о том, что прямо сейчас перед человеком.
Во всем взаимодействии не хватает вибрации: на виртуальной клавиатуре неудобно набирать, потому что кнопок не чувствуешь, а полагаться только на визуал странно. Наверно кто-нибудь попробует хотя бы на одной руке хаптиком через часы отзываться.
Многие реабилитационные устройства стоят дороже (из-за малых тиражей), но дают меньший функционал. Поэтому тут сложно измерять обычной линейкой, очки могут оказаться дешевым девайсом даже за 3500.
Основная причина — мы не храним данные карт у себя, пользуемся токеном который выдает экваер после оплаты картой. Поэтому этот процесс сильно привязан к заказу. Может быть когда-нибудь переделаем, думаем об этом.
Пользуясь случаем: расскажите почему хочется привязать ее в настройках и чем неудобно при заказе вводить?
Пользоваться техникой тем контроллером, который подходит именно вам — вполне себе часть доступности. На айфоне буквально этим занимается Switch Control.
Спасибо за комментарий, после него я придумал снять видео как управлять айфоном с геймпада :D
После всех трансформаций я бы проверял правильно ли работает скринридер.
Например, для чатов было популярно вертикально переворачивать таблицу, а потом переворачивать все ячейки. Визуально проблем нет, но для скринридера все ломалось.
Спасибо за статью, хорошо получилось!
Хочется добавить про практический кейс: SPM создает по умолчанию статические библиотеки (т.е. копируются в апку), но если создать какой-нибудь экстеншен (например, Live Activities) и подключить туда либу, то либа скопируется в оба бинарника. Все как в схемах из статьи, но вот такая реальность со вторым экзекьютебл-файлом.
Emerge в Твиттере постоянного натыкается на такое разбирая структуру приложений
К ним обновления не придут, но приложение продолжит работать
Кек, спасибо. Заменил.
Для истории:
Скрытый текст
Клевая статья, спасибо! Очень понравился с примером юнит-тестирования доступности, я не понимаю почему cashapp не хотят добавить его прямо в либу.
Для карусели у нас тоже написано очень похожий код, можно обобщить и в библиотеку вынести
Не планируете переходить от YAML к PKL?
Отличный вопрос!
Сначала поделюсь исторической картиной: такой же вопрос был после презентации телефона с сенсорным экраном. Зачем он незрячему, если он может звонить по обычному телефону, а вот этот новый специально сделан с упором на графику. Довольно быстро оказалось (в iOS 3, вроде бы), что можно дать альтернативное управления и незрячие смогут делать что и остальные люди: не только звонить, но и заказывать еду, общаться, читать новости и т.п. С очками их ролью в жизни сейчас похожий момент: мы не знаем во что это превратится.
Теперь пофантазирую конкретно. Что будут люди делать в очках? Да тоже самое, что сейчас делают: если я программирую, то с покупкой очков я не поменяю сферу работы на 3д-моделирование. Зато в очках можно открыть несколько приложений, переключаться между ними поворотом головы, вводить текст просто диктуя его и смотреть всякие иммерсивные фильмы с клевым звуком. Вот и незрячие смогут делать ровно это же: использовать привычные программы, но с другим управлением, где-то более удобным.
Плюс всякие новые приложеньки появятся, разных идей будет много. Пример прямо в тексте есть: камеры очков могут сканировать все вокруг и рассказывать что видят. Или отвечать на вопросы о том, что прямо сейчас перед человеком.
Во всем взаимодействии не хватает вибрации: на виртуальной клавиатуре неудобно набирать, потому что кнопок не чувствуешь, а полагаться только на визуал странно. Наверно кто-нибудь попробует хотя бы на одной руке хаптиком через часы отзываться.
Многие реабилитационные устройства стоят дороже (из-за малых тиражей), но дают меньший функционал. Поэтому тут сложно измерять обычной линейкой, очки могут оказаться дешевым девайсом даже за 3500.
Доступность у контрола потерялась.
Надо в accessibilityValue кнопки подписывать какая она по порядку, чтобы получилось «First, 1 из 3, кнопка», «Second, 2 из 3, кнопка».
Как проверить
Спасибо за сценарий
Основная причина — мы не храним данные карт у себя, пользуемся токеном который выдает экваер после оплаты картой. Поэтому этот процесс сильно привязан к заказу. Может быть когда-нибудь переделаем, думаем об этом.
Пользуясь случаем: расскажите почему хочется привязать ее в настройках и чем неудобно при заказе вводить?
Пользоваться техникой тем контроллером, который подходит именно вам — вполне себе часть доступности. На айфоне буквально этим занимается Switch Control.
Спасибо за комментарий, после него я придумал снять видео как управлять айфоном с геймпада :D
Я полистал доклад, до 11 минуты вроде база, а потом про модули, зависимости и тесты все. Норм на двойной скорости смотрится
Сделаю шаг назад: тесты это код который надо поддерживать. Примеров много:
в свифте появился async/await, код переходит на него. Функционально ничего не меняется, но синтаксис вызова другой, приходиться менять.
Добавили фичу и синтаксис старой поменялся, чтобы лучше описывать абстракцию.
Мигрировали одну сетевую либу на другую: обновляем места интеграции.
Решили отказаться от спецификаций из-за скорости компиляции? Переписываем на XCTest.
Ну и т.д
Да, тесты можно написать так, чтобы это все было абстрагировано. Написаны ли они так фактически? А те тесты, которые 3 года назад написали? Скорее нет
Рефакторинг это изменение кода без изменения поведения. Поэтому тесты отлично рефакторятся :-)
Вторую статью чет все еще пишу, но есть видео-доклад который отчасти про это.
Я про них в статье немного писал, там есть пример теста и скриншотов
Вы говорите про стандартные UI-тесты, а статья про ссылка на скриншот-тестирование через вот эту либу. Работает так:
пишешь юнит-тест в котором создаешь вьюшку и заполняешь ее данными
вызываешь асерт специальный который ее отрендерит
сохранит этот скрншот в репозиторий
при следующем прогоне сгенерит новый скриншот и сравнит с прошлым прогоном.
Скриншотим мы лишь ячейки и контролы, поэтому файлы получаются маленькие, а скорость у них достаточная чтобы гонять их как юнит-тесты
После всех трансформаций я бы проверял правильно ли работает скринридер.
Например, для чатов было популярно вертикально переворачивать таблицу, а потом переворачивать все ячейки. Визуально проблем нет, но для скринридера все ломалось.
А у нас и статья про это есть!
Да просто набирать приятней. Разницу сложно объяснить, потому что это про ощущения