Обновить
64K+

iOS *

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

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

Настройка инструмента OWASP ZAP для перехвата интернет‑трафика

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

Всем привет, на связи Дима Котиков. Продолжаем рассматривать инструменты перехвата и подмены интернет-трафика при разработке. 

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

В этой статье разберем настройку сниффера для прослушивания интернет-трафика.

Читать далее

Новости

Swift на Android: путь к сингулярности. От анонса SwiftJava до полноценного приложения. Часть 2

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

Всем привет! С вами Анна Жаркова, руководитель практики мобильной разработки ГК Юзтех, автор книги «Kotlin Multiplatform на практике»

Продолжаем наш рассказ про Swift Android SDK и его возможности. В предыдущей части мы рассмотрели, как устроена данная технология под капотом.

Пришло время посмотреть на реальной практике, а заодно и обсудить Swift SDK для Android. Кстати, к весне 2026 выпустили уже стабильный официальный релиз, работающий с Swift, начиная с версии 6.3.

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

Какие сценарии и слои сейчас поддерживаются:

бизнес-логика;

модели данных;

сетевой слой и хранение;

архитектурные компоненты;

фоновая обработка.

Та же история, что с KMP года 3 назад, но с оговорками.

UI рекомендуется реализовывать нативно, отдельно на Android и iOS. Также парадигма «write once, run everywhere» сейчас не работает. Только shared logic без кроссплатформенного UI-слоя.

Попробуем реализовать на Swift SDK для Android простое приложение новостей newsapi.org.

Читать далее

YPtun — один клиент вместо десятка или как мы собрали кучу протоколов в одном месте

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

Xray, sing‑box, Hysteria2, AmneziaWG, TrustTunnel, TURN‑транспорт, MasterDNS, OpenFlux и snolc в одном приложении, с одним Go‑рантаймом на весь процесс. А ещё VLESS с Reality и XHTTP, VMess, Trojan, Shadowsocks, NaiveProxy и WireGuard, всё под Android, Windows, Linux и iOS. Внутри: почему два gomobile‑AAR роняют процесс, как bsdiff упёрся в 2 ГиБ, почему пинг в уведомлении всегда показывал ноль и как перенести данные на новый applicationId, чтобы ими не воспользовалось чужое приложение.

Читать далее

Паттерны проектирования. Порождающие

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

Тема довольно «заезженная», поэтому я буду часто ссылаться на другие статьи, где паттерны разбираются более подробно. Моя же цель другая — управлять поездом структурировать собранную информацию и написать примеры под углом разработки на Swift.

Читать далее

Как фронтенд‑команде сделать мобильное приложение без нативных разработчиков

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

Нативных разработчиков в команде нет, зато половина хорошо знает Vue, поэтому мобильное приложение для iOS и Android я как лид решил делать на Vue и Capacitor. Разбираю, что этот стек дал веб‑команде, какие сложности пришлось решить с нативным тулчейном, вырезом экрана и клавиатурой и когда Capacitor стоит брать.

Читать далее

Мы научили агента писать тесты так, как их пишет наша команда

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

Привет! Я Артем Житко, iOS разработчик в Т-Банке. Каждому iOS-разработчику знакома ситуация: задача уже готова, кажется, что самое сложное уже позади. Но затем наступает этап написания unit-тестов. Мы пробовали поручить это ChatLLM, но модель генерировала код, который не компилировался: придумывала несуществующие Mock-объекты, игнорировала архитектурные соглашения проекта и использовала не те тестовые утилиты.

Проблема оказалась не в модели, а в отсутствии контекста. Вместо очередного набора промптов мы создали систему правил на базе AGENTS.md и SKILL.md. Это превратило генерацию тестов из разового запроса в воспроизводимый инженерный процесс.

В статье расскажу, как мы организовали работу AI-агента, какие проблемы встретили и почему хорошие правила сегодня важнее выбора «самой умной» модели.

Читать далее

Мобильная разработка за неделю #649 (4 — 11 октября)

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

В новом выпуске ioS-приложение на 10 лет и правда о Coil в Jetpack Compose, физический аналоговый ввод на плоском экране в iOS и первый убыток JetBrains за 26 лет, «конце эпохи ручного программирования», почему нельзя слепо копировать Ozon, Amazon и Taobao, история Chess.com, ИИ-ревьюер на 4000 PR в день и многое другое. Заходите!

Читать далее

Кабардинский переводчик, часть 2: одна модель в обе стороны, корпус с Claude Code и шесть часов аренды GPU

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

Продолжение статьи «Как создать переводчик для низкоресурсного языка».

Год назад я рассказывал, как дообучил две модели MarianMT: одну для перевода с русского на кабардинский, другую обратно. Сейчас вместо двух моделей обучена одна, на 61 млн параметров, и она переводит в обе стороны. На FLORES-200 русско-кабардинский перевод вырос с 38.7 до 57.4 chrF, кабардинско-русский с 35.0 до 50.2. Для сравнения: в среднем по 30 «большим» языкам многоязычная SMaLL-100 даёт 47–48. Обучение заняло 6 часов на одной арендованной RTX 4090 и обошлось меньше чем в 10 долларов. Всё остальное делалось на Mac mini с Claude Code в терминале.

