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

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

Размещение рекламы: @tanyasanovna
Download Telegram
Разбор ExtensionKit

ExtensionKit – новый фреймворк iOS 16, который позволяет реализовывать плагины для системных приложений или реализовывать собственнцю плагинную систему. Второе, правда, доступно только для macOS.

1️⃣Вы объявляете extension points в своем приложенит
2️⃣Этот API используется вами или сторонними разработчиками, чтобы интегрировать плагины, как с UI, так и без него
3️⃣Общение между хостом и плагином идет через XPC
4️⃣Распространять плагины можно только внутри .app, так что теоретически их даже в App Store залить можно
Xcode Cloud доступен для всех

- Xcode Cloud – новый сервис для CI/CD от Apple, который последний год крутился в закрытой бете
- 25 часов работы агентов в месяц бесплатны
- 100 часов работы в месяц – 50$
- 250 часов работы в месяц – 100$
- 1000 часов работы в месяц – 400$
Maestro – новый фреймворк для автоматизации UI тестов

Ключевая особенность – тест описывается не в коде, а в yaml файле. Создатели говорят, что на уровне core концепций зашили следующие вещи:

- Обработку флакующих сценариев и элементов интерфейса
- Тестирование задач с асинхронными компонентами
- Супер-быстрый раундтрип за счет того, что тесты интерпретируемые
- Очень быстрый сетап

Пока выглядит как решение только для очень простых случаев. К тому же yaml – очень-очень спорный формат. Если кто-то попробует – расскажите в комментах про результаты!
Навигация на стейт-машине

Revolut рассказывают, как устроена стейт-машина в их приложении, управляющая всей навигацией, и упрощающая работу с пошаговыми флоу.
Как реализовать поддержку lock screen виджетов

- API для работы с lock screen виджетами тот же самый, что и для home screen виджетов. Если вы уже поддержали их, все будет сильно проще
- Важно помнить про три разных режима рендеринга виджетов и подстраиваться под них: full-color mode, vibrant mode, accented mode
У Podlodka Crew акция! До 10 сентября на все плейлисты с записями конференций скидка до 20% по промокоду SCHOOL_TIME!🤑

Podlodka Crew – это онлайновые IT-конференции по самым разным направлениям: Android, iOS, Frontend, Backend-разработка, QA, тим- и техлидство, софтскиллы и даже дизайн и продукт! В программе конференций всегда особый упор сделан на прикладные навыки, а значит, даже после окончания сезона есть смысл пересмотреть самые полезные видео и попробовать что-то новое у себя на работе. Поэтому доступ к десяткам часов контента от Podlodka Crew – это отличная инвестиция в свою карьеру и профессиональный кругозор.

Переходите по ссылке ниже, выбирайте плейлисты, вводите промокод SCHOOL_TIME и смотрите записи Podlodka Crew. Отличной учебы!🧑‍🎓
https://podlodka.io/crew-records
Особенности работы со SwiftUI на macOS

Автор приложения Pulse, про которое я рассказывал на прошлой неделе, рассказывает про свой опыт портирования приложения с iOS на macOS.

- Советы по работе с колоночным лэйаутом и навигацией
- Менеджмент окон
- Реализация поиска в списках
- Создание собственного TextView
- Диплинки
Официальная книга про Swift теперь в Open Source

- Apple вынесли свою книгу «The Swift Programming Language» в опенсорс
- Вся книга собирается с помощью DocC – это крутой шаг для инструмента, изначально предполагавшегося только для генерации API reference
Разбор рефакторингов Xcode для async/await

В Xcode есть три рефакторинга, которые помогают конвертить код в поддерживающий Swift Concurrency.

- Convert Function to Async
- Add Async Alternative
- Add Async Wrapper
ViewInspector – библиотека для юнит-тестирования SwiftUI

ViewInspector проходится по графу вьюх и дает прямой доступ к их свойствам и стейту. Библиотека не использует приватный API, работает целиком с помощью рефлексии.
Xcode Playground со всеми фичами Swift 5.7

К релизу iOS 16 Paul Hudson обновил свой обзорный пост по всем изменениям в Swift. А для тех, кто предпочитает все потрогать руками – подготовил Xcode плейграунд.
This media is not supported in your browser
VIEW IN TELEGRAM
DeckUI – Swift DSL для создания презентаций

Простой DSl на Swift, с помощью которого собирается десктопное приложение, ведущее себя как слайды. Идеально для выступлений на митапах!
Новые Toolbar APIs в SwiftUI

- Модификаторы видимости, которые позволяют управлять отображением любых тулбаров: navigation, tab и bottom
- Модификаторы видимости бэкграунда тулбара, с помощью которых можно делать классные анимации
- Управление цветовой схемой каждого тулбара в отдельности
- Отображение контекстного меню по нажатию на заголовок
История про то, как крупный опенсорсный проект переехал с лицензии Apache на BSL и стал платным

- Akka – микросервисный реактивный фреймворк, который распространялся по бесплатной лицензии Apache 2.0
- Им пользуется очень много людей, включая крупные корпорации вроде Disney
- На этой неделе его автор решил поменять лицензию на BSL 1.1, которая требует оплаты за коммерческое использование
- Лицензия применяется только к новым релизам фреймворка
- Такая ситуация может произойти и для любой мобильной зависимости. Поэтому, когда вы решаете построить все приложение поверх какого-то чужого опенсорс проекта, такой риск тоже стоит держать в уме
Не используйте escaping closures в SwiftUI

Автор показывает, как использование escaping closures в SwiftUI, которое многим может показаться более эффективным, на самом деле ломает memoization.
MarkCodable – сериализация Swift структур в Markdown

- Markdown – менее гибкий формат, чем JSON, но его можно использовать для хранения структурных данных. Его главный плюс – хорошая читаемость из коробки
- Сверстанные в markdown таблицы могут выступать в роли простой базы данных. А если залить их на GitHub, то вы получите готовый бэкенд для приложения
- Другие примеры использования Markdown-структур – конфигурационные файлы, хранение моков для тестов
Шаблон Figma для Dynamic Island

Забирайте готовый шаблон для создания виджета с анимированным переходом.