Обновить
37.1

iOS *

Мобильная ОС компании Apple

Сначала показывать
Порог рейтинга
Уровень сложности

Snapshot-тесты для дизайн-системы hh.ru

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров387

Привет! Меня зовут Андрей Максимкин. Я iOS-разработчик в hh.ru. В своих статьях (тут, тут и не только) мы уже не раз говорили о большой любви к тестам и их важной роли в нашем процессе разработки. В этой статье хочу поделиться опытом использования snapshot-тестов, начиная с этапа внедрения. Статья будет полезна для QA и iOS-разработчиков разных уровней. Обсудим не только теорию, но и напишем реальный snapshot-тест — как в нашей практике.

Вместо вступления

Сначала расскажем про snapshot-тесты и для чего они нужны. Snapshot тесты — это метод тестирования, который используется для защиты внешнего вида компонентов и интерфейсов от незапланированных изменений. Они позволяют зафиксировать эталонное состояние компонента и в дальнейшем использовать как образец. Это помогает выявлять изменения в пользовательском интерфейсе, которые могут возникнуть в результате обновлений кода.

В hh.ru мы активно разрабатываем нашу собственную дизайн-систему (ДС). Дело в том, что компоненты ДС могут иметь широкий набор свойств: цвета, размеры, скругления. Проверять корректность, например, цветов обычным ручным тестировщикам на длинной дистанции невозможно, поэтому возникла потребность автоматизировать проверки. Кроме того, при рефакторинге кода некоторые компоненты могут сломаться — хотелось бы находить такие проблемы сразу. Snapshot-тесты показались лучшим решением этих проблем.

Когда-то давно в hh.ru уже были snapshot-тесты. На тот момент они были написаны на экраны приложения. Эти экраны часто меняли свой дизайн, тесты вели себя нестабильно и падали, поэтому их приходилось переписывать. В итоге от snapshot-тестов отказались. Так что в своей новой попытке внедрения snapshot-тестов решили не писать тесты для экранов, а только для ДС. 

Читать далее

Новости

Публикация PWA в App Store и Play Store на github actions

Время на прочтение3 мин
Количество просмотров2K

Понадобилось мне как-то раз сделать из PWA мобильные приложения. Приключение на 20 минут, зашли и вышли - подумал я и пропал на пару месяцев. В статье будет гремучая смесь из Java, C#, NodeJS, Swift, bash, Dockerfile и github actions. Но в результате возможность непрерывно поставлять свежие сборки в магазины приложений.

Погружаемся

Mobile System Design

Уровень сложностиСложный
Время на прочтение17 мин
Количество просмотров2.9K

Mobile System Design — один из ключевых навыков мобильного инженера.

Именно он часто определяет уровень зрелости: в реальной работе, на собеседованиях и в матрицах компетенций компаний.

Но вокруг этой темы полно разночтений и разных трактовок — отсюда споры, путаница и хаос.

В этой статье я систематизирую Mobile System Design как дисциплину: покажу, какие навыки действительно важны и как они проверяются. Это не личное мнение, а выжимка из опыта инженеров, требований собеседований, литературы и практики команд.

Читать далее

Маленькая RAM vs новые фичи: как мы повышаем детализацию Карт и сохраняем стабильность

Время на прочтение11 мин
Количество просмотров2.6K

Яндекс Карты — это не просто приложение для навигации, а один из самых высоконагруженных мобильных сервисов с широкой аудиторией. В центре всех наших сценариев — сама карта, которая уже сегодня не уступает по сложности отдельным игровым движкам. Мы постоянно работаем над тем, чтобы сделать её более удобной для ориентирования, и постепенно идём к высокодетализированным и реалистичным картам будущего: добавляем трёхмерные здания, разметку на дорогах, детализированные развязки и другие городские объекты. 

Но чем богаче визуальное и информационное наполнение, тем выше требования к устройствам, на которых работает приложение. Улучшая пользовательский опыт с помощью новых технологий и более детальной картографии, мы сталкиваемся с постоянным ростом потребления ресурсов — прежде всего оперативной памяти (RAM). Наша задача — находить баланс между развитием продукта и сохранением его стабильной и быстрой работы на разных устройствах, включая самые бюджетные модели. 

Меня зовут Игорь Зверев, я руководитель группы разработки автонавигации в Яндекс Картах. Сегодня я расскажу, как мы подошли к решению этой задачи: что изменили в процессе разработки, как создали и используем систему RAM‑классов для выпуска требовательных функций и какие технические выводы сделали на этом пути.

