Обновить
64K+

iOS *

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

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

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

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

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

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

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

Читать далее

Новости

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

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

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

Читать далее

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

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

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

Год назад я рассказывал, как дообучил две модели 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 в терминале.

Читать далее

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

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

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

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

Читать далее

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

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

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

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

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

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

Читать далее

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

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

Читать далее

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

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

Фаза загрузки в моём тесте 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 и многое другое. Заходите!

Читать далее

App Review забанил нашу механику. Нотаризация пропустила её — но нашла другое

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

Два месяца, восемь раундов проверки Apple: два реджекта App Review и два реджекта нотаризации для альтернативного маркетплейса. Что выяснилось: контент на нотаризации действительно не смотрят - механика, зарубленная в App Store по Guideline 1.2, прошла четыре раза. Но формальные гайдлайны применяются: нас отклонили по 2.1 (ключ ATT без промпта) и по 4.8 (ревьюер открыл нашу веб-страницу входа и потребовал Sign in with Apple). Плюс цифры по срокам из App Store Connect: первая нотаризация шла неделю, последняя - 3 часа 46 минут.

Читать далее

Из 165 крупнейших банков в App Store остались 37. Почему сейчас в России проще быть Android-разработчиком

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

Привет!

15 июля истёк срок, который ФАС дала Apple на предустановку RuStore и MAX. Требования не выполнены, дело возбуждено, потолок штрафа доходит до 4 млрд рублей. Ну, вроде очередной эпизод в переписке ведомства с корпорацией, таких за последние годы набралось много.

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

Скажу сразу: любимой платформы у меня тут нет, болеть ни за кого не собираюсь.

Читать далее

Почему спидтест говорит «всё хорошо», а игра лагает: как я построил Latency Dashboard и научил пинг не врать

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

Спидтест показывает 200 мегабит, а в PUBG Mobile 180 мс — и оба числа правда. Пропускная способность и задержка измеряют разные вещи, и про вторую спидтест не говорит ничего.

Я собирал для своего iOS-приложения панель задержек: пинговать не «интернет вообще», а те серверы, которыми человек реально пользуется в своей стране, и сортировать их от худшего. Семь раундов измерений против лежащего рядом MacBook дали пять дефектов подряд — и вытащили баг, который жил в приложении с версии 1.0: два параллельных пинга забирали ответы друг у друга, потому что ICMP-сокет отдаёт и чужие echo reply тоже.

Читать далее

iPhone Duo для iOS-разработчика: что реально меняется в вашем Swift-коде

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

iPhone Duo сломал часть допущений, зашитых в iOS-приложения с 2007 года: экранов теперь два, safe area асимметрична, «только портрет» больше не значит что думаете. Разбираю по докладам Apple, что реально меняется в вашем Swift-коде — size classes, reserved regions, arrangements, hinge и камера.

Читать далее

Вайбкодинг. iOS приложение от идеи до стора

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

На разработку ушло 16 выходных дней и примерно 250$

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

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