Обновить
46.42

iOS *

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

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

Proxyman + HAR = mock-данные для iOS-тестов

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

Привет! Меня зовут Ринат, я iOS-разработчик в Naumen. В компании я занимаюсь разработкой нескольких iOS-продуктов: клиента для SMP-сервера (Service Management Platform) и SDK чата.

В этой статье расскажу, как мы используем связку Proxyman + HAR, чтобы готовить mock-данные сетевых запросов для интеграционных UI-тестов одного из iOS-приложений. Такой подход выручает, когда для тестов нет возможности поднять сервер с нужным наполнением или сервер не предоставляет дополнительных методов API для имитации определенного сценария — например, переписка в чате с собеседником, обновление статуса заказа.

Читать далее

Новости

Почему ваш сайт ломается, когда его трогают пальцем

Уровень сложностиПростой
Время на прочтение17 мин
Охват и читатели11K

В жизни каждого фронтендера наступает момент, когда приходится перейти от родного привычного десктопа на разработку мобильной версии веб-приложения или даже начать работать над mobile-first решением, или еще страшнее — PWA-приложением.

И вот вы, фронтенд-разработчик, сидите с открытыми DevTools десктопного браузера, используете симуляцию мобильного устройства, и локально все идеально. А тестировщики все несут и несут баги. Верстка убегает, само веб-приложение тормозит, часть UI просто не достать пальцем, да и в целом жесты работают так, как им захочется.

Привет! На связи Полина, фронтенд-разработчик в Selectel. Раньше я тоже думала, что адаптив в десктопном браузере абсолютно такой же, как на телефонах. Да и вообще мобильный браузер — это просто браузер поменьше (спойлер — нет). В этой статье я расскажу об их различиях, что с этим делать, как прокинуть localhost на реальный телефон и получить DevTools от браузера в смартфоне, чтобы ловить поменьше багов на проде.

Читать далее

К какому компоненту отнести тот или иной класс? Мой опыт разделения функциональности между компонентами

Время на прочтение13 мин
Охват и читатели4.1K

Привет, меня зовут Антон Огнев, я iOS-разработчик в ПСБ, и в этой статье расскажу о классах, компонентах и зависимостях между ними. Конкретно речь пойдет о том, какие принципы стоит всегда соблюдать при создании и поддержке компонентов, как определить, не рушит ли одна новая зависимость весь проект, как меняются приоритеты по компонентам между стартом новой разработки и зрелым продуктом. 

Большая часть теории основывается на книге «Чистая архитектура» Роберта Мартина. Я эту книгу читал несколько раз и каждый раз открывал для себя что-то новое, набирался опыта и на многие вещи начинал смотреть иначе. Между пояснением принципов буду делиться историями из собственных компонентных приключений в качестве примеров. 

Заглянули к себе в компоненты и обнаружили, что там бардак и обобщенные имена типа Cоmmon, Shared, Core, Base, Utils? Это текст для вас: сам был на вашем месте, помогу навести порядок. 

Читать далее

Xcode — худшее профессиональное ПО, с которым я когда-либо работал

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

Xcode ужасен, и об этом много кто говорит. Постоянные ошибки, баги интерфейса, неочевидное поведение и местами плохая документация — всё это мешает спокойно писать код. Вместо работы над проектом приходится искать решения проблем и пытаться починить то, что должно работать из коробки. Ещё одна неприятность на этом пути заключается в том, что Apple не всегда публично рассказывает о багах в Xcode, поэтому надо ещё догадаться, что именно не работает.

В этой статье автор делится ошибками и «особенностями» Xcode, которые больше всего его раздражают. Главный совет: держитесь подальше от этой IDE и всегда ищите альтернативы.

Читать далее

Мобильная разработка за неделю #611 (17 — 23 ноября)

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

В новом дайджесте вопрос с собеседования, на котором сыпятся даже Senior-ы, стабильный Navigation 3 и нестабильная ViewModel, кросс-компиляция, 100 уроков развития проекта, открывашка из трубки домофона и многое другое. Заходите!