Читать далее

Топ 7 антидетект-браузеров для iOS: анализ и сравнение 2025

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров1.8K

Всем привет. Недавно понадобился мобильный браузер для работы на iOS и пока искал сделал сравнительный анализ. В статье выделены критерии оценивания, проанализированы преимущества и недостатки каждого из решений, рассказывается об интересном функционале.

Читать далее

Мобильная разработка за неделю #608 (20 — 26 октября)

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров3.1K

В новом выпуске 7 способов найти логи и поймать баг на iOS, разбираем «Telega» по винтикам и делаем эффект глюка, очки на Android XR, что ждёт Kotlin Multiplatform разработчика на собесе, реверс обфускации Amazon Kindle Web, удаление Tea и TeaOnHer из App Store и многое другое. Заходите!

Читать далее

За 3 дня запустить Android приложение на iOS: опыт адаптации приложения под CMP

Уровень сложностиСредний
Время на прочтение19 мин
Количество просмотров3.2K

Привет! Я Тимур, разработчик мобильных приложений в KTS.

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

Задача осложнялась тем, что заказчик рассматривал не только нашу команду на роль подрядчика. Мы не могли отдать сырой черновик, в котором просто нажимаются нужные кнопки и работают ключевые сценарии — мы должны были превзойти конкурентов-флаттеристов. И нам удалось это сделать с помощью KMP.

Да, тема довольно холиварная, и в статье я не заявляю, что KMP лучше Flutter’а во всем. Каждая технология хороша под свои задачи. Вместо этого я расскажу о конкретном проекте, на котором KMP оказался более удачным выбором. Также коснусь вопросов архитектуры и миграции Android-приложения на iOS с помощью CMP, а заодно подсвечу подводные камни, с которыми пришлось разбираться в процессе.

Читать далее

Наш опыт публикации мобильных приложений. Часть 1: AppStore и Google Play

Уровень сложностиПростой
Время на прочтение16 мин
Количество просмотров2.7K

N месяцев — столько ушло на то, чтобы ваше приложение стало тем, каким вы хотели его видеть. И вот оно – готово. Пора показать миру!

Но перед тем как приложение попадёт в руки пользователей, его должны одобрить строгие модераторы App Store и Google Play. И вот тут начинается самое интересное. За последние годы требования стали такими, что даже опытные разработчики получают реджекты по полной программе. 

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

Читать далее

Из мобильной разработки в бэкенд. История и впечатления

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров8.3K

Самый простой и логичный способ сменить стек — поменять направление внутри компании. Мог так сделать дважды, но тогда бы и писать было не о чем. Буду рад, если кому-то мой опыт окажется полезным или интересным.

Зачем менять стек?

В 2019 году, работая над android-приложением Auto.ru, я часто думал, что надо что-то менять в карьере. Вот несколько тезисов:

- Стать CTO в будущем будет проще с опытом в бекенде...

Погрузиться в историю

Твоё приложение никто не видит — ASO может это исправить

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров663

Если у вашего приложения 2–3 установки в день и кажется, что «ниша не та» — скорее всего, дело не в нише, а в том, что про вас просто никто не знает. В этой статье коротко и по делу расскажу о том, что такое ASO (App Store Optimization) и почему без него ваше даже классное приложение никто не найдёт.

Разбираемся, зачем оно нужно инди‑разработчикам, как это работает и с чего вообще начать — без формул, понятий и лишней воды. На пальцах.

Читать далее

Combine – швейцарский нож iOS-разработчика. Или нет?

Время на прочтение11 мин
Количество просмотров1.6K

Привет! Меня зовут Антон, я iOS-разработчик в Банки.ру. Когда я только начинал изучать Combine, он казался для меня магией. Пара команд – и вот у тебя уже есть какие-то данные. Чтобы Combine перестал оставаться черным ящиком давайте заглянем внутрь. Эта статья – мое виденье этого фреймворка.

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

Давайте рассмотрим Combine изнутри!

Читать далее

Сам себе Шерлок: 7 способов найти логи и поймать баг на iOS

Уровень сложностиСредний
Время на прочтение20 мин
Количество просмотров1.6K