Обновление от 13 октября. Вышла вторая версия модели: в приложении FLORES-200 даёт 60.0 chrF для ru→kbd и 51.5 для kbd→ru (первая версия 57.4 и 50.2).

Читать далее

Откуда пришли установки iOS‑приложения без SDK атрибуции: спецстраницы App Store вместо UTM

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

Я делаю Кубыш, приложение для учета расходов и накоплений на iPhone: оно считает, сколько можно тратить в день до зарплаты и когда накопишь на цель. Пишу о нем на Дзене, vc.ru, в LinkedIn и соцсетях - подписывайтесь пожалуйста. После каждой публикации хотелось понять одно: что из этого приводит людей в App Store.

На сайте эту задачу решает UTM-метка. В App Store так не получится: параметры ссылки до приложения не доходят. SDK атрибуции для маленького приложения избыточен: еще одна зависимость и передача данных третьей стороне. Поэтому я посчитал источники стандартными средствами Apple. Ниже как это настроить и на чем я обжегся.

Читать далее

Физический аналоговый ввод на плоском экране в iOS игре

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

«Мясная педаль: как я превратил большой палец в псевдо‑Force Touch на iPhone»

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

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

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

Читать далее

Одна аналитика на две платформы: как мы синхронизировали iOS и Android в hh.ru

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

Всем привет! Меня зовут Максимкин Андрей, я iOS-разработчик в hh.ru. В далеком 2023 году мы уже рассказывали про нашу мобильную аналитику в этой статье. С тех пор много воды утекло, а вместе с ней поменялся и наш флоу работы с аналитикой. И начну я как раз с того, что нас к этому подтолкнуло. 

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

Статья будет полезна разработчикам, аналитиками и вообще всем, кто так или иначе вовлечён в создание мобильных и веб-приложений.

Читать далее

Rich Push Notifications в iOS: Notification Service Extension, Notification Content Extension и неочевидные детали

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

Rich Push Notifications в iOS выглядят просто, пока дело не доходит до Notification Service Extension и Notification Content Extension. Где должна находиться category? Зачем нужен mutable-content? Как передать изображения между расширениями, использовать один Content Extension для нескольких категорий и отладить всё это в Xcode?

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

Читать далее

Как разобрать macOS на части

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

Всем привет! Меня зовут Игорь Белов, я инженер в команде Мобильной Архитектуры Авито. Больше 6 лет занимаюсь iOS-разработкой, а ещё мне нравится изучать фундаментальные темы Computer Science и разбираться, как те или иные вещи работают под капотом.

В статье я расскажу, как исследовать произвольные приложения macOS с помощью отладчика LLDB и сопутствующих инструментов, и тем самым прокачать свой повседневный инструментарий разработчика. Сначала исследуем произвольно запущенные процессы в macOS с помощью LLDB. Затем на основе собранных знаний сделаем инъекцию своего кода, чтобы изменить их поведение. Ещё немного затронем теорию, подготовим и настроим окружение. В конце я посоветую, что почитать, чтобы углубиться в тему.

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

На создание этого материала меня вдохновило выступление Дерека Селандера — ему уже около десяти лет, но оно всё ещё актуально. Мне захотелось взять идею оттуда в более прикладном виде и спроецировать на современную повседневную разработку.

Читать далее

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

Мобильная разработка за неделю #648 (28 сентября — 4 октября)

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

В этом дайджесте применение gRPC в iOS и A2UI в Jetpack Compose, добавление новых сценариев в существующее Android-приложение без технического долга и офлайн-карта в кармане, отчет The State of Kotlin 2026, первое «убойное» приложение для iPhone Duo, нейросеть для игры в «Точки» и многое другое. Заходите!

Читать далее

Хочу выложить приложения в AppStore и вообще в магазины на всех платформах. Практический кейс

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

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

Читать далее

zhim.fit: приложение для персонального тренера без подписок и регистрации

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

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

Читать далее

Как анимировать матрицу на Swift UIKit

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

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

Читать далее

0.0000008 Мбит/с при оценке A+: как тихий 403 от Cloudflare сломал половину теста bufferbloat

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

Фаза загрузки в моём тесте bufferbloat не нагружала линию: speed.cloudflare.com отвечал на запрос гигабайта кодом 403 и одним байтом, а код этого не замечал. Как это исказило вердикты, как ошибка всплыла при скорости 0.0000008 Мбит/с и почему генератор нагрузки обязан измерять собственную нагрузку.

Читать далее

Применение gRPC при разработке приложений под iOS

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

Всем привет! При широком распространении REST подхода для клиент-серверного взаимодействия всегда существовали и существуют альтернативные решения, иногда незаслуженно обделенные вниманием. Об одном из них речь пойдет в сегодняшней статье. В ней будут даны некоторые теоретические основы, необходимые для работы и создан небольшой проект, который можно использовать для перехода на gRPC.

Читать далее

Мобильная разработка за неделю #647 (21 — 27 сентября)

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

В новом выпуске почему игры лагают и как я всё‑таки опубликовать игру в Google Play из России, iPhone Duo для iOS-разработчика и кросс-компиляция под Android, Flutter Web с WebAssembly Week, ИИ-агент для мобильного тестирования в hh.ru, биологическая лаборатория Anthropic, новые премиальные Googlebook на Android и многое другое. Заходите!

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