Читать далее

Vibe coding на SwiftUI + Qwen. Как c помощью ИИ сделать простое TODO-приложение на SwiftUI

Время на прочтение8 мин
Охват и читатели6.8K

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

Читать далее

Меня снова спросили за Optional

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

Несмотря на то, что использование Optional самая настоящая рутина для любого iOS-разработчика, в тонкости реализации этого механизма мы погружаемся только при первом знакомстве с языком. Предлагаю чуть углубиться, чтобы уверенно говорить на эту тему с коллегой или интервьюером.

Читать далее

Мобильный Vivaldi 7.7 — Найти и сохранить

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

Пользователи всегда хотят большего, и количество самых разных запросов постоянно растёт. Но есть некоторые функции, которые пользуются особой популярностью. Вот такие запросы мы и реализовали в новой версии браузера Vivaldi 7.7 для Android.

Читать далее

Выживание в ASO: зачем нужен якорь, семантическое ядро и ASA

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

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

В качестве примера мобильного приложения для предметного рассмотрения темы, предлагаю представить, что мы делаем простенькое приложение для трекинга собственного веса - минималистичное, с графиками, возможностью записывать цифры веса и, возможно, уведомлениями. В общем, такое, чтобы была мотивация делать, можно было бы "завайбкодить", но без претензий на миллиардерство. Идея привычная, но как её оценить с точки зрения потенциала в App Store? Будут ли его скачивать и сможем ли мы заработать? Давайте посмотрим.

Читать далее

Мобильная разработка за неделю #610 (10 — 16 ноября)

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

В этом выпуске Optional в Swift, которые всех сбивают с толку, актуальные практики работы в фоне и стартапы в Дубае, ИИ простыми словами, партнерская программа для мини-приложений в App Store, смягчение ограничений на загрузку сторонних приложений в Android и многое другое. Заходите!

Читать далее

SwiftUI-Adapter: поддерживаем новые модификаторы SwiftUI на старых версиях iOS

Уровень сложностиПростой
Время на прочтение1 мин
Охват и читатели6.5K

Друзья, привет! Сегодня хочу представить вам свою библиотеку - SwiftUI-Adapter, которая избавит вас от головной боли при работе с новыми модификаторами SwiftUI.


Недавно я наткнулся на удобную Android-библиотеку, которая упрощает работу с разными версиями API и подумал: «Почему бы не сделать что-то подобное для SwiftUI?». После этого родилась идея разработать инструмент, который избавит вас от бесконечных проверок available и сделает код чище.

Ссылка на библиотеку в GitHub

Установка библиотеки выполняется через Swift Package Manager.

Читать далее

Куда подевалось легендарное внимание Apple к деталям?

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели32K

Для меня бренд Apple всегда был синонимом внимания к деталям, но, к сожалению, в последние 8-10 лет решения компании на них совершенно не ориентированы.

В этом году всё настолько усугубилось, что она, похоже, совершенно перестала заботиться об UX, accessibility и подробным тестам QA. 

Лучше один раз увидеть, чем сто раз услышать, поэтому я покажу вам несколько примеров, разочаровавших меня и в конечном итоге заставивших отказаться от некоторых продуктов Apple.

Читать далее

Мобильная разработка за неделю #609 (3 — 9 ноября)

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

В новом дайджесте самый задаваемый вопрос с собеседования и приватный Android без слежки, новые инструменты в Google Play и App Store, своя мобильная ОС с нуля на Rust, магия ИИ-музыки, концентрированный маркетинг и многое другое. Подключайтесь!

Читать далее

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

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

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели5.4K

Привет! Меня зовут Андрей Максимкин. Я 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 мин
Охват и читатели8.8K

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

Погружаемся

Mobile System Design

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

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

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

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

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

Читать далее

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

Время на прочтение11 мин
Охват и читатели9.1K

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

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

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

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