Привет, Хабр! Меня зовут Максим, и я тестирую мобильные приложения. Знакома ситуация, когда кнопка не работает, приложение виснет, анимации тормозят, но при этом нет никаких ошибок на экране?
Можно часами играть в детектива, гадая по UI и строя догадки, что пошло не так. А можно за несколько минут найти настоящего преступника — ведь iOS щедро оставляет улики в виде логов. Нужно лишь знать, где их искать. Секрет — в грамотном выборе способа, как собрать доказательства. Но обо всём по порядку.

Начать расследование

Мобильная разработка за неделю #607 (13 — 19 октября)

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров2.5K

В новом дайджесте трещины в Liquid Glass и опыт собеседования в Microsoft, шутки и веселье в Android и запрет программистам писать код, взлом на собеседовании, Supercell против ЕС, интеграция Predictive back и многое другое. Заходите!

Читать далее

Ближайшие события

Трещины в Liquid Glass

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров14K

Похоже, что в iOS 26 Apple начала ещё больше склоняться к визуальному дизайну и декоративным эффектам UI; но насколько плохо это скажется на юзабилити? На первый взгляд, система выглядит удобной и современной, но как только начинаешь ею пользоваться, мерцающие поверхности и анимированные элементы управления становятся помехой. Давайте сотрём глянец и посмотрим, как эти изменения влияют на реальный опыт пользования.

Читать далее

Bricks: от идеи до UI за 60 секунд

Уровень сложностиСредний
Время на прочтение19 мин
Количество просмотров5.2K

Привет! Я — Дмитрий Гусев, Frontend-разработчик в команде Bricks в кластере Core Services в Авито, в статье подробно рассказываю, как и зачем мы внедрили механизм предварительного просмотра проектируемого интерфейса в реальном времени прямо в админку Bricks: зачем это понадобилось, как всё устроено под капотом и с какими неожиданностями столкнулись по пути.

Предварительно просмотреть!

Мобильная разработка за неделю #606 (6 — 12 октября)

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров1.6K

В этом выпуске отрисовка SF Symbols в SwiftUI и краши Android-приложений, неблокирующие заставки и история о переезде на React Native, физический продукт, вместо очередного SaaS, запрет бесплатных раздач приложений от Apple, Топ-10 лучших бесплатных нейросетей и многое другое. Заходите!

Читать далее

Vivaldi 7.6 для мобильных устройств — Всё в ваших руках

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров1.5K

Современный смартфон - удивительная вещь. Фактически у нас на ладони оказывается мощный инструмент, позволяющий решать массу повседневных задач, поэтому мы почти не выпускаем его из рук. И очень важно, чтобы браузер, используемый в телефоне, обладал способностью адаптироваться под привычки и запросы своего пользователя. Встречайте Vivaldi 7.6 для iOS и Android - с новыми удобными функциями, повышающими комфорт и скорость работы в сети.

Читать далее

Kick для QA-инженеров

Уровень сложностиСредний
Время на прочтение15 мин
Количество просмотров547

Kick (Kotlin Inspection & Control Kit) – это кроссплатформенный модульный набор инструментов отладки, встроенный прямо в приложение. Он позволяет отображать нужные переменные в плавающем окне, инспектировать логи, сетевой трафик, базы данных SQLite/Room, файловую систему и т.д. Kick фактически заменяет множество разрозненных утилит единым решением: больше не нужно переключаться между разными программами или консолью – все необходимые средства собраны в одном интерфейсе. Это снижает сложность диагностики: тестировщик получает полный обзор состояния приложения на Android, iOS и Desktop из одного окна.

Читать далее

Мобильная разработка за неделю #605 (29 сентября — 5 октября)

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров1.4K

В новом дайджесте OCR-сервер на iPhone и разработчики против регистрации Google, скрытые угрозы Room и golden-тесты во Flutter, Kotlett и динамические обновления без релизов и BDUI, мобильный интерфейс без человека, приложения, вышедшие в августе, и заработавшие больше $50К и многое другое. Заходите!

Читать далее

Swift Codable

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров643

Привет, Хабр!

На этой неделе мы поговорим ещё об одном встроенном типе Swift - Codable. Думаю, все, кто писал клиент-серверные приложения, сталкивались с этим протоколом: он позволяет преобразовывать наши структуры в бинарные данные и обратно. Однако, полагаю, немногие задумывались, как этот привычный механизм работает под капотом. Сегодня я постараюсь рассказать об этом.

Читать далее
1
23 ...