Дайджест интересных материалов для мобильного разработчика #450 (4 — 10 июля)
Подключайтесь к нашему Telegram-каналу Mobile Insights, где подборки статей и новостей выходят каждый день.


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


По крайней мере в последнее десятилетие, количество приложений, которым требуется доступ в интернет, неимоверно возросло. Причем для большинства проектов требуется только выполнение REST запросов и загрузка изображений, с созданием preview. В связи с чем, необходим своего рода менеджер сетевых запросов для загрузки данных из сети. Далее будет представлен NetworkManager, с помощью которого выполняются REST запросы, а также загружаются файлы, в том числе и изображения.

Не так давно WWDC21 представила новый интерфейс асинхронности async/await. Это одно из самых важных обновлений Swift за последнее время. Меня, как iOS-разработчика, это событие не могло оставить равнодушной. Я решила вникнуть в нюансы работы async/await и сейчас хочу поделиться своим пониманием механизма, а также показать все его внешние и некоторые внутренние преимущества.
Для начала давайте разберемся с терминологией.

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

Внедрение SwiftUI (далее — SUI) в уже существующее приложение, написанное на UIKit, в середине 2022 г. уже не является вопросом времени, а скорее, определяется наличием соответствующих навыков. Перевод приложения Утконоса – одного из лидеров e-commerce на российском рынке – на SUI мы начали в конце 2020 года, когда подняли минимальную поддерживаемую версию iOS до 13-ой.
Ниже хочу поделиться опытом перевода UIKit-вого таб-бара на TabView, со всеми подводными камнями: когда у вас есть экраны, написанные как на SUI, так и на UIKit.


Возможно ли создать интерфейс для получения любого типа данных одинаковым способом?
Это исследование данных. Как внутри программы мы получаем данные, создаем, трансформируем и передаем.
Мой опыт разработки под iOS с 2008 года, примеры на языке Swift.

Для этого нам даже не понадобится писать код (ну почти). CocoaPods по мнению многих доживает свои славные времена, ведь развитие и распространение SPM (Swift Package Manager) продолжает набирать обороты. Но для тех, кто из вас до сих пор использует CocoaPods в проде, эта статья может оказаться актуальной.
В проектах всё ещё часто используется CocoaPods, и один из полезных и необходимых пунктов при разработке приложения с использованием опенсорсных решений — отображение списка лицензий. И для сохранения авторских прав, и в качестве благодарности авторам.
Для этого нам понадобится связка плагина CocoaPods и Xcode.
Прежде чем приступить к управлению Settings bundle, давайте вкратце рассмотрим концепцию.

Привет, Хабр!
Меня зовут Вильян Яумбаев, в этой статье я расскажу вам про наши приключения на пути к SPM.
В 2015 ПСБ начал разрабатывать проект для бизнеса. Для него, в свою очередь, было нужно приложение. Сперва всё находилось в одном репозитории одного проекта в одном воркспейсе. Первые авторы подключали сторонние зависимости через CocoaPods, поскольку проприетарного менеджера зависимостей ещё не существовало. Но в тот же год в Apple началась работа над Swift Package Manager. Им предстояло встретиться в нашем проекте.
В этой статье расскажу, через что мы прошли, переводя зависимости на SPM, и поделюсь нашими наработками.

Все iOS-разработчики так или иначе сталкиваются с диспетчеризацией (Method Dispatch), но далеко не каждый понимает, как это работает. Зная, как проходит процесс диспетчеризации под капотом программы, вы можете повысить производительность своего кода.
В этом материале мы разберем типы диспетчеризации, их плюсы и минусы, а также затронем один из распространённых багов.
Материал будет полезен для всех iOS-разработчиков, которые хотят улучшить производительность своего кода. Кроме того, этот материал поможет при подготовке к собеседованию, где вопросы о Method Dispatch встречаются достаточно часто.

На недавнем WWDC 2022 вместе с iOS 16 и iPadOS 16 обновился и ARKit. Я рад, что Apple продолжает инвестировать в область AR, каждый год предлагая больше функций и улучшений. Что нового в ARKit 6? Давайте рассмотрим!

Что такое copy-on-write?
Что такое COW или какой механизм может помочь сохранить нашу память при работе со структурами?

Автоматизация мобильной игры с помощью Airtest IDE и других решений
Доброго дня всем! Меня зовут Роман Мелкумов, я тестировщик в студии IT Territory. И вот уже более года тестирую мобильную игру Castle Duels, которая сочетает в себе многопользовательские бои и коллекционирование персонажей.

После выхода новой iOS 15.0 пользователей СберМаркета выкидывало из приложения после блокировки телефона. Бэкенд возвращал ошибку 403 — «пользователь не авторизован». На поиск причины ушло два месяца.
Евгений Рядовой и Дмитрий Шлюгаев из команды разработки рассказали, как искали ошибку и почему это было так трудно.

Привет, Хабр!
Меня зовут Ахмат. Я iOS QA Automation Engineer - в Vivid Money.
В этой статье я хочу рассказать про взаимодействие с alerts и permissions в iOS тестах и показать, как их можно эффективно обрабатывать в своём проекте.
Данная статья будет полезна начинающим iOS-автоматизаторам, либо разработчикам, которые решили изучить XCUITest и покрыть свой проект ui-тестами.
В рамках статьи мы разберем:

Нам давно хотелось рассказать сообществу о том, как мы разрабатываем фичи в KMM-проектах. В статье описан полный путь интеграции gRPC в мультиплатформенный проект, пройденный нашей командой. Он включает и создание проекта, и настройку фичи в проекте. Также мы очень хотим продвигать мультиплатформу именно в среде iOS-разработчиков, поэтому бонусом делаем особый акцент на этой платформе.


Как не попасть в ад из внешних зависимостей? Как сделать так, чтобы проект собирался с одинаковыми версиями зависимостей на машинах разных разработчиков? Рассказываем, зачем нужны менеджеры зависимостей и как ими пользоваться правильно.
Понимание общих принципов поможет не только iOS-разработчикам: у всех менеджеров зависимостей проглядывается общая схема фиксации версий, и требования к распространяемым утилитам во многом похожи.