Все потоки
Поиск
Написать публикацию
Обновить
45.82

iOS *

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

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

iOS 18 для разработчиков: Ключевые изменения в UIKit

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

Привет! Меня зовут Лена, я работаю iOS-разработчиком в KTS. Недавно вышла новая версия iOS 18, и я решила подробно изучить все нововведения, чтобы понять, какие новые возможности она предлагает разработчикам.

В этой статье расскажу о самых интересных обновлениях в UIKit — новый TabBar, анимации, совместимость UIKit/SwiftUI и многое другое, а также поделюсь своими впечатлениями от их практического применения.

Читать далее

Изменение модели данных CoreData для iOs приложения с iCloud синхронизацией

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

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

Итак, поехали!

Читать далее

Создадим команду Wild Politics вместе

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

Здравствуйте, Хабровчане!

Мой предыдущий пост "Как потратить шесть лет и быть невидимкой в Play Market" собрал пусть и не рекордные, но всё-таки 13 тысяч просмотров, благодаря чему в мой пет-проект заглянуло много новых лиц. Я благодарен вам за внимание к игре, отзывы и критику.

Оптимизация. Планируется в самое ближайшее время. Многие вещи в игре делались ещё тогда, когда я только начинал изучать фреймворк Django и в целом веб-разработку. Сейчас опыта у меня прибавилось, и ко многим вещам я возвращаюсь, чтобы переработать их более вдумчиво.

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

Доступность в Play Market. Вероятнее всего, игру не видно в поиске, в первую очередь из-за того, что она находится на стадии пре-регистрации. Также, ранее слабой была ASO-оптимизация страницы игры (буквально мало "ключевых слов" в тексте описания). Полагаю, ситуация изменится с выходом игры в публичный доступ. Но уже сейчас она собрала более 200 заявок на предварительное скачивание.

Прежде чем публиковать игру для "миллиардов пользователей Google Play", я планирую завершить перевод игры на анг

Читать далее

Области тьмы: разбираем неочевидные моменты при использовании памяти в Swift

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

Привет, Хабр! Это Александр, iOS Developer из Clevertec. Об управлении памятью в Swift написано уже много и хорошо. Но я предлагаю копнуть с другой стороны и попытаться собрать недостающие детали пазла.

Читать далее

Objective-C не кусается: как перестать бояться Legacy и стать настоящим iOS-ниндзя

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

Всем привет! Меня зовут Сергей, и я работаю разработчиком мобильных приложений. Также мы с ребятами развиваем международное комьюнити Coffee&Code, а сам я частый гость на встречах в Санкт-Петербурге.

Хочу поговорить о теме, которая волнует многих разработчиков: использование старых технологий в iOS-разработке, таких как Objective-C. Тут возникает очень насущный вопрос, являются ли он легаси?

Читать далее

Внедряем снепшот-тестирование, или пять стадий принятия неизбежного

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

Привет, Хабр! Меня зовут Дмитрий Сурков, я iOS-разработчик приложения для среднего и малого бизнеса ПСБ. У нас есть практика проводить технические дни, на которых мы вносим улучшения в наше приложение. Одним из таких улучшений оказалось внедрение снепшот-тестов для компонентов дизайн-системы. В статье расскажу, как мы прошли все стадии принятия и обрели покой и умиротворение.

Читать далее

Макросы в Swift: Практическое руководство по использованию

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

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

В отличие от макросов в C++ или Objective-C, в Swift нужно писать гораздо больше кода, соблюдая при этом строгие правила оформления. Иначе можно столкнуться с загадочными ошибками компиляции, решение которых не всегда очевидно. Дополнительные трудности возникают из-за того, что многие статьи и видео просто повторяют официальную документацию, не объясняя понятным языком, как именно использовать макросы. Часто вместо этого начинаются сложные рассуждения о структуре AST (Abstract Syntax Tree) или приводятся примеры кода, которые демонстрируют результат работы макроса, но не показывают, как его создать и отладить.

Именно из-за таких трудностей я решил написать эту статью. Её цель — максимально просто, без углубления в теорию, объяснить, как можно уже сегодня начать использовать макросы в Swift. Если вам захочется изучить эту тему подробнее, вы всегда сможете обратиться к официальной документации или материалам с WWDC, где этот вопрос разобран более детально. А если вам понравится моя подача, пишите в комментариях — я постараюсь объяснить сложные моменты в отдельных статьях.

Читать далее

Осторожно, Combine! Откуда берутся утечки памяти, потеря эвентов, нестабильность операторов и что с этим всем делать

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

Привет, меня зовут Никита, я iOS‑разработчик в Яндекс Диске. В прошлый раз я рассказывал, как мы начали свой путь в SwiftUI. Теперь настало время рассказать ещё об одном фреймворке, который мы затащили в свой проект параллельно со SwiftUI, — Combine.

В этой статье разберу проблемы, с которыми столкнулась наша команда, расскажу, как их исправили, а также к каким выводам после этого пришли. А ещё поделюсь библиотекой с фиксами и экстеншенами к Combine.

Читать далее

История одного модального окна или переходим с UIKit на SwiftUI. Часть 2.1. Неожиданный баг Combine

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

В этой статье изначально планировала написать продолжение первой части статьи. А именно показать обещанные ProgressView и SkeletonView. Но тут на моём пути возникло неожиданное препятствие.

Обо всём по порядку.

