Как стать автором
Поиск
Написать публикацию
Обновить
39.98

iOS *

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

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

Изоляция с помощью глобальных акторов в Swift Concurrency: варианты на примере @MainActor

Время на прочтение7 мин
Количество просмотров889

Привет, Хабр! Меня зовут Алексей Григорьев, я техлид iOS-разработки продукта Membrana в МТС. Это тариф с приложением для управления приватностью в сети и окружением.

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

Один из самых распространенных и полезных глобальных акторов — это @MainActor, который гарантирует выполнение операций в главном потоке приложения. В этом посте я на его примере покажу все варианты, как можно реализовать изоляцию и что в итоге выведет код: на каком потоке будут выполнены update, internal update и set в property.

Читать далее

Укрощаем асинхронный код с помощью async/await

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

Привет! Меня зовут Андрей Максимкин, я iOS-разработчик в hh. Мы в команде активно используем async/await подход при написании нового кода, а также активно применяем при переписывании старого. В процессе работы сталкивались с некоторыми интересными и не самыми очевидными моментами — их и рассмотрим в статье.

Работа с различными потоками — очень важная часть разработки мобильных приложений под iOS. Грамотное распределение нагрузки положительно влияет на скорость работы приложения, а значит, и на пользовательский опыт. До Swift 5.5 для работы с многопоточностью в основном использовали фреймворки GCD и NSOperation. Начиная с версии Swift 5.5 стал доступен функционал async/await. В статье мы кратко расскажем о базовых принципах данного подхода и сделаем акцент на проблемах и особенностях, которые необходимо знать при написании кода. Информация будет полезна тем, кто уже знаком с функционалом async/await, а некоторые примеры могут быть интересны и более продвинутым разработчикам. 

Поехали!

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

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров1.9K
В новом дайджесте продолжаем изучение архитектурного линтинга и CI/CD, исследуем «приключение на 20 минут» с legacy-кодом и оправдания для вайб-кодинга, SwiftUI Instruments, скрытные ботнеты, выпуск приложений Spotify и многое другое. Заходите!

Читать дальше →

Ох уж эти скрытные ботнеты

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

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

IP-адреса, с которых происходят попытки использовать мой сервер для отправки спама

IP-адреса, с которых совершаются попытки подобрать имя пользователя/пароль для авторизации на моём почтовом сервере и рассылки спама
Читать дальше →

Интеграция JavaScript в нативные мобильные приложения для криптотрейдинга: нестандартный опыт и технические решения

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров594

23–24 апреля в Москве проходит Blockchain Forum — одно из ключевых событий в мире блокчейна и криптотехнологий. На форуме изучаем тренды, делимся опытом и слушаем коллег, набираемся насмотренности.

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

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

Читать далее

Отлаживаем приложение вместе со SwiftUI Instruments

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

Apple по доброте душевной поделилась с разработчиками инструментом отладки SwiftUI. Удобный он или не очень — разберёмся вместе с Surf iOS Team. 

Читать дальше

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

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров2.4K
В этом выпуске обеспечение архитектурных правил с SwiftLint и эмуляция бесконтактных карт, тестирование Android-приложений в масштабе Netflix и разрешения в Appium, полная инструкция по разработке PWA, защита данных пользователей от скриншотов, анти-этичный ИИ и многое другое. Заходите!

Читать дальше →

Какой фреймворк выбрать для MVP стартапа: опыт разработчика и фаундера

Время на прочтение5 мин
Количество просмотров6.7K

Автор: разработчик и фаундер с опытом запуска стартапов в сферах туризма, HR tech, а сейчас — в музыкальной индустрии.

По образованию — Data Scientist, по призванию — Android-разработчик и продукт-менеджер.

Работал в крупных продуктах вроде X5 и Uzum, где впервые познакомился с Kotlin Multiplatform Mobile (KMM). Когда настал момент создавать прототип для своего музыкального стартапа, выбор был очевиден: я уже знал Kotlin, имел боевой опыт с KMM — и хотел быстро двигаться без лишних компромиссов.

Но KMM — не единственный путь.

На столе были и Flutter, и React Native, и даже классическая нативка.

В этой статье я расскажу:

Читать далее

Разработали мобильное приложение для криптобиржи EVEDEX — функциональное решение для быстрой и безопасной торговли

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров1.5K

Создать мобильное приложение для криптобиржи — всегда вызов. Особенно, если биржа сочетает в себе принципы DEX и CEX, предлагает встроенные кошельки, смарт-аккаунты и управление средствами без посредников. Мы в CleverPumpkin взялись за этот челлендж и разработали EVEDEX — удобное и безопасное приложение для криптотрейдинга.

Читать далее

Мобильная разработка за неделю #583 (7 — 13 апреля)

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров4.1K
В новом дайджесте рассказываем как банки живут в заблокированном App Store, как создать UI-конструктор с помощью Compose Multiplatform, исследуем новый фреймворк внедрения зависимостей для Android и портируем кроссплатформенную С++ игру на iOS, изучаем Google Firebase Studio и многое другое. Заходите!

