Обновить

Мобильная разработка

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

iOS network frameworks и HTTP TCP Server внутри приложения

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

Привет. В iOS разработке работа с сетью является одной из ключевых задач. Для этого существует целый арсенал инструментов: от высокоуровневого URLSession до работы с низкоуровневыми BSD сокетами.

В этой статье мы разберем список доступных инструментов, напишем и запустим сервер внутри iOS приложения, используя самый низкоуровневых инструмент (BSD sockets). И закрепим это небольшим проектом, который будет использовать наш сервер. Им будет небольшая админка, с помощью которой можно будет загружать файлы из файловой директории приложения через веб браузер (с других устройств в локальной сети).

Читать далее

Новости

SMS в MikroTik: Читай меня полностью

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

Наверно, все владельцы роутеров MikroTik знают, что они декодируют все SMS по стандарту 7-bit вне зависимости от того, как изначально было закодировано сообщение. Как оказалось, даже при декодировании 7-bit MikroTik использует не все 128 символов из стандартного алфавита (GSM 7-bit Default Alphabet).

А ещё вместо одного длинного SMS роутер покажет вам его части по отдельности, иногда с неполными дубликатами. Как же тогда нормально прочитать любое сообщение, отправленное на роутер? Надо стать протоссом и построить MotherSMS.

Построить

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

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

В новом выпуске отладка iOS-приложений на практике и решение для установки сторонних приложений на Android от Google, Remote Compose и Copy-On-Write, эффекты рисования и градиентного рендеринга, неверная реализация MVVM, рынок труда для джунов в 2026 году и многое другое. Заходите!

Читать далее

BP Tracker: считываем давление с тонометра камерой iPhone. Часть 1 — выбор стека и первый экран

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

Многие приложения для здоровья в России перестали нормально работать. Omron — одно из них. А давление мерить надо каждый день. Поэтому я решил сделать своё iOS-приложение, которое через камеру считывает показания с любого тонометра, сохраняет их и строит графики динамики.

Я Senior CV-инженер — компьютерное зрение моя основная работа. Так что OCR с дисплея тонометра технически не должен был стать проблемой. Но как iOS-разработчик я — полный ноль. Xcode открыл впервые. Swift видел мельком. Это честный рассказ о том, как это выглядит изнутри.

И да, я делаю open source приложение за свободу здоровья от политики — и при этом только под iOS. Ирония не ускользнула. Но это open source — найдётся кто-нибудь с Android-девайсом и свободным вечером 🙂

Читать далее

ИИ-агенты и Flutter: как сделать интеграционные тесты частью процесса разработки

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

Привет, хабровчане! Меня зовут Александр и я Flutter-разработчик. В этой статье хочу рассказать о том как я подружил ИИ-агентов с интеграционными тестами Flutter, какой инструмент пришлось для этого написать и что вообще из этого вышло. Летс гоу.

Читать далее

Автоматическая генерация UI-настроек: от типа данных к готовому интерфейсу

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

Меня зовут Илья, я мобильный разработчик в Naumen. Моя основная специализация — iOS-разработка. Я занимаюсь развитием мобильного клиента платформы Naumen Service Management Platform, а также Chat SDK в рамках Naumen Contact Center.

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

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

Читать далее

Как безопасно хранить и открывать пользовательские файлы локально в Android

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

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

Узнать подробности

Я перестал пользоваться Anki и сделал VibeLing – своё приложение для изучения языков

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

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

В итоге я сделал своё приложение, где попытался закрыть все эти боли. За 5 месяцев его скачали 1000+ человек.

Читать далее

Отладка iOS-приложений на практике: 3 реальных бага

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

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

Читать далее

Интеграция автоматической установки eSIM на Android

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

Я люблю свою работу, потому что на удивление для меня с годами она становится все более нетривиальной и увлекательной. Моя история внедрения автоматической установки eSim была интересна тем, что разрабатывалась вслепую без возможности протестировать функционал на момент разработки. О eSIM и о своей истории и пойдет речь в данной статье.

Узнать подробности

В поиске секретов. iOS Пентест. Часть третья

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

Вас приветствует Ян - старший пентестер из компании Xilant!

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

Для этого нам понадобятся знания из прошлой статьи. Напомню, что мы научились получать root-доступ к более-менее свежим iOS устройствам, а также пользовались аналогом adb через ssh и iproxy. Это дало нам полный доступ к системным ресурсам iOS и позволило не только устанавливать geek-твики, но и воздействовать на память и процессы.

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

Ведь тот кто знает как нападать, сможет себя защитить.

Читать далее

Как заставить Android Studio ругаться на код по вашим правилам: создаем пользовательские Lint и Detekt

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

Привет, Хабр! На связи Алина, старший Android-разработчик в команде Инвестиций «Совкомбанк Технологии». Сегодня поговорим о том, как заставить Android Studio самостоятельно следить за порядком в коде – без ручных проверок и без вечных напоминаний в командном чате.

В этой статье мы создадим практические правила для инструментов статического анализа кода и разберем, как внедрить их в проект. На примере lint рассмотрим контроль архитектуры пакетов и обязательную документацию с QuickFix, а на примере detekt – проверку неизменяемого состояния представления без Android-зависимостей и миграцию с RxJava на Coroutines.

Читать далее

Ферма коммуникаций: система принятия решений для UI-промо в мобильном приложении

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