Мы же понимаем, что просто так оставить View со всем функционалом внутри нельзя. Обычно я накидываю быстрый функционал и UI в одном классе, а затем уже разделяю. Использую MVVM архитектуру. И модальное окно не стало исключением. Проверив, что всё работает во View, я создала ViewModel, сделала её ObservableObject

Читать далее

Корзина в Додо Пицце на iOS 14: баг длиной в полгода

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

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

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

Но спустя пару месяцев я узнал, что тикет проблемы всё ещё открыт. Я решил его закрыть и погрузился в удивительный мир… Авито, воркэраундов и не только! В этой статье расскажу вам об этом приключении! Погнали!

Читать далее

Tuist: добавляем генерацию проекта в текущее приложение

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

Знаете, что объединяет всех iOS-разработчиков, работающих над крупными проектами? Все мы когда-то сталкивались с этим старым знакомым — файлом .xcodeproj, который хранит в себе десятки, а то и сотни конфликтов после каждого merge. Мы тоже жили с этой проблемой много лет, пока не нашли решение.

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

Если у вас всё еще сохранился этот «реликт прошлого», то, возможно, наш опыт поможет вам наконец-то избавиться от него. Давайте разберемся, как это сделать.

Читать далее

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

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров1.5K
В моей новой подборке странное поведение UserDefaults и признание Google Play монополией, анимации космоса и авто-трекинг производительности, роль продуктового дизайнера, как перехватывают зашифрованный HTTP-трафик, новый рекорд приложений с подпиской и многое другое. Подключайтесь!

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

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

История одного модального окна или переходим с UIKit на SwiftUI. Часть 1

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

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

Читать далее

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

Как зеленый Леруа Мерлен стал желтым Лемана ПРО

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

В последнее время ну очень популярна стала такая вещь, как ребрендинг. Одни меняют лого и название. Другие, вдобавок к этому, еще и кардинально меняют цвета.

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

Будем это исправлять.

Всем привет! Меня зовут Слава. Я мобильный разработчик. И в этой статье я поделюсь своим уникальным опытом того, как Леруа Мерлен стал Лемана ПРО. Собственно, рассказывать буду про мобильную разработку 🤷🏽.

Читать далее

Что такое Home-виджеты и как их подружить с вашим приложением на Flutter

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

Привет! Меня зовут Айдар Мавлетбаев, я Flutter-разработчик в AGIMA. С Flutter я работаю уже несколько лет. Несмотря на все преимущества, он не всегда оптимально решает задачи, которые требуют глубокой нативной интеграции. Существуют инструменты, разработанные специально под нативные платформы, но недоступные напрямую из Dart. И как правило, в таких случаях на помощь приходит PlatformChannel

Но существуют и нативные инструменты, которые интегрируются с Flutter. Например, создавать виджеты на Android можно с помощью Glance или XML, а на iOS — с WidgetKit. Эти технологии позволяют внедрять так называемые Home Widgets — элементы, с которыми можно взаимодействовать напрямую с домашнего экрана. В этой статье разберу основные инструменты, расскажу, как их внедрять и использовать во Flutter-приложениях.

Читать далее

Мобильная разработка за неделю #558 (30 сентября — 6 октября)

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров1.5K
В новом дайджесте ускорение запуска приложений и спойлер-эффект кна Swift, сборщик метрик Android-проекта и рисование звезд, замена Firebase, идеальный встраиваемый язык, приложение для заметок, которое не стремится сделать вас более продуктивным и многое другое. Подключайтесь!

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

10 SDK, чтобы улучшить ваше мобильное приложение

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

SDK (Software Development Kit) — комплекс инструментов для расширения функциональности мобильных приложений и доступа к новым опциям и возможностям ПО. При этом каждый SDK ограничен своим набором компонентов и закрывает определённые задачи бизнеса. В статье расскажем о базовых, второстепенных и перспективных SDK, опишем их функции и возможности, приведём примеры наборов разработчика для каждой из категорий.

Читать далее

Как реализовать спойлер-эффект как в Telegram на Swift?

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

Спойлеры стали неотъемлемой частью общения в мессенджерах и социальных сетях. Они позволяют скрывать часть информации до тех пор, пока пользователь не захочет ее увидеть. В Telegram спойлер-эффект сопровождается красивой анимацией рассыпающихся точек. В этой статье мы рассмотрим, как реализовать подобный спойлер-эффект в iOS-приложении на Swift, используя CAEmitterLayer и UITextVie.

Читать далее

Быстрый доступ к VPN в iOS с помощью App Intents

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

Привет! Меня зовут Антон Долганов, я iOS-разработчик в компании Контур. Я работаю над инфраструктурными модулями и параллельно поддерживаю наше приложение Контур.Коннект, которое используется для подключения к внутреннему VPN и даёт доступ к корпоративным сервисам.

Недавно мы выпустили обновление Коннекта, добавив поддержку Быстрых команд (Shortcuts). Теперь можно включать и отключать VPN, даже не заходя в приложение. В этой статье я расскажу, как я это реализовал и почему это полезно.

Читать далее

Как ускорить запуск iOS-приложения в 2 раза с помощью Network Instrument

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

Приложение соединяет данные из сети с интерфейсом. Про UI сказано и написано немало, а вот сеть говорят меньше всего, хотя именно она влияет на время ожидания ответа пользователем. При этом со стороны разработчика это часто выглядит так: «ну я создал сессию, дёрнул запрос, обработал ошибку, что там ещё может быть?».

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

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

Читать далее