Читать дальше →

Что делать после блокировки ADEP: MDM-системы, PWA или Android?

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

В 2025 году Apple окончательно прикрыла лавочку Apple Developer Enterprise Program (ADEP) для российских компаний. Этот канал долгое время использовался бизнесом, чтобы расшаривать iOS-приложения внутри компании — без выкладки в App Store. Теперь привычный способ доставки корпоративного ПО умер. Ищем альтернативы.

Читать далее

SwiftUI: Реализация разделенного координатора совместно с DeepLink (Universal link)

Уровень сложностиПростой
Время на прочтение15 мин
Количество просмотров838

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

Использование концепции MVVM порождает еще один философский вопрос: может ли один и тот же экран с одной и той же viewmodel иметь различные типы входных параметров. Конечно, для идеологии чистого кода — ответ однозначен. Но ведь если нет нужды в создании нового вида или новой view model, то подавляющее количество разработчиков предпочтет переиспользовать один и тот же экран и для отображения десериализированного объекта, и для сериализированных параметров, передаваемых строкой в пути навигации.

Читать далее

У нас в проекте был Compose Multiplatform, но снова я бы так не делал

Время на прочтение10 мин
Количество просмотров4.7K

Мобильная разработка продолжает развиваться, но, если честно, никаких революционных прорывов в последнее время не произошло. Громкие темы, вроде Kotlin Multiplatform (KMP), Flutter, Jetpack Compose, SwiftUI, уже давно закрепились в индустрии, а новинки больше эволюционируют, чем меняют правила игры. Компании экспериментируют с кроссплатформенными решениями, и это выглядит логично. Писать общий код для iOS и Android 一 это экономия ресурсов и времени. Вроде бы верно, но на практике всё не так гладко.

Привет, меня зовут Максим Плахута и с недавнего времени я руковожу Android разработкой «Кинопоиска». До этого руководил мобильной разработкой Почты Яндекс. А ещё я участник ПК новой конференции по мобильной разработке Apps Conf. Расскажу, какие шишки набили в реализации кроссплатформенного проекта и чего лучше не делать в современной мобильной разработке.

Читать далее

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

Воспроизведение и редактирование видео с AVFoundation. Часть 2. Ассеты продвинутые

Уровень сложностиСредний
Время на прочтение21 мин
Количество просмотров674

Вторая статья из цикла об идеях воспроизведения и редаĸтирования медиа с
использованием AVFoundation. В ней разберём тему сложных ассетов.

Читать далее

SwiftUI: Пишем простое фитнес-приложение с использованием HealthKit

Уровень сложностиСредний
Время на прочтение26 мин
Количество просмотров1.6K

В этой статье мы сосредоточимся на создании фитнес-приложения с использованием HealthKit. Это отличная возможность интегрировать данные о здоровье пользователей прямо в ваш продукт. Мы настроим фреймворк для отслеживания тренировок на Apple Watch; узнаем, как получить доступ к данным о физической активности и управлять ими, сохраняя при этом конфиденциальность пользователей.

Читать далее

App Store блокирует аккаунты разработчиков, а банки всё равно в сторах. Рассказываем, как они это делают

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

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

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

Читать статью

Мобильная разработка за неделю #582 (31 марта — 6 апреля)

Время на прочтение5 мин
Количество просмотров1.3K
В этом выпуске конкатенация против интерполяции, дизайн-система для мобильных устройств и TV, применение zero/empty объектов, игра на LUA для часов Xiaomi Redmi Watch 4, уродливые пейволы, навыки флирта с ИИ-персонажами и многое другое. Заходите!

Читать дальше →

Google AI Studio: макеты Figma -> iOS приложение на Gemini 2.5 Experimental

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

Gemini 2.5 Experimental воспроизводит в SwiftUI с поразительной точностью стили текста и функциональные возможности прототипов, подготовленных дизайнерами в Figma. Особенно это касается разработки русскоязычных UI.

Выдаёт полноценный изобретательный SwiftUI код, демонстрируя высокий потенциал Gemini 2.5 в преобразовании Figma-макетов в рабочий iOS-код.

Читать далее

Воспроизведение и редактирование видео с AVFoundation. Часть 1. Ассеты простые

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров909

Первая статья из циĸла об идеях воспроизведения и редаĸтирования медиа с
использованием AVFoundation. В ней рассмотрим главный объеĸт работы с медиа –
простой ассет.

Читать далее

Обзор Copilot в Xcode на SwiftUI

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

Вот я и добралась до Copilot (знаю, поздно, всё руки не доходили установить). Было жутко интересно, чем конкретно он мне может помочь в написании кода. Так что, ХаброКотаны, кому интересно, приглашаю вас почитать дальше.

P.S. Обложку, кстати, сделал гпт в стиле гибли из моей фоточки.

Читать далее