Как стать автором
Обновить
76.41

iOS *

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

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

Что нового в Swift 5.7

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

Swift 5.7 привносит в язык очередную гигантскую коллекцию изменений и улучшений, включая такие мощные фичи, как регулярные выражения; практические усовершенствования, как сокращенный синтаксис if let; а также множество доработок по приведению в порядок согласованности вокруг ключевых слов any и some.

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

Читать далее

Чиним баг в iOS Firebase RemoteConfig

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

Здравствуйте, меня зовут Артем Волков. Я iOS разработчик в компании "AliExpress Россия".

В этой статье расскажу историю одного бага, который мы встретили, работая c подом Remote Config из SDK Google Firebase для iOS, а также о том, как мы внесли свой небольшой вклад в его исправление.

Жизнь и приключения одного бага

Дайджест интересных материалов для мобильного разработчика #452 (8 — 14 августа)

Время на прочтение5 мин
Количество просмотров2.8K
Как и обещали, возвращаемся после отпуска с новым дайджестом! В нем классные UI и много графиков, главная концепция Jetpack Compose и паттерны Dart проектирования, новый язык программирования Google, ловушки монетизации и многое другое!

Подключайтесь к нашему Telegram-каналу Mobile Insights, где подборки статей и новостей выходят каждый день.

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

Сложно, но можно — стажировка в Яндекс Go

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

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

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

Читать далее

Ошибка.log(): как логируются ошибки в мобильном приложении Авито

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

Вы настроили в приложении краш-репортинг, всё протестировали и выложили в магазин. Постоянно мониторите crash rate, в котором всегда четыре девятки, — приложение работает отлично и все довольны. Но всё-таки вы смотрите на него как будто сквозь замочную скважину и не видите полной картины. Чтобы это исправить, нужен полноценный лог ошибок.

Читать далее

Навигация в Swift UI: что изменилось с появлением iOS 16

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

Одно из самых проблемных мест SwiftUI — работа с навигацией. Отсутствие доступа к стеку навигации, невозможность разделить UI-слой и слой навигации, сложность создания диплинков — всё это затрудняло работу многим разработчикам, использующим SwiftUI в своих проектах.

В iOS 16 появился совершенно новый API для работы с навигацией. Разбираемся, стало ли удобнее.

Читать далее

Подключение OAuth в iOS за полчаса

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

Привет! Меня зовут Лена, я занимаюсь iOS-разработкой в KTS.

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

В мобильных приложениях используется Authorization Code Flow with Proof Key for Code Exchange (PKCE). Подробнее о выборе flow читайте в нашей предыдущей статье. Эта статья является продолжением.

Сегодня мы рассмотрим вариант реализации OAuth-авторизации с помощью библиотеки AppAuth-iOS. Она одна из самых популярных и довольна проста в использовании. Весь код из статьи доступен в Github.

Читать далее

Конфиденциальность iOS: Instagram* и Facebook* могут отслеживать всю вашу активность в браузере внутри приложения

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

Приложение Instagram* и Facebook* для iOS отображает все сторонние ссылки и рекламу в своем приложении с помощью собственного встроенного браузера. Это создает различные риски для пользователя, поскольку хост-приложение может отслеживать каждое взаимодействие с внешними веб-сайтами, от всех данных формы, таких как пароли и адреса, вплоть до каждого нажатия.

Чтобы упростить пост, будет использоваться термин «Instagram*» вместо «Meta*» или «Facebook*».

*Meta признана в России экстремистской организацией, деятельность ее сервисов Facebook* и Instagram* в стране запрещена.

Примечание. Если статья покажется интересной, то вот тут я пишу об iOS-разработке и о том, что с ней связано.

Читать далее

Создаем классный UI: iOS Shape Morphing

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

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

На днях в Твиттере я наткнулся на твит, демонстрирующий одну классную технику в пользовательском интерфейсе, и заинтересовался, как она была реализована.

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

Итак, в качестве первой статьи из (я надеюсь) большой серии, давайте разберемся, как создать классный компонент пользовательского интерфейса: “Shape Morphing” на iOS.

Читать далее

[Async/await] Structured concurrency Pt.1

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

Всем привет! Мы продолжаем разбираться в асинхронном Swift! В рамках этой статьи мы познакомимся с тем, как писать зависящие друг от друга асинхронные задачи, познакомимся с Task поближе и разберем несколько интересных  примеров

Читать далее

Сложности переноса Papers, Please на мобильные

Время на прочтение16 мин
Количество просмотров20K
Mobile-Title

Я разработал Papers, Please в 2013 году специально с расчётом на десктопные компьютеры и управление мышью. В 2022 году десктопных компьютеров уже не существует и все компьютеры — это мобильные телефоны. Настало время обновить этого динозавра.

