Обновить
36.38

iOS *

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

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

От Cocoapods к Tuist+SPM быстрыми шагами

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

Не так давно прогремела новость, что Cocoapods переходит в режим поддержки, больше не будет развития, а только поддержка. В связи с этим встал вопрос, что дальше. В начале мы склонялись к чисто Swift Package Manager, но потом пришло понимание, что неплохо было бы уйти от конфликтов в project файле и сделать задел на модульность. В этой статье постараюсь описать полный путь от Cocoapods к Tuist+SPM, затрону то, что было мне было не понятно в других статьях и передать опыт, чтобы облегчить другим переход.

Читать далее

Performance Testing для iOS

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

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

Но как мы можем отслеживать и мерить метрики скорости нашего приложения? Этим вопросом задаются многие разработчики и компании, которые получили негативную реакцию или думают наперед, когда кодовая база и сложность приложения будет расти. Существует два пути: либо мы изучаем на реальных пользователях нашего приложения, либо мы ищем какой-то другой способ, который позволяет нам статистически проверить гипотезу.

Читать далее

5 рандомных вопросов на собеседовании iOS разработчика

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

Всем привет!

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

Вопрос №1: Можно ли создать необязательные методы в протоколах?

Ответ: Существует два способа создания необязательных методов для протоколов.

Читать далее

Отслеживание утечек памяти в iOS-приложении со SwiftUI в Runtime

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

Всем привет! Меня зовут Фарид, я занимаюсь iOS-разработкой в компании Банки.ру.

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

В нашем проекте ставка сделана на использование SwiftUI, что затрудняет решение задачи: из-за декларативности подхода и отсутствия явно выраженного жизненного цикла в UI, обнаружить причину утечки памяти сложнее. 

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

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

Читать далее

Мобильная разработка за неделю #506 (12 — 18 августа)

Время на прочтение4 мин
Количество просмотров2K
В новом дайджесте закрытие CocoaPods и излишества чистой архитектуры, деструктуризация в Kotlin с примерами и знакомство с Flutter GPU, архитектура мобильного приложения в разрезе высоких нагрузок и построения экосистем, кто может стать программистом, сокращение количества вакансий для разработчиков и многое другое. Подключайтесь!

Подписывайтесь на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.

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

Создание XCFramework из SPM пакета

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

Привет, Хабр! Я Николай Чурянин, начальник отдела разработки приложений для юридических лиц.

Как-то нам в голову пришла мысль подключать зависимости в виде собранных библиотек и тем самым не тратить время на пересборку редко изменяемых зависимостей. В данной статье рассмотрим, как создавать XCFramework из SPM пакета.

Читать далее

Как я бросила двустороннюю архитектуру и ушла к Redux со SwiftUI и SwiftData

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

На примере создания приложения pазберем архитектуру Redux, учтем возможное разделение приложения на модули. Будем постепенно наращивать уровень сложности (ориентир сложности: 🧠) В конце добавим работу со SwiftData, что закрепит понимание передачи данных не только в хранилище, но и по структурам Redux

Читать далее

Как мы соединили обучение с рабочими задачами и не остались в пустой аудитории. Опыт подготовки команды к SwiftUI

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

Сочетать учёбу и работу в IT – задача, мягко говоря, непростая. Даже если вы только ходите на занятия и делаете «домашку». А уж если вы захотите сами организовать обучение – сложности будут расти в геометрической прогрессии.

Недавно наша команда iOS-документов в МойОфис решила перейти на SwiftUI – декларативный UI-фреймворк от Apple. После достаточно безболезненного рефакторинга модуля с UIKit на SwiftUI оставалось всего ничего – обучить коллег новому фреймворку.

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

Читать далее

Сложности масштабирования Kotlin Multiplatform

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

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

Читать далее

Мобильная разработка за неделю #550 (5 — 11 августа)

Время на прочтение4 мин
Количество просмотров2.6K
В нашем новом выпуске автоматическое обнаружение утечек памяти в CI/CD с помощью UI-тестов, эффективная работа с legacy кодом Medium и новая версия Flutter, знакомство с Mobile Farm, тестирование платежей в проде, дейтинг-приложение, работающее только по четвергам и многое другое. Подключайтесь!

Подписывайтесь на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.

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

Режимы наложения/смешивания в SwiftUI

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

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

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

Читать далее

Мобильная разработка за неделю #549 (29 июля — 4 августа)

