Обновить
43.62

iOS *

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

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

Работа с RTSP-плеером во Flutter: выбор библиотеки и снижение задержки

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

Работа с RTSP-потоками во Flutter остаётся задачей, которую нельзя решить штатными средствами фреймворка. Базовый плагин video_player не поддерживает RTSP, из-за чего прямое воспроизведение видео с IP-камер и систем наблюдения недоступно без сторонних решений. Для корректной работы в таких сценариях требуется специализированный плеер, обеспечивающий стабильное отображение потока и минимально возможную задержку.

В данной статье мы рассмотрим основные библиотеки для работы с RTSP во Flutter — flutter_vlc_player, fijkplayer и media_kit, сравним их особенности, достоинства и влияние на задержку воспроизведения. Отдельное внимание уделим настройкам, которые позволяют минимизировать latency, прежде всего в решениях на базе FFmpeg. Также разберём доступные параметры оптимизации в flutter_vlc_player. 

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

Читать далее

Новости

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

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

Привет! Меня зовут Ринат, я 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.3K

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

В новом дайджесте вопрос с собеседования, на котором сыпятся даже 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.9K

Пользователи всегда хотят большего, и количество самых разных запросов постоянно растёт. Но есть некоторые функции, которые пользуются особой популярностью. Вот такие запросы мы и реализовали в новой версии браузера 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 и многое другое. Заходите!

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