Эта статья из тысяч слов и мегабайтов изображений раскроет вам некоторые аспекты портирования игры с большого десктопа на маленький телефон. Отдавая дань прошлому, я написал эту статью как большой кусок текста с вкраплениями тегов img, а не превратил её в яркое видео. Ещё через девять лет я портирую этот пост в VR.

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

То же блюдо на другой тарелке.
Читать дальше →

SwiftUI. Есть ли жизнь без NavigationView или пару слов о координаторе

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

В далекие – далекие времена, когда iOS была совсем маленькой, разработчики, гордо именуемые iOS-девелоперами, задумались о кастомизации навигационного стека. Не то что навигационный стек был плох – он отлично вписывался в картину мира Apple, но вот навигационная панель часто была «бельмом в глазу» для пользователей и дизайнеров. Поэтому разработчики применяли простой трюк – скрывали панель в приложении, а вместо нее показывали свою собственную панель, со своим собственным дизайном интерфейса, управляющие элементы которого были привязаны все к тем же методам push и pop доступных им из коробки.

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

Читать далее

С помощью API iOS 16 компания Apple закладывает основу для разработки смешанной реальности

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

Не сказав об этом ни слова, Apple готовит разработчиков к созданию приложений для своего долгожданного AR/VR-устройства.

Читать далее

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

Как локализовать SPM модуль?

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

Swift Package Manager существует уже довольно давно, его популярность растёт, как и количество модулей, доступных для использования. Если вы работаете над своим SPM модулем, будет здорово расширить число разработчиков и проектов, которые могут его использовать, путём добавления локализации.

Читать далее

Flutter jank shaders — история проблемы и пути решения

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

Меня зовут Андрей, я Flutter-разработчик в команде Центра развития финансовых технологий (ЦРФТ) Россельхозбанка. Сегодня поговорим о «jank shaders» — дёргающейся анимации при первых запусках приложений на Flutter — и о том, как можно постараться её исправить.

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

На скриншоте ниже приведен пример задержки анимации перехода между экранами при первом запуске.

Читать далее

Получение URL-адресов системных папок в iOS 16

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

Работа с файлами и каталогами стала намного проще в iOS 16. Раньше, чтобы получить путь к файлу в папке приложения, приходилось использовать API FileManager, что довольно сложно. Теперь мы можем получать пути к системным папкам непосредственно из статических свойств типа URL.

Читать далее

Создание 3D-моделей из фото с Object Capture API

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

Обычно чтобы создать одну точную и реалистичную 3D-модель предмета реального мира средней сложности требуется несколько часов работы профессионального художника. Тем временем, с развитием AR и VR сильно растет запрос на быстрое и недорогое создание качественных моделей. Для этих целей в macOS Monterey в составе RealityKit был представлен Object Capture API, который позволяет автоматизировать этот процесс. Object Capture использует алгоритмы фотограмметрии и может преобразовать серию фотографий в высококачественную 3D-модель оптимизированную для дополненной реальности всего за несколько минут. API появился год назад, но про него мало писали, поэтому я предлагаю рассмотреть данный инструмент подробнее.

Читать далее

В Мурманске завершился хакатон «Умный город» с призовым фондом 1 млн рублей

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

На хакатоне создали конструктор умного дома, приложение для спортсменов, сервис для молодежи Арктики и дневник для достижения поставленных целей. Победителями стали команды из Москвы, Ярославля и Омска

В Мурманске завершился НТИ-хакатон «Умный город». Он проходил 14-15 июля в рамках I Всероссийского молодежного форума «Умный город: Наше будущее — Новые лица» в онлайн- и офлайн-форматах.

В хакатоне приняли участие более 220 человек (56 команд) из 50 городов страны. Всего на хакатон подали более 580 заявок. До финального этапа дошли 46 команды, которые загрузили свои решения на платформе.

Читать далее

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

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

Мы продолжаем сражаться с шаблонным кодом в табличных экранах iOS-приложений. 

В предыдущих статьях мы описали мотивы и подход, используемый для решения проблемы дублирования кода из контроллера в контроллер. Также мы показали детальную реализацию и возможности использования источника и провайдера данных для таблиц, которые позволяют ускорять разработку табличных экранов за счет переиспользования реализации протокола `UITableViewDataSource` в соответствии с принципами SOLID.

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

В этой статье рассмотрим, как избавиться и от такого кода. 

Читать далее

Swift. Сериализация параметров запроса

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

Наверняка, каждый разработчик, которому необходимо было программировать сетевой слой приложения решал задачу передачи параметров запроса. В большинстве случаев это несложная задача, которая решается стандартными средствами, которые предоставляет нативный sdk либо язык программирования. Но если рассматривать ситуацию в контексте платформы iOS и языка программирования Swift, то тут же станет ясно, что компилятор выдает ошибку при попытке сериализации параметров в виде словаря [String: Any]. Однако, благодаря нововведениям, которые появились в iOS 15.4 и Swift 5.6 сериализация словаря сильно упростилась.

Читать далее