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

Мобильная ОС компании Apple
Недавно закончился отборочный этап Yandex Cup для разработчиков по различным направлениям, одним из которых была мобильная разработка под iOS. Как раз про нее и поговорим, а точнее про задания, которые были там представлены. Стоит отметить, что их сложность выше среднего, по этой причине, думаю, каждый подчеркнет для себя что-нибудь новое. Хотелось бы сразу сказать о том, что некоторые используемые конструкции/инструменты языка/фреймворков были для меня не новы, но в жизни встречался с ними редко, поэтому приходилось читать и на практике воспроизводить код из условия, экспериментируя с ним. Правильных ответов у меня не было, и решал я уже после окончания отборочного этапа. Если заметите какие-либо неточности в формулировках, в размышлениях, в ответах, буду рад обсудить это в комментариях.
Приступим! :-)
О чем пойдет речь
В данной статье я хочу рассказать вам как я стал iOS разработчиком в 32 года не имея профильного образования, не оканчивая курсы, без знания английского языка и без друзей/знакомых в сфере IT.
Понеслась.
Первые мысли об IT
Впервые я задумался об IT когда посмотрел видео Дудя «Как устроена IT‑столица мира». Данное видео меня сильно вдохновило, но не мотивировало к изучению. В то «ковидное» время я сменил работу и стал работать в крупной компании подключая корпоративным клиентам интернет. Моя работа никак не была связана с программированием. После прохождения испытательного срока в 3 месяца и ровно за 3 недели до моего тридцатилетия я с ужасом осознал, что не хочу всю жизнь бродить по пыльным и загаженным подвалам/чердакам, чтобы протянуть кусок кабеля. Расти в компании мне не хотелось, работа не приносила удовольствие, а наоборот только угнетала. Каждый мой день был крайне непростым, да и денег это приносила ежемесячно от 35 до 80к. А ведь мне почти 30 лет.. жена, ребенок.. в отпуске последний раз был 5 лет назад. Осознав всю печальность ситуации я начал действовать.
Выбор языка программирования
Начал с того, что пересмотрел все видео на Youtube начального уровня (на русском языке) с названиями типа «Как стать разработчиком/программистом», «Как выбрать язык программирования», «Сколько зарабатывают программисты» и т. д. Приступив к выбору языка я знал лишь 2 вещи: мне нравятся игры и техника Apple. Встал выбор: Objective‑C или Swift. После долгих раздумий я выбрал Swift, как более перспективный.
Привет! Меня зовут Максим, я руководитель мобильной разработки в KTS.
1 ноября состоялся релиза Kotlin 1.9.20, beta компилятора k2.
Но для нас интереснее глобальное изменение статуса KMP. Мы используем эту технологию в мобильной разработке и написали про неё несколько статей.
В статье подробнее рассмотрим, что изменилось в технологии с переходом в релиз.
5-9 июня 2023 года состоялась ежегодная презентация Apple WWDC23, на которой было представлено много интересных новшеств для iOS-разработчиков. Одну из таких фич — интерактивные виджеты, мы рассмотрим в этом руководстве.
Возможность создавать виджеты для приложений на устройствах Apple появилась достаточно давно. Но до сих пор основной целью виджетов являлось отображение актуальной информации из приложения и его запуск по нажатию. Такой ограниченный функционал повлиял на падение популярности данного элемента.
В iOS 17 реализован функционал для создания интерактивных виджетов. Теперь у них появились элементы управления и анимации, виджет может сам выполнять некоторую работу без запуска основного приложения. Грубо говоря, обновленные виджеты представляют собой небольшие отдельные приложения, как AppClip.
В данном руководстве мы создадим несколько интерактивных виджетов и расскажем, каким образом пользователю быстро выполнять определенные функции без запуска основного приложения.
Ранее, в сентябре этого года, мы представили наш браузер для iOS и были завалены положительными отзывами об уникальных функциях Vivaldi на вашем iPhone и iPad.
Vivaldi выделяется мощным набором функций и полезными встроенными инструментами, которые делают вашу работу в сети более приватной. Мы гордимся уникальным пользовательским интерфейсом, который мы привнесли в iOS, и стремимся сделать браузер ещё лучше уже сегодня.
При разработке приложений для iOS мы часто сталкиваемся с проблемами, когда клавиатура iPhone выдвигается вверх и закрывает UITextField / UITextView
Работа с клавиатурами в iOS всегда была проблемой. Независимо от того, новичок вы или опытный разработчик, вам всегда нужно будет работать с клавиатурой в ваших приложениях.
Управление клавиатурой - это базовый функционал, но Apple вынуждает нас управлять им вручную.
До iOS 15 было несколько способов решить проблему когда клавиатура перекрывает UITextField / UITextView или другие элементы.
Можно было вынести в свойство или аутлет нижний констрейнт перекрываемого элемента. Подписаться на уведомления.
Четыре года я занимаюсь разработкой различных спецэффектов для фото и видео в мобильных приложениях. Вроде бы это локальная и как бы несерьезная тема, но одну только плачущую маску в Snapchat посмотрели 9 млрд раз. Такие штуки пользуются бешеной популярностью и здорово повышают виральность мобильных приложений, но с каждым годом удивлять людей становится все сложнее.
В этой статье я разберу эволюцию видеоэффектов, поделюсь наблюдениями и раскрою пару инсайдов о том, как перенести стилизацию изображения из StableDiffusion на смартфоны.
Всем привет, меня зовут Фарид Хусаинов, я тим-лид команды мобильной разработки Банки.ру. Мы делаем iOS-приложения компании Банки.ру, а именно – наше основное приложение и приложение, посвященное страхованию.
Два с половиной года назад мы приняли решение перевести наше мобильное приложение на SwiftUI. На тот момент это была смелая и рискованная идея, так как SwiftUI был новой технологией. Маленькое комьюнити, много багов и нехватка опытных разработчиков, работающих на этой платформе, делали этот шаг непростым.
Привет! Меня зовут Андрей, я iOS-разработчик приложения «Пункт Ozon». С помощью него сотрудники пунктов выдачи Ozon выдают посылки, принимают возвраты, проводят инвентаризации.
Мы хотим упростить работу с OpenAPI-спецификациями, внедрив кодогенерацию для автоматического создания кода на Swift из YAML- или JSON-файла спецификации. Это позволяет автоматизировать создание DTO, сделать их единообразными и повысить эффективность разработки. Кодогенератор также упрощает сетевой слой, генерируя методы API, наборы параметров, заголовки и т.д.
На WWDC `23 Apple представила свой Open Source-генератор Swift OpenAPI Generator, который как раз и решает эту задачу. Давайте рассмотрим, готов ли в текущем виде Swift OpenAPI Generator для решения нашей проблемы.
Однажды ко мне пришел крупный застройщик, хотел обновить дизайн приложения. Провели два созвона, определились, что будет в дизайне. Делаю простенькое ТЗ на доп. разработку. Все круто, казалось бы. Потом выяснилось, что нужно интегрироваться с 1С. Это сложная доработка, поэтому с командой делаем полноценное техническое задание. Присылаем им готовое ТЗ, договор и счет — ждем ответа. Проходит день, два… неделя. Мы забили, а потом увидели кейс у коллег по нашему ТЗ.
Тут мы отчасти сами виноваты — не могли остановиться и перелопатили кучу конкурентов, предлагали идеи и записывали их в ТЗ. В итоге потратили чересчур много времени на проект, который не сложился. Теперь делаем отдельный договор под ТЗ, когда видим, что планы меняются и за два созвона тут не порешать.
Вспоминаем, каким был наш релизный поезд раньше и как круто мы его доработали сейчас. Мы разработали сервис релизов, запустили бета-тесты, придумали, как релизить без участия людей и автоматизировали загрузку сборок в магазины приложений. Про это всё рассказываем в статье.
Привет, меня зовут Сергей, и я мобильный разработчик в компании Brickit. Некоторое время назад мы наконец мигрировали приложения для iOS и Android на общий код на Flutter. Мы были в восторге от результата, но сам переход был далеко не гладким. Одной из важных частей этой авантюры была настройка и использование плагина камеры, что оказалось нетривиальным как на iOS, так и на Android. В этой статье я расскажу о проблеме с недостаточно высоким разрешением фотографий на iOS, немного объясню, как работает оригинальный плагин, и предоставлю наше решение с примерами кода о том, как сделать это лучше. Ссылка на полный код в конце статьи.
SwiftUI + VIPER - это доработанный архитектурный паттерн разработки приложений, предоставляющий чистую, модульную и легко тестируемую структуру. В этой статье мы рассмотрим, как работает архитектура SwiftUI + VIPER и как создавать приложения, модули и сервисы на ее основе.
И ни капельки UIKit и другой темной магии..
Недавно компания Valve объявила о том, что Counter-Strike 2 не будет поддерживать macOS. Я инди-разработчик, в одиночку выпустивший игру с поддержкой macOS, поэтому поначалу меня удивило это решение Valve. Но вспомнив о своём собственном опыте поддержки шести платформ, я начал понимать точку зрения компании.
Думаю, будет полезно написать пост с перечислением полученных мной уроков. Надеюсь, он поможет другим инди-разработчикам в выборе поддерживаемых платформ. Небольшое предисловие: моя собственная игра Industry Idle в основном основана на веб-технологиях (WebGL + TypeScript). Это означает, что поддержка разных платформ — относительно простая задача, мне не приходится иметь дело с платформенными графическими API (DirectX, OpenGL, Vulkan, Metal) и в основном игра существует в браузерной «песочнице». Это практически идеальная ситуация для кросс-платформенной поддержки. Тем не менее, меня постоянно удивляют и одолевают проблемы, связанные с отдельными платформами.
Привет! В этой статье мы разберемся, как отправлять push-уведомления пользователям iOS, даже если ваше приложение временно недоступно в App Store. С выходом Safari 16.4, появилась возможность получать уведомления в Progressive Web Apps (PWA)