В большом мобильном продукте коммуникации запускаются разными командами. Подписки, апселлы, промоакции и A/B-эксперименты развиваются параллельно и часто независимо друг от друга.

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

Меня зовут Михаил Христокьян. Я работаю над мобильными продуктами Почты и Облака Mail и занимаюсь архитектурой и развитием системы продуктовых коммуникаций внутри приложения. Сегодня я расскажу о том, как мы решили эту проблему и при чём тут «Разборки».

Экскурсия на ферму

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

Почему многие неверно реализуют MVVM или способы создания абстракций

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

Привет, Хабр! Меня зовут Кирилл Маканков, я iOS-разработчик в ПСБ.  

Сегодня хочу поговорить про особенности реализации MVVM. Не с практической, а с теоретической стороны. С практической стороны этот архитектурный шаблон давно уже изучен вдоль и поперёк. А вот теоретических исследований, особенно применимых к Swift (и в общем, и к SwiftUI в частности), не так уж и много. Давайте вместе попробуем закрыть этот пробел и обосновать с теоретической точки зрения те или иные вариации реализаций в нашей ежедневной работе. Мобильным разработчикам на ObjC, Java и Kotlin данное исследование и обсуждение тоже будет полезно. Присоединяйтесь!

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

Читать далее

Мобильное приложение Ватерпас: DewDrop. Реальная история…

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

Если вы ранее работали с мобильным приложением DogPlanner, то вы, наверное, уже знакомы с робопёсом Роби. Но в любом случае, позвольте рассказать вам его историю. Роби живёт на Марсе... ходит молва, что он был собран кем-то из деталей первого в истории марсохода Sojourner. Он изучает красную планету, да и, по возможности, всю вселенную через сигналы, приходящие из космоса.

Читать далее

Пишем декларативный Package.swift: DSL для модульной архитектуры iOS проекта

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

Swift Package Manager отлично подходит для модульной архитектуры, но по мере роста проекта Package.swift быстро превращается в длинный список строковых зависимостей.

В статье показываю, как превратить Package.swift в типобезопасный DSL на Swift:

убрать строковые зависимости
автоматически генерировать feature-модули
зафиксировать архитектурные правила на уровне компиляции

Читать далее

Искусство просить отзывы: как легально поднять рейтинг до 4.9 и не взбесить пользователя

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

Вы открываете приложение, чтобы быстро проверить баланс или забронировать стол, и тут же получаете в лицо: «Вам нравится наше приложение? Оцените нас!». Ваша реакция? В лучшем случае - машинальное нажатие на крестик, в худшем - удаление. Моя личная боль - открываешь банковское приложение для оплаты на кассе по СБП и получаешь аж три баннера один за другим на экран. Я не хочу прямо сейчас оформить кредит, не хочу оценивать ваши продукты. Я только открыл приложение, я покупки оплатить хочу. И такое поведение если уж не каждый запуск, то каждый второй точно.

В 2026 году Apple и Google стали еще жестче фильтровать накрутки, а пользователи - еще чувствительнее к прерыванию их «флоу». Тем не менее, рейтинг 4.9 - это не магия, а математика, психология и вовремя вызванный системный метод.

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

Продолжим

Внедряем Yandex MapKit SDK в SwiftUI приложение. Пишем Demo проект

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

Всем привет! Меня зовут Роман, я iOS разработчик. Сегодня я поделюсь с вами пошаговым планом создания демо приложения на SwiftUI с использованием Yandex MapKit SDK. Поехали!

Читать далее

Google убивает независимый Android. Обращение и 19 аргументов против насильной регистрации разработчиков

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

https://keepandroidopen.org/ru/
https://keepandroidopen.org/open-letter/
https://www.change.org/p/stop-google-from-limiting-apk-file-usage?recruiter=1370041382&recruited_by_id=fddec6e0-0e30-11f0-a55d-cd0eb0fd0ac4

upd: добавил аудио-версию.

Уважаемая команда Google и руководство Android, я пишу вам не как случайный пользователь, а как человек, который уже больше 15 лет выбирает Android именно потому, что он был открытой платформой. Платформой, которая отличалась от яблочной тюрьмы iOS тем, что не требовала разрешения корпорации, чтобы я мог установить любое приложение, помочь другу с установкой или поддержать независимый проект. Сегодня я вынужден выразить глубокое разочарование, граничащее с чувством предательства.

С сентября 2026 года вы вводите обязательную централизованную регистрацию разработчиков для всего распространения приложений на Android — даже вне Google Play. Чтобы установить приложение через сайт, APK-файл, альтернативный магазин или просто передать его другу, разработчик должен:

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

Иначе приложение просто не установится на сертифицированных устройствах. Это не «улучшение безопасности». Это радикальная смена модели Android с открытой на закрытую.

Читать далее

Халява уходит из разработки Агентов

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

Сегодня каждый норовит написать универсального агента и объявить это революцией. Рынок переполнен поделками вроде OpenClaw и его клонов: IronClaw, ZeroClaw, MicroClaw, NullClaw, GitClaw, AstrBot, GripAi, Moltis...

Все идут одной и той же дорогой: используют готовые MCP и дают агентам shell-оболочку. Да, это легко собрать. Да, весело. Можно хайпануть в соцсетях. Но это тупиковый путь.

В статье разберем все грехи status quo и предложим другой подход, более требовательный к компетенциям в области разработки ПО.

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