Обновить
41.19

iOS *

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

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

Анимация смены темы в Compose Multiplatform

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

Анимация смены темы в Android-версии Telegram на протяжении долгого времени вдохновляет разработчиков на попытки реверс-инжениринга этого красивого трюка: в сети немало подробных гайдов, как сделать подобную анимацию при помощи традиционных XML View и даже Flutter. Но реализаций этой элегантной (хоть и совершенно бесполезной) анимации на Jetpack Compose мне найти так и не удалось, что привело к созданию маленькой библиотеки для анимирования смены темы.

Вера в будущее KMP также подтолкнула меня к тому, чтобы сделать ее из коробки готовой к установке в Compose-Multiplatform проекты, с поддержкой всех основных платформ (Android, iOS, Desktop JVM, Web WASM+JS).

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

На старте написания библиотеки сами собой возникли ряд требований, которым она должна была отвечать:

Читать далее

Новости

Поднимаем версию до Swift 6

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

Swift 6 вышел чуть больше года назад, однако iOS-сообщество не спешит поднимать версию в коммерческих проектах. Да и среди энтузиастов на Хабре не так много тех, кто готов поделиться практическим опытом миграции. Поэтому остаётся пробовать самому. Проверим, насколько сложно будет поднять версию для простого приложения на SwiftUI.

Читать далее

Capacitor: от веба к мобильным приложениям. Часть 0. Зачем нужен Capacitor

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

С Новым годом, Хабр. Меня зовут Илья, я работаю Frontend разработчиком в компании Бастион. Январские выходные в самом разгаре, но уже многие, включая меня, наобещав себе свернуть горы в этом году, находятся в поиске полезной для мозга информации. Тогда присаживайтесь поудобнее, ибо сейчас мы будем разговаривать о такой замечательной технологии для разработки гибридных мобильных приложений, как Capacitor.

Читать далее

Firebase — динамическое переключение проектов в iOS приложении

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

Firebase - динамическое переключение проектов в iOS приложении

В этой статье мы глубоко погрузимся в технические детали работы с Firebase и рассмотрим:

- Как и почему можно использовать Firebase проект без регистрации Bundle ID

- Традиционные способы переключения Firebase конфигураций (compile-time)

- Динамическое переключение проектов во время работы приложения (runtime)

- Практический пример: миграция пользовательских данных между приложениями

- Безопасность и важные моменты

Читать далее

Kenbak‑1 в кармане: iOS-эмулятор легендарного компьютера 1971 года

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

Kenbak-1 не имел ни экрана, ни клавиатуры, ни даже микропроцессора, но это не помешало ему войти в историю, как первый персональный компьютер.

В статье я расскажу о том, как создал уникальный iOS‑эмулятор Kenbak-1, что послужило мотивацией к этому, о деталях реализации, и почему это устройство поможет вам понять фундаментальные принципы работы современной вычислительной техники.

Читать далее

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

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

Последний дайджест в этому году! От неработающей к тестируемой навигации, тепловизор для разработчика, развитие Swift SDK для Android, инженерия уверенности и многое другое. С наступающим и хороших вам приложений! До встречи в новом году!

🎄Читать

Snapshot тесты для iOS. быстро, стабильно на Metal

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

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

Статья разбирает, как индустрия решает проблемы сравнения в современных open-source инструментах и разбирает существующие ограничения.

Представлена open-source библиотека AFSnapshotTesting на Metal GPU: более точная ΔE2000, кластерная фильтрация шумов, комбинированные стратегии, целочисленные пороги и настоящие diff-изображения.

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

Полезно iOS-разработчикам для надёжных визуальных тестов.

Читать далее

Вооружаемся. iOS Пентест. Часть вторая

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

В прошлой статье мы нескучно рассмотрели как получить джейлбрейк (JB) с рутом на некоторых устройствах iOS  с чипом A11. Как я уже озвучил в первой части, рут на устройстве нам нужен для пентеста. Теперь займемся установкой инструментария для пентеста iOS.

Читать далее

Снепшот-тестирование SwiftUI View в legacy-проекте: обходим ограничения

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

Снепшот-тестирование — один из немногих надёжных способов контролировать визуальную целостность SwiftUI-компонентов. Но что делать, если ваш проект ограничен Xcode 13.3 и Swift 5.6, а большинство компонентов дизайн-системы обёрнуты в UIViewRepresentable?

Меня зовут Денис Третьяков, я iOS-разработчик в ПСБ. В этой статье расскажу, как мы организовали снепшот-тестирование SwiftUI-компонентов в условиях жёстких ограничений, с какими проблемами столкнулись и как их решили.

Читать далее

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

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

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

Читать далее

Как Apple пропатчила «антеннагейт» в 20 байт

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

Хотите увидеть нечто любопытное? Вот, как устранили проблему «антеннагейта» на iPhone в 2010 году. 20 байт.

iOS 4.0: 8d ff ff ff 91 ff ff ff 95 ff ff ff 99 ff ff ff 9d ff ff ff iOS 4.0.1: 86 ff ff ff 98 ff ff ff 9e ff ff ff a7 ff ff ff b0 ff ff ff

Контекст: в 2010 году, когда выпустили iPhone 4, пользователи заметили, что если взять телефон определённым образом, то количество полосок сигнала сети падает с 5 до примерно 2. Спустя насколько недель компания опубликовала письмо, в котором свалила вину за это на неправильную формулу.

Читать далее

Все не так с Codable

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

Привет, Хабр! На связи Кристиан Бенуа, iOS-разработчиĸ в Т-Банĸе. Быстродействие мобильных приложений — один из критериев, влияющих на успех не только приложения, но и всего бизнеса.

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

