iOS Good Reads – swift, разработка мобильных приложений, архитектура, блокчейн, VR, AR, карьера, IT
12.4K subscribers
654 photos
63 videos
3.95K links
Самые интересные статьи, видео и новости, связанные с iOS разработкой. Не больше трёх материалов в день.

Лучшее iOS сообщество в Телеге: @iosgt

Размещение рекламы: @tanyasanovna
Download Telegram
Что видят пользователи неподдерживаемых версий OS в App Store

Когда вы предложите своему продакту дропнуть поддержку старых версий iOS, он скорее всего спросит, как именно будет выглядеть опыт тех, кто на них все еще сидит. По ссылке собрали скриншоты и ответы на другие частые вопросы.
Apple Push Notifications Console

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

👉Переменные, которые могут представлять цвета, размеры, эффекты, типографику и локализованные строки.
👉Новые настройки автолейаута, с помощью которых можно прямо в Figma делать адаптивный дизайн.
👉Новый Developer Mode, который позволяет готовить экраны для передачи их разработчикам.
👉Песочница компонентов, в которой дизайнер может легко переключать разные настройки экспортируемых компонентов и смотреть, как они себя ведут в граничных состояниях.
👉Поддержка в VSCode для работы с макетом прямо в IDE.
👉Плагины для экспорта дизайна в код на любом фреймворке.
Новая библиотека от Apple – swift-http-types

Библиотека содержит в себе базовые типы для работы с сетевыми запросами: HTTPRequest, HTTPResponse, HTTPFields, конвертеры в аналогичные типы в Foundation и хелперы для URLSession.

Основная идея – иметь единую библиотеку и для клиента, и для сервера, чтобы было проще шарить одинаковый код.
Недостатки SwiftPM при шаринге общих модулей между проектами

Женя Ртищев рассказал про то, как он пытался красиво разложить общий код своих проектов по нескольким пакетам, и затягивать их к себе из приватного репозитория.
Вакансия для тех, кто хочет работать с видео и AI

Ребята из 4spaces ищут iOS разработчиков на три приложения: редактор видео для рилсов/тиктока, создание медиаконтента с помощью AI и фоторедактор, тоже на базе AI. Приложения уже были в топе в нескольких странах в App Store. Требования довольно стандартные для любого айосера мидла. А если вы работали с AVFoundation, Metal, или набрались опыта по настройке CI/CD, то это будет значительным плюсом. Ах, да – вакансия полностью удаленная, а на весь процесс собеса ребята обещают потратить не больше 2 часов вашего времени!
Названия макросов теперь зарезервированы

Если вы использовали какое-то слово для названия макроса, при попытке использовать его же в названии объекта вы получите неочевидную ошибку – No macro named xxx. Пример – макрос #Preview.
Подходы к тестированию в Reddit

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

👉1800 UI тестов, написанных поверх XCUITest. Они покрывают фичи, аналитику, пуши, эксперименты, локализацию и перфоманс.
👉Небольшой набор из этих тестов гоняется на PR, чтобы не пропускать критичные баги. В среднем занимает 16 минут. Полный сьют тестов гоняется по ночам, и занимает пару часов.
👉Для проверки локализации используется тот же самый набор функциональных кейсов, который оверрайдится настройкой локали.
👉Стабильность тестов держится на уровне 90%. Если какие-то тесты флакуют чаще ожиданий, они отправляются на карантин специальным сервисом.
Unidirectional Flow в Swift

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

В Xcode 15 появились закладки, с помощью которых можно размечать важные места в коде. По умолчанию закладки шарить нельзя, но если вы захотите это сделать – они хранятся в папке xcuserdata, которая, скорее всего, лежит у вас в .gitignore. Закладки лежат в подпапках для каждого пользователя.
Как уменьшить время прогона тестов в два раза

Команда приложения Qonto, у которого написано 9.000 тестов, на прогон которых уходит 19 минут, поделились рекомендациями, которые помогли им срезать время прогона в два раза. В основном все крутится вокруг оптимизации генерации моков библиотеки SwiftyMocky.
Кейс адаптации приложения под visionOS

David Smith рассказывает, как он поэтапно адаптирует одно из своих приложений под visionOS, экспериментируя с различными подходами к его дизайну.
Как выбирать имена ключам UserDefaults

Автор поста пишет про частую практику, которую я тоже замечал – добавлять к названиям ключей UserDefaults префикс с Bundle ID приложения. На самом деле, это не имеет практически никакого смысла – plist с этими настройками уже лежит в папке с вашим Bundle ID.

Совет очевидный, но к статье накидали интересных комментов, когда коллизии все-таки возможны:

- Когда вы шарите UserDefaults с каким-то экстеншном.
- При использовании ключей, которые в UserDefaults сохраняет SwiftUI или AppKit.
- При использовании библиотеки, которая втихую пишет что-то в UserDefaults со своими ключами.
Рекомендации по работе с OSLog

Статья с рекомендациями по организации работы с OSLog:

📐Выравнивание данных с помощью alignment APIs
🌡️Уровни логирования и их визуализация
🔎Разные фичи Console.app
Инструкция по чекауту SPM зависимостей в репозиторий проекта

По умолчанию SwiftPM, в отличие от CocoaPods, не скачивает все зависимости прямо в папку проекта. Из-за этого на CI тратится значительно больше времени. В статье разбирается, как написать скрипт, который будет клонировать нужные зависимости в репозиторий, с минимизацией потребляемого места на диске.
Swift Macro Toolkit

Набор хелперов, которые упрощают написание макросов. Например, позволяют не писать вручную обработку всех возможных представлений чисел с плавающей точкой (вдруг в макросе кто-то захочет использовать число -0xF_ep-0_2).