iOS Dev
Открыть в Telegram
👨💻Автор: Виктор Грушевский (@Viktorianec) ⚒️ База: https://boosty.to/ios_dev | 🤖 @iOSIQBot | https://iosiq.ru 🍏Канал об iOS-разработке, алгоритмах и архитектурах ⭐️ Подготовка к собесам ⭐️ Код. Много кода. #ios #mobile #swift
Больше8 002
Подписчики
+424 часа
+427 дней
+8130 день
Архив постов
8 003
Camera Control в iPhone16: AVCaptureControl и фреймворк LockedCameraCapture
Буквально вчера показали новый телефон, а у нас уже появился новый островок новый контрол, с которым можно работать.
📖 На официальной странице Apple можно познакомиться с лучшими практиками в плане дизайна.
А из того, что нам может пригодиться:
1️⃣ AVCaptureControl — новый контрол только для 16/16 Pro (примеры работы - тут).
2️⃣ LockedCameraCapture — новый фреймворк, с помощью которого можно создать расширение для запуска камеры на залоченном девайсе. Туториал уже доступен (но, как и всегда, есть ряд ограничений).
😃 iOS Dev
8 003
Архитектурная секция на собеседованиях
Команда мобильной разработки Яндекс 360 записала пример прохождения архитектурной секции в Яндекс. В интервью участвуют руководитель технического управления сервисами Виктор Брыксин, а в роли кандидата — руководитель мобильной разработки Михаил Буравлев.
В тестовом задании нужно было спроектировать абстрактное мобильное приложение для медитаций: с отдельным экраном для списка треков, возможностью воспроизведения аудиозаписей, упрощённым календарём и пуш-уведомлениями. После этого нужно было поработать с требованиями, архитектурой и API, а также показать ход мысли и защитить свои решения.
Забирайте наглядный пример прохождения секции!
Смотреть на Youtube
Смотреть в ВК
8 003
Работа с JSON в Swift: расширенное руководство
Парсинг JSON чаще всего является базой приложения для iOS, использующим REST API.
Делюсь руководством, которое поможет освежить знания (состоит из нескольких глав, в каждой их которых подразделы с примерами).
1️⃣ Как работать с данными JSON в Swift.
2️⃣ Продвинутые техники для парсинга сложных данных.
3️⃣ Создание приложения SwiftUI, которое загружает и парсит JSON.
🛠 Проект целиком доступен и на github.
🔗 А вот тут я писал про четыре полезных сервиса для упрощения работы с JSON.
😃 iOS Dev
8 003
Как автоматически локализовать секцию «Что нового?» с помощью App Store connect API
При создании новой версии приложения в App Store Connect мы обязаны указывать какую-то инфу, которая меняется нечасто (конечно, если у вас нет SMM-команды, которая отвечает за юмор и репосты скриншотов).
Раньше для этого повсеместно использовали fastlane, но сейчас всё чаще я слышу от коллег о переходе на нативное апи (некоторые пишут свою обёртку, некоторые используют готовые решения).
Эти способы позволяют сэкономить немного времени, усилий и устранить человеческие ошибки.
📖 В этой статье рассказано, как использовать API App Store Connect для предварительного указания информации при создании новой версии приложения.
🔗 А вот здесь описаны и другие кейсы использования этого API.
😃 iOS Dev
8 003
Работа с данными банковских приложений на iOS с использованием SwiftUI + Vision
Одна из перспективных задач при работе с любыми приложениями — упрощение ввода, так как это экономия времени, сил и способ избежать потенциальных ошибок.
Но у того же FinanceKit есть множество ограничений: минимальная ось 17.4 и требования к самим компаниям, да и пользователи вряд ли захотят делиться своими данными.
🧑💻 Наш читатель, Слава Слуцкер, придумал необычный и интересный способ для решения задачи сбора данных о кэшбеке из разных источников на базе скриншотов (но, конечно, потенциал использования выше).
Для этого он использовал связку Vision (для распознавания определённых строк и дальнейшего парсинга процентов) и SwiftUI. Vision умеет работать в том числе и с разными языками, что безусловный плюс, а ещё прямо на устройстве.
📖 В статье на хабре вы можете почитать о процессе решения этой задачи, познакомиться с кодом и, возможно, использовать это в своих приложениях. Кстати, посмотреть результат (и поделиться фидбэком) можно в тестфлайте.
😃 iOS Dev
8 003
DebugDescription в Xcode 16: новый макрос для упрощения отладки
При работе с кастомными типами отладка может быть непростой задачей.
Для упрощения можно юзать
CustomDebugStringConvertible, который позволяет кастомизировать вывод в таких случаях.
А с помощью макроса DebugDescription, можно вызвать debugDescription и чекнуть детальное описание.
😃 iOS Dev8 003
SwiftUI AlignmentGuide: расширенное руководство
📖 На хабре опубликована большая статья с примерами для работы с модификатором AlignmentGuide, описано, когда могут пригодиться ViewDimensions и какие есть альтернативы.
🛠А ещё есть интерактивный сайт, где можно посмотреть не только на самые разные примеры верстки, но и поперетаскивать блоки.
😃 iOS Dev
8 003
Получение флага страны в виде эмодзи в Swift
Часто требуется отобразить эмодзи для страны по её коду.
Флаги Emoji представлены с помощью последовательностей символов в unicode. Удивительно, но юникодовое представление каждого флага напрямую соотносится с кодом по стандарту ISO (ISO 3166-1 alpha-2).
Конечно, есть соблазн использовать что-то вроде:
let flags: [String: String] = ["AD": "🇦🇩", "AE": "🇦🇪", "AF": "🇦🇫", "AG": "🇦🇬", "AI": "🇦🇮", "AL": "🇦🇱", "AM": "🇦🇲", "AO": "🇦🇴", "AQ": "🇦🇶", "AR": "🇦🇷", "AS": "🇦🇸", "AT": "🇦🇹", "AU": "🇦🇺", "AW": "🇦🇼", "AX": "🇦🇽", "AZ": "🇦🇿", "BA": "🇧🇦", "BB": "🇧🇧", "BD": "🇧🇩", "BE": "🇧🇪", "BF": "🇧🇫", "BG": "🇧🇬", "BH": "🇧🇭", "BI": "🇧🇮", "BJ": "🇧🇯", "BL": "🇧🇱", "BM": "🇧🇲", "BN": "🇧🇳", "BO": "🇧🇴", "BQ": "🇧🇶", "BR": "🇧🇷", "BS": "🇧🇸", "BT": "🇧🇹", "BV": "🇧🇻", "BW": "🇧🇼", "BY": "🇧🇾", "BZ": "🇧🇿", "CA": "🇨🇦", "CC": "🇨🇨", "CD": "🇨🇩", "CF": "🇨🇫", "CG": "🇨🇬", "CH": "🇨🇭", "CI": "🇨🇮", "CK": "🇨🇰", "CL": "🇨🇱", "CM": "🇨🇲", "CN": "🇨🇳", "CO": "🇨🇴", "CR": "🇨🇷", "CU": "🇨🇺", "CV": "🇨🇻", "CW": "🇨🇼", "CX": "🇨🇽", "CY": "🇨🇾", "CZ": "🇨🇿", "DE": "🇩🇪", "DJ": "🇩🇯", "DK": "🇩🇰", "DM": "🇩🇲", "DO": "🇩🇴", "DZ": "🇩🇿", "EC": "🇪🇨", "EE": "🇪🇪", "EG": "🇪🇬", "EH": "🇪🇭", "ER": "🇪🇷", "ES": "🇪🇸", "ET": "🇪🇹", "FI": "🇫🇮", "FJ": "🇫🇯", "FK": "🇫🇰", "FM": "🇫🇲", "FO": "🇫🇴", "FR": "🇫🇷", "GA": "🇬🇦", "GB": "🇬🇧", "GD": "🇬🇩", "GE": "🇬🇪", "GF": "🇬🇫", "GG": "🇬🇬", "GH": "🇬🇭", "GI": "🇬🇮", "GL": "🇬🇱", "GM": "🇬🇲", "GN": "🇬🇳", "GP": "🇬🇵", "GQ": "🇬🇶", "GR": "🇬🇷", "GS": "🇬🇸", "GT": "🇬🇹", "GU": "🇬🇺", "GW": "🇬🇼", "GY": "🇬🇾", "HK": "🇭🇰", "HM": "🇭🇲", "HN": "🇭🇳", "HR": "🇭🇷", "HT": "🇭🇹", "HU": "🇭🇺", "ID": "🇮🇩", "IE": "🇮🇪", "IL": "🇮🇱", "IM": "🇮🇲", "IN": "🇮🇳", "IO": "🇮🇴", "IQ": "🇮🇶", "IR": "🇮🇷", "IS": "🇮🇸", "IT": "🇮🇹", "JE": "🇯🇪", "JM": "🇯🇲", "JO": "🇯🇴", "JP": "🇯🇵", "KE": "🇰🇪", "KG": "🇰🇬", "KH": "🇰🇭", "KI": "🇰🇮", "KM": "🇰🇲", "KN": "🇰🇳", "KP": "🇰🇵", "KR": "🇰🇷", "KW": "🇰🇼", "KY": "🇰🇾", "KZ": "🇰🇿", "LA": "🇱🇦", "LB": "🇱🇧", "LC": "🇱🇨", "LI": "🇱🇮", "LK": "🇱🇰", "LR": "🇱🇷", "LS": "🇱🇸", "LT": "🇱🇹", "LU": "🇱🇺", "LV": "🇱🇻", "LY": "🇱🇾", "MA": "🇲🇦", "MC": "🇲🇨", "MD": "🇲🇩", "ME": "🇲🇪", "MF": "🇲🇫", "MG": "🇲🇬", "MH": "🇲🇭", "MK": "🇲🇰", "ML": "🇲🇱", "MM": "🇲🇲", "MN": "🇲🇳", "MO": "🇲🇴", "MP": "🇲🇵", "MQ": "🇲🇶", "MR": "🇲🇷", "MS": "🇲🇸", "MT": "🇲🇹", "MU": "🇲🇺", "MV": "🇲🇻", "MW": "🇲🇼", "MX": "🇲🇽", "MY": "🇲🇾", "MZ": "🇲🇿", "NA": "🇳🇦", "NC": "🇳🇨", "NE": "🇳🇪", "NF": "🇳🇫", "NG": "🇳🇬", "NI": "🇳🇮", "NL": "🇳🇱", "NO": "🇳🇴", "NP": "🇳🇵", "NR": "🇳🇷", "NU": "🇳🇺", "NZ": "🇳🇿", "OM": "🇴🇲", "PA": "🇵🇦", "PE": "🇵🇪", "PF": "🇵🇫", "PG": "🇵🇬", "PH": "🇵🇭", "PK": "🇵🇰", "PL": "🇵🇱", "PM": "🇵🇲", "PN": "🇵🇳", "PR": "🇵🇷", "PS": "🇵🇸", "PT": "🇵🇹", "PW": "🇵🇼", "PY": "🇵🇾", "QA": "🇶🇦", "RE": "🇷🇪", "RO": "🇷🇴", "RS": "🇷🇸", "RU": "🇷🇺", "RW": "🇷🇼", "SA": "🇸🇦", "SB": "🇸🇧", "SC": "🇸🇨", "SD": "🇸🇩", "SE": "🇸🇪", "SG": "🇸🇬", "SH": "🇸🇭", "SI": "🇸🇮", "SJ": "🇸🇯", "SK": "🇸🇰", "SL": "🇸🇱", "SM": "🇸🇲", "SN": "🇸🇳", "SO": "🇸🇴", "SR": "🇸🇷", "SS": "🇸🇸", "ST": "🇸🇹", "SV": "🇸🇻", "SX": "🇸🇽", "SY": "🇸🇾", "SZ": "🇸🇿", "TC": "🇹🇨", "TD": "🇹🇩", "TF": "🇹🇫", "TG": "🇹🇬", "TH": "🇹🇭", "TJ": "🇹🇯", "TK": "🇹🇰", "TL": "🇹🇱", "TM": "🇹🇲", "TN": "🇹🇳", "TO": "🇹🇴", "TR": "🇹🇷", "TT": "🇹🇹", "TV": "🇹🇻", "TW": "🇹🇼", "TZ": "🇹🇿", "UA": "🇺🇦", "UG": "🇺🇬", "UM": "🇺🇲", "US": "🇺🇸", "UY": "🇺🇾", "UZ": "🇺🇿", "VA": "🇻🇦", "VC": "🇻🇨", "VE": "🇻🇪", "VG": "🇻🇬", "VI": "🇻🇮", "VN": "🇻🇳", "VU": "🇻🇺", "WF": "🇼🇫", "WS": "🇼🇸", "YE": "🇾🇪", "YT": "🇾🇹", "ZA": "🇿🇦", "ZM": "🇿🇲", "ZW": "🇿🇼"]Но есть и другой путь. 📖 В этом материале разбираются не только принципы получения эмодзи, но и затронуты неочевидные моменты для разных стандартов. 😃 iOS Dev
8 003
Как использовать файлы EditorConfig в Xcode 16
🛠 Если вы работали/работаете над несколькими проектами с разным кодстайлом, то может быть такое, что приходится настраивать параметры Xcode каждый раз при переключении между проектами.
А если в проекте нет линтера, который обеспечивает соблюдение стиля и вы вдруг забудете применить эти настройки, то в итоге можно легко получить непоследовательное форматирование кода во всем проекте.
В Xcode 16 добавлена поддержка файлов EditorConfig, которые позволяют задавать настройки редактора Xcode для каждого проекта.
📖 В этой статье вы узнаете, как настроить файлы EditorConfig в Xcode и какие настройки поддерживаются на данный момент.
✅Больше советов по работе с инструментарием вы можете найти здесь.
😃 iOS Dev
8 003
Отслеживание утечек памяти в iOS-приложении со SwiftUI в Runtime
Декларативность, а также то, что в SwiftUI нет явно выраженного жизненного цикла для вьюх, значительно повышает трудности при поиске утечек по сравнению с UIKit.
📖 На хабре iOS-разработчик Фарид поделился своим решением в компании для упрощения поиска проблем утечек в таких проектах.
Основные блоки:
1️⃣ Рассмотрены основные подходы для поиска утечек.
2️⃣ Поиск оптимального варианта для нахождения таких проблем.
3️⃣ Поиск опций для подстраховки от утечек в будущем.
😃 iOS Dev
8 003
Инструментарий. Полезные советы при работе с Xcode, терминалом и симулятором
В новом разделе в Notion я добавил некоторые неочевидные советы при работе с Xcode, которые упростят и ускорят разработку (в том числе и полезные возможности при работе с симулятором от тестирования пушей и диплинков до навигации и советов при билдах).
Уже сейчас в базе знаний доступно несколько важных составляющих:
Подготовка к собеседованиям: - Мок-собесы с публичным доступом (сейчас несколько десятков на русском и английском языках). - Вопросы для подготовки по секциям (сотни вопросов на разные темы) - Частные узкие темы (с поиском проблем в коде). - System Design. Мои советы и большая подборка материалов. Алгоритмы: - Сложность алгоритмов. - Разбор десятков задач с контестов (в том числе и от яндекса). - Популярные методы решения задач (с примерами). Архитектуры: - Все паттерны проектирования банды четырёх. Общая информация и примеры реализации на Swift. - Архитектурные заблуждения. - Реализация в реальных приложениях.И многое другое. По мере появления свободного времени я делюсь своим опытом и стараюсь рассказать о некоторых сложных вещах. Вы можете подписаться здесь или в телеграм-боте ( ❤️). 😃 iOS DevКрасим кнопкиНеобычные эффекты: В этом разделе я делюсь анимациями, подходами к созданию и десятками примеров. Ранний доступ к обновлениям приложения: Статья о разработке доступна в публичном доступе.
8 003
Зарплаты стажёров и джунов в IT
На Хабр.карьере вышло новое исследование зарплат, на этот раз изучили зарплатные возможности для новичков в IT — стажеров и джунов.
Главные выводы:
1️⃣ Проще попасть в IT с позиции стажера.
2️⃣ Доля вакансий с удаленкой для джунов и стажеров сейчас 60%, это на 17% больше, чем в начале 2023.
3️⃣ Больше всего начинающие IT-специалисты зарабатывают в Ozon Tech, YADRO и Холдинге Т1.
💸Эти данные основаны на реальных зарплатах, а больше про динамику на рынке можно узнать в этом посте.
😃 iOS Dev
8 003
Скрытые возможности крашлогов: как читать информацию об ошибках
Никто не любит краши. Бывает, что их сложно анализировать, а исследование причин может отнять большое количество времени (и возможно, даже не всегда привести нас к решению).
Патрик Уордл проделал огромную работу и написал статью, в которой объяснил, как упростить понимание структуры и информации из крашлогов.
Он признаёт, что сам путь исследования требует глубокого понимания реверс-инжиниринга, поэтому поверхностно ещё и затронуты темы дизассемблирования и отладки на примере ARM64.
Сам материал наполнен большим количеством примеров не только под iOS, но и macOS, и, даже показан баг 0day (который затрагивает даже бетки 15 макоси).
📖 Рекомендую прочитать и сохранить исследование.
А если вы хотите узнать, что, например, означает EXC_BAD_ACCESS — у нас в канале уже есть и такой пост.
✅Кстати, что в ноушне есть раздел по повышению производительности приложения, информация из которого поможет уменьшить причины появления самых разных крашей.
😃 iOS Dev
8 003
Как повысить видимость приложения на устройстве
Читатель нашего канала прислал любопытный способ, как можно с помощью одной строки помочь пользователям проще найти ваше приложение на iOS.
Для этого стоит воспользоваться ключом
kMDItemKeywords, который не описан в документации (да и вообще там якобы только macOS) и использовать нужные вам теги.
На скриншоте пример для приложения iOS IQ (попробовал замаскироваться под твиттер, чтобы заменить его более полезным контентом), обновление которого уже скоро будет доступно подписчикам.
📖 Целиком статья доступна здесь, можно посмотреть на примеры и добавить несколько 👏.
😃 iOS Dev — а вот тут я писал про способ использования для NSUserActivity8 003
Как вы считаете, будут ли заблокированы учетки Apple Developer для разработчиков из РФ и Беларуси?
8 003
❗️Apple Search Ads заблокировал все рекламные инструменты и кампании для разработчиков из РФ и Беларуси
Сегодня все разработчики получили письмо о том, что им больше недоступны эти инструменты от Apple.
Я тоже получил такое письмо утром, Apple ссылается на пункт 13, но по факту причина только одна: страна регистрации аккаунта.
Боюсь предположить, что будет дальше и поменяется ли политика по выплате дохода.
😃 iOS Dev — вот такое утро
8 003
Warp-эффект на metal-шейдере
Возможности использования шейдеров в iOS-разработке довольно велики, но применение именно в прод-разработке не так обширно на данный момент (если речь не идёт о работе с видео или фото).
Ранее я писал о том, что добавил новый раздел в iOS IQ, в котором разбираю некоторые необычные вещи, эффекты и варианты реализации с помощью возможностей системных фреймворков.
🤩 Один из таких эффектов — Warp, реализацию которого без Metal я уже применял в приложении.
🔗 Доступ, примеры и рабочий код уже доступны для всех подписчиков здесь и в бусти.
😃 iOS Dev
8 003
❗️ CocoaPods прекращает активное развитие и переходит в режим поддержки
Прошло уже 9 лет с момента анонса SPM (именно тогда начал замедляться рост CocoaPods). Несмотря на это, CocoaPods продолжали оставаться сверхпопулярными и востребованными среди разработчиков.
ℹ️ Orta Therox написал большой пост, в частности, затрагивающий и проблемы с безопасностью, а также выпустил важный анонс, в котором сообщил о будущих планах по поддержке и обслуживанию.
Теперь будет как минимум два релиза в год для поддержки изменений Xcode, будут закрывать все возможные проблемы с безопасностью и уделять внимание тем PR, которые ориентированы на будущее.
Вместе с этим, больше не будет активного реагирования на проблемы индивидуальных пользователей, и будет свернуто активное развитие проекта. Кроме этого, они не могут дать гарантий, что будут рассмотрены пулреквесты, направленные только на новые фичи.
😃 iOS Dev
8 003
Подборка докладов с конференции Swift Craft
Swift Craft — конференция в Великобритании, которая прошла в мае, а сейчас на канале появились видео, с которыми можно ознакомиться.
📺 Управление состояниями для iOS-приложений
Аракс Авоян рассказывает о функциональном управлении состояниями в приложениях для iOS. В докладе уделено внимание основам функционального программирования (и приведены практические примеры).
📺 Назад в будущее - Swift 6 Edition!
Пол Пиелла Абадия подготовил этот доклад, в котором объясняет все предстоящие изменения, а также использует несколько примеров кода, чтобы лучше подготовиться к Swift 6 уже сейчас.
📺 Математик размышляет о макросах, @Models и ML
Дэниел Стейнберг делится своими размышлениями, в частности, как мы решаем, чему учиться и как изучать новые вещи, анонсируемые каждый год на WWDC.
📺 Дата и время в Swift — обработка даты в программировании на Swift (будет доступно 21 августа).
В этом докладе будет рассказано о взаимодействии Date с датами, календарями, форматорами, компонентами DateComponents, TimeZones и другими полезными вещами.
📖 Все доклады конференции доступны в этом плейлисте.
😃 iOS Dev
Уже доступно! Исследование Telegram 2025 — ключевые инсайты года 