Время на прочтение4 мин
Количество просмотров2.4K
В новом дайджесте конвейеры мобильного развертывания за $0 и нестрашный Metal, Selenoid без симуляции и странные описания в Play Store, адаптивная верстка на React Native, упадок мобильной разработки, оптимизация пейвола и многое другое. Подключайтесь!

Подписывайтесь на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.

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

Командуем Алисой и ее Умным Домом с Apple Watch и других устройств Apple

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

Всем привет! Долгие годы меня посещала идея, что управлять Алисой с устройств Apple должно быть намного проще, чем то, что для нас предусмотрел Яндекс. Почему бы просто не активировать встроенного голосового ассистента, а он бы передавал голосовые команды Алисе. Звучит удобно, не так ли? 😀

Мой сценарий использования. Подъезжаю вечером на мотоцикле домой, надо включить свет на парковке и в саду. На руке apple watch, доставать телефон неудобно. Эх, вот бы давать команды Алисе, просто проговаривая их вслух, используя для этого только часы…

Способ найден. 😎

Читать далее

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

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

Время на прочтение4 мин
Количество просмотров3.9K
В нашей новой еженедельной подборке стенд для UI-тестирования iOS-приложений и реверсинг приложений под Android, Android Studio в вебе и будущее Flutter, результаты опроса разработчиков Stack Overflow 2024, дизайн-тренды 
2025, топ быстрорастущих приложений в России в июле и многое другое. Подключайтесь!

Подписывайтесь на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.

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

iOS 18 PHAsset URL из requestAVAsset

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

Всем привет! Сегодня я с большой радостью буду обсуждать iOS 18. Наконец-то, уважаемые коллеги, пришло время и мне приобщиться к этой замечательной операционной системе — iOS 18 beta 4. Главной причиной моего участия стали наши продвинутые пользователи, которые уже активно тестируют iOS 18. Спасибо вам за это!

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

Стоит отметить, что iOS 18 beta 4 я буду сокращенно называть iOS 18. Также важно понимать, что методы и способы работы с ними могут измениться в релизной версии iOS 18.

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

Читать далее

Подсветка элементов онбординга. Spotlight onboarding / Highlight element. SwiftUI iOS15+

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

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

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

- Как представить новую фичу пользователю?

- Как сделать так, чтобы пользователь не пропустил добавленный функционал?

- Как повысить количество взаимодействий с новым функционалом?

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

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

Читать далее

Flutter. Стиль кода — это все

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

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

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

Люди тоже диктуют стиль. Стиль был у Роберта Мартина, у Дэвида Томаса, у Мартина Фаулера, у Эрика Эванса... Я встречал стиль в открытом исходном коде. В среде разработчиков стильных проектов куда больше, чем в каком-либо другом сообществе. Стиль — это атрибут, подход и структура.

Выше – юмористическая интерпретация слов из поэмы Чарльза Буковски «Стиль». Вариативность стиля кода настолько многогранна, что не всегда удается прийти к единому мнению в пользу того или иного подхода, поэтому стиль в сегодняшнем понимании — это целая культура.

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

Читать далее

Разработка игр под Apple Vision Pro: ARKit, realityKit, Reality Composer Pro

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

Меня зовут Илья Проскуряков, я — iOS-разработчик компании Effective и в статье расскажу о разработке игр под Apple Vision Pro.

Мы с коллегами разработали две мини-игры в рамках хакатона Ludum Dare в Омске, а затем я сам немного поработал с Apple Vision Pro. Теперь хочу поделиться опытом с примерами и кодом, рассказать о плюсах и минусах Apple Vision Pro с точки зрения разработчика, и в целом, с какими сложностями столкнулся и как их решал.

Читать далее

Удобная навигация в SwiftUI для iOS 16 и выше

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

Не будем мусолить всем известную проблему с навигацией в SwiftUI до 16 iOS, так как уже много крутых статей на эту тему есть в открытом доступе. Близится релиз 18 iOS, а это значит, что минимальные таргеты поднимутся на единичку ближе к 16 🥳

В данной статье хочу представить на `мой взгляд` наиболее удобную реализацию навигации на NavigationStack. Разумеется в концепции старого доброго MVVM, поэтому фанаты UDF извините 😜

Читать далее

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

Время на прочтение4 мин
Количество просмотров1.5K
В новом выпуске создаем макросы без лида, ИТ-курсов и кредитов, прощаемся с XCAssets и пишем приложения для Android 1.0, программируем кастомные макеты в Compose и переосмысливаем Agile, определяем главный тренд экономики приложений, продвигаем аудиокниги в инновационной глобальной AR-кампании и многое другое. Подключайтесь!

Подписывайтесь на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.

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