Расскажу, как мы сделали pull request в swift-foundation и внесли несколько оптимизаций в JSONDecoder/JSONEncoder, ускорив сериализацию и десериализацию в два раза. В конце обсудим, как получить эту оптимизацию без ограничений по версии iOS и насколько можно ускорить работу с JSON в приложении.

Читать далее

Опенсорс-библиотека Implicits от Яндекс Браузера: новый шаг в передаче зависимостей Swift

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

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

Проблема известна. Scala использует implicit parameters на уровне языка, Kotlin экспериментирует с context receivers, Android полагается на Dagger. А Swift не предлагает встроенного решения. Поэтому мы в команде Яндекс Браузера создали библиотеку Implicits — механизм неявной передачи зависимостей с compile‑time‑проверками. Она успешно работает в продакшне Браузера на полутора миллионах строк Swift‑кода, а ещё доступна в опенсорсе.

В этой статье я расскажу о поиске собственного подхода для передачи зависимостей в коде на Swift, о том, как внедрение Implicits позволяет существенно сократить boilerplate, ускорить рефакторинг и улучшить читаемость кода благодаря локальному объявлению только реально используемых зависимостей, а также покажу реальные примеры из продакшн‑кода мобильной версии Яндекс Браузера.

Читать далее

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

Запускаем LLM на iPhone локально — мой опыт с Gemma 2B

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

Долгое время меня мучал вопрос - возможно ли запустить ИИшку у себя на телефоне, и если да, то какую. Я уверен, что об этом думали многие, но не понимали смысла, зачем тратить время на такого рода занятия. Что ж, я не выдержал и сделал мини-приложение, которое запускает Qwen / Gemma модель и общается с вами без доступа в интернет - прямо на смартфоне.

Читать далее

Скандалы, интриги, продуктовые метрики: что нам дало ускорение загрузки экрана в приложении hh

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

Привет! Меня зовут Саша Тотилас и я руковожу командой разработки в hh.ru. Хочу поделиться с Хабром результатами A/B-эксперимента: при оптимизации одного из экранов нашего приложения мы ускорили загрузку контента и выяснили, как это влияет на продуктовые метрики, а также собрали интересные инсайты.

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

Читать далее

Побег из стеклянной тюрьмы. iOS Jailbreak. Часть первая

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

Всем привет! С вами Ян, пентестер из компании Xilant. В течении следующих нескольких статей мы поговорим о тонкостях взлома iOS и её приложений. В свою очередь я бы хотел из этого сделать нескучную историю с кучей полезного и мемного контента.

И всё начинается с того, что у нас в руках красивый блестящий iOS-девайс, но ничего мы с ним сделать не можем кроме задуманных Apple процедур. Обычно, это называют «огороженным садиком» (Sandbox) или «стеклянной тюрьмой» (Glass Prison). Но если вы хотите «покинуть тюрьму»,  единственный способ — побег или Джейлбрейк (JailBreak / JB).

Читать далее

Сдвиг камеры в 2ГИС MSDK на маркер при разных углах поворота камеры

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

Как в 2ГИС/Яндекс.Картах/Google Maps аккуратно смещать камеру и маркер в “сцену” при нажатии, даже когда карта повернута: определить видимую область, проверить положение точки, вычислить сцену с учётом паддингов, при необходимости сдвинуть или центрировать маркер.

С математическими расчетами и картинками.

Узнать секрет сдвига маркера 🚀

Мобильная разработка за неделю #612 (8 — 14 декабря)

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

В этом выпуске особенности Struct в Swift и RemoteCompose в Android, знакомство с Frida и новые умные очки Google, сломанное ценообразование приложений с подпиской, навигация на SwiftUI, создание анимированных полос и многое другое. Заходите!

Читать далее

Как мы использовали Codex, чтобы запустить приложение Sora под Android за 28 дней четырьмя инженерами

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

Это статья из официального блога OpenAI, но подход меня так зацепил, что решил перевести для всех. Я тоже часто переношу веб-приложения на мобилки примерно таким же способом и было очень здорово увидеть такой же подход (архитектура+рабочее_приложение-как-пример) у по сути создателей сильного AI. Пишу про разные похожие интересные вещи тут

В ноябре мы представили миру приложение Sora для Android, предоставив любому пользователю с Android-устройством возможность превращать короткие текстовые промпты в живые видео. В день запуска приложение заняло 1-е место в Play Store. За первые 24 часа пользователи Android сгенерировали более миллиона видеороликов.

За этим запуском стоит история: первая версия продакшн-приложения Sora для Android была создана всего за 28 дней благодаря тому же агенту, который доступен любой команде или разработчику – Codex.

С 8 октября по 5 ноября 2025 года небольшая команда инженеров, работая бок о бок с Codex и израсходовав примерно 5 миллиардов токенов (вау), провела Sora для Android от прототипа до глобального запуска. Несмотря на скорость разработки и масштаб, приложение демонстрирует показатель стабильности (crash-free) 99,9% и архитектуру, которой мы гордимся. Если вам интересно, использовали ли мы какую-то секретную модель – нет, мы использовали раннюю версию модели GPT-5.1-Codex, ту самую, которую любой разработчик или компания могут использовать уже сегодня через CLI, расширение для IDE или веб-приложение.

Читать далее

Не просто WebView: Строим движок на Flutter для конвертации сайтов в приложения с Server-Driven UI

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

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

WebView-приложения — это боль. Тормоза, убогий UX, мгновенный реджект от Apple по пункту 4.2 («Minimum Functionality»). Обычно это просто браузер без адресной строки, за который стыдно брать деньги.

Я решил не делать очередную "обертку", а подойти к задаче инженерно. Моя цель: платформа, где WebView — лишь контентный слот, обернутый в полноценный нативный UI на Flutter.

В этой статье:

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