Что видят пользователи неподдерживаемых версий OS в App Store
Когда вы предложите своему продакту дропнуть поддержку старых версий iOS, он скорее всего спросит, как именно будет выглядеть опыт тех, кто на них все еще сидит. По ссылке собрали скриншоты и ответы на другие частые вопросы.
Когда вы предложите своему продакту дропнуть поддержку старых версий iOS, он скорее всего спросит, как именно будет выглядеть опыт тех, кто на них все еще сидит. По ссылке собрали скриншоты и ответы на другие частые вопросы.
Apple Push Notifications Console
Apple выпустили новый сервис для тестирования push уведомлений. С его помощью можно отправлять тестовые пуши с любым пэйлоадом на конкретные девайсы, видеть детальные логи процесса доставки, проверять ваши токены.
Apple выпустили новый сервис для тестирования push уведомлений. С его помощью можно отправлять тестовые пуши с любым пэйлоадом на конкретные девайсы, видеть детальные логи процесса доставки, проверять ваши токены.
Разбор новых фичей Figma
👉Переменные, которые могут представлять цвета, размеры, эффекты, типографику и локализованные строки.
👉Новые настройки автолейаута, с помощью которых можно прямо в Figma делать адаптивный дизайн.
👉Новый Developer Mode, который позволяет готовить экраны для передачи их разработчикам.
👉Песочница компонентов, в которой дизайнер может легко переключать разные настройки экспортируемых компонентов и смотреть, как они себя ведут в граничных состояниях.
👉Поддержка в VSCode для работы с макетом прямо в IDE.
👉Плагины для экспорта дизайна в код на любом фреймворке.
👉Переменные, которые могут представлять цвета, размеры, эффекты, типографику и локализованные строки.
👉Новые настройки автолейаута, с помощью которых можно прямо в Figma делать адаптивный дизайн.
👉Новый Developer Mode, который позволяет готовить экраны для передачи их разработчикам.
👉Песочница компонентов, в которой дизайнер может легко переключать разные настройки экспортируемых компонентов и смотреть, как они себя ведут в граничных состояниях.
👉Поддержка в VSCode для работы с макетом прямо в IDE.
👉Плагины для экспорта дизайна в код на любом фреймворке.
Новая библиотека от Apple – swift-http-types
Библиотека содержит в себе базовые типы для работы с сетевыми запросами:
Основная идея – иметь единую библиотеку и для клиента, и для сервера, чтобы было проще шарить одинаковый код.
Библиотека содержит в себе базовые типы для работы с сетевыми запросами:
HTTPRequest
, HTTPResponse
, HTTPFields
, конвертеры в аналогичные типы в Foundation и хелперы для URLSession
. Основная идея – иметь единую библиотеку и для клиента, и для сервера, чтобы было проще шарить одинаковый код.
Недостатки SwiftPM при шаринге общих модулей между проектами
Женя Ртищев рассказал про то, как он пытался красиво разложить общий код своих проектов по нескольким пакетам, и затягивать их к себе из приватного репозитория.
Женя Ртищев рассказал про то, как он пытался красиво разложить общий код своих проектов по нескольким пакетам, и затягивать их к себе из приватного репозитория.
Как тестируют в 100 компаниях
Реаозиторий с подборкой ресурсов о том, как организовано тестирование и CI/CD мобильных приложений в очень разных компаниях. В списке есть Netflix, Reddit, Revolut и Uber.
Реаозиторий с подборкой ресурсов о том, как организовано тестирование и CI/CD мобильных приложений в очень разных компаниях. В списке есть Netflix, Reddit, Revolut и Uber.
GitHub
GitHub - testableapple/how-they-automate-on-mobile: A curated collection of publicly available resources on how software companies…
A curated collection of publicly available resources on how software companies implement automation on iOS and Android platforms 📱🚢 - testableapple/how-they-automate-on-mobile
Вакансия для тех, кто хочет работать с видео и AI
Ребята из 4spaces ищут iOS разработчиков на три приложения: редактор видео для рилсов/тиктока, создание медиаконтента с помощью AI и фоторедактор, тоже на базе AI. Приложения уже были в топе в нескольких странах в App Store. Требования довольно стандартные для любого айосера мидла. А если вы работали с AVFoundation, Metal, или набрались опыта по настройке CI/CD, то это будет значительным плюсом. Ах, да – вакансия полностью удаленная, а на весь процесс собеса ребята обещают потратить не больше 2 часов вашего времени!
Ребята из 4spaces ищут iOS разработчиков на три приложения: редактор видео для рилсов/тиктока, создание медиаконтента с помощью AI и фоторедактор, тоже на базе AI. Приложения уже были в топе в нескольких странах в App Store. Требования довольно стандартные для любого айосера мидла. А если вы работали с AVFoundation, Metal, или набрались опыта по настройке CI/CD, то это будет значительным плюсом. Ах, да – вакансия полностью удаленная, а на весь процесс собеса ребята обещают потратить не больше 2 часов вашего времени!
Названия макросов теперь зарезервированы
Если вы использовали какое-то слово для названия макроса, при попытке использовать его же в названии объекта вы получите неочевидную ошибку –
Если вы использовали какое-то слово для названия макроса, при попытке использовать его же в названии объекта вы получите неочевидную ошибку –
No macro named xxx
. Пример – макрос #Preview
.Подходы к тестированию в Reddit
Во вчерашнюю подборку Reddit попал совсем недавно, когда они написали подробную статью про свою стратегию тестирования. Основные хайлайты того, что команда достигла за год:
👉1800 UI тестов, написанных поверх
👉Небольшой набор из этих тестов гоняется на PR, чтобы не пропускать критичные баги. В среднем занимает 16 минут. Полный сьют тестов гоняется по ночам, и занимает пару часов.
👉Для проверки локализации используется тот же самый набор функциональных кейсов, который оверрайдится настройкой локали.
👉Стабильность тестов держится на уровне 90%. Если какие-то тесты флакуют чаще ожиданий, они отправляются на карантин специальным сервисом.
Во вчерашнюю подборку Reddit попал совсем недавно, когда они написали подробную статью про свою стратегию тестирования. Основные хайлайты того, что команда достигла за год:
👉1800 UI тестов, написанных поверх
XCUITest
. Они покрывают фичи, аналитику, пуши, эксперименты, локализацию и перфоманс.👉Небольшой набор из этих тестов гоняется на PR, чтобы не пропускать критичные баги. В среднем занимает 16 минут. Полный сьют тестов гоняется по ночам, и занимает пару часов.
👉Для проверки локализации используется тот же самый набор функциональных кейсов, который оверрайдится настройкой локали.
👉Стабильность тестов держится на уровне 90%. Если какие-то тесты флакуют чаще ожиданий, они отправляются на карантин специальным сервисом.
Unidirectional Flow в Swift
Обзор того, как с помощью новых языковых фичей реализовать UDF-архитектуру, обладающую следующими свойствами: предсказуемость, тестируемость, поддержка превью, удобство дебага, модульность. Реализация есть на GitHub.
Обзор того, как с помощью новых языковых фичей реализовать UDF-архитектуру, обладающую следующими свойствами: предсказуемость, тестируемость, поддержка превью, удобство дебага, модульность. Реализация есть на GitHub.
Swift with Majid
Unidirectional flow in Swift
This week I will talk about the state management approach I have used in my apps for years. We will cover building a predictable, testable, debuggable, and modular state management system in Swift.
Как шарить закладки в Xcode
В Xcode 15 появились закладки, с помощью которых можно размечать важные места в коде. По умолчанию закладки шарить нельзя, но если вы захотите это сделать – они хранятся в папке
В Xcode 15 появились закладки, с помощью которых можно размечать важные места в коде. По умолчанию закладки шарить нельзя, но если вы захотите это сделать – они хранятся в папке
xcuserdata
, которая, скорее всего, лежит у вас в .gitignore. Закладки лежат в подпапках для каждого пользователя.Как уменьшить время прогона тестов в два раза
Команда приложения Qonto, у которого написано 9.000 тестов, на прогон которых уходит 19 минут, поделились рекомендациями, которые помогли им срезать время прогона в два раза. В основном все крутится вокруг оптимизации генерации моков библиотеки SwiftyMocky.
Команда приложения Qonto, у которого написано 9.000 тестов, на прогон которых уходит 19 минут, поделились рекомендациями, которые помогли им срезать время прогона в два раза. В основном все крутится вокруг оптимизации генерации моков библиотеки SwiftyMocky.
Medium
Unleashing the power of efficiency: Dramatic reduction in test build times
Why unit testing is important at Qonto
Кейс адаптации приложения под visionOS
David Smith рассказывает, как он поэтапно адаптирует одно из своих приложений под visionOS, экспериментируя с различными подходами к его дизайну.
David Smith рассказывает, как он поэтапно адаптирует одно из своих приложений под visionOS, экспериментируя с различными подходами к его дизайну.
Как выбирать имена ключам UserDefaults
Автор поста пишет про частую практику, которую я тоже замечал – добавлять к названиям ключей UserDefaults префикс с Bundle ID приложения. На самом деле, это не имеет практически никакого смысла – plist с этими настройками уже лежит в папке с вашим Bundle ID.
Совет очевидный, но к статье накидали интересных комментов, когда коллизии все-таки возможны:
- Когда вы шарите UserDefaults с каким-то экстеншном.
- При использовании ключей, которые в UserDefaults сохраняет SwiftUI или AppKit.
- При использовании библиотеки, которая втихую пишет что-то в UserDefaults со своими ключами.
Автор поста пишет про частую практику, которую я тоже замечал – добавлять к названиям ключей UserDefaults префикс с Bundle ID приложения. На самом деле, это не имеет практически никакого смысла – plist с этими настройками уже лежит в папке с вашим Bundle ID.
Совет очевидный, но к статье накидали интересных комментов, когда коллизии все-таки возможны:
- Когда вы шарите UserDefaults с каким-то экстеншном.
- При использовании ключей, которые в UserDefaults сохраняет SwiftUI или AppKit.
- При использовании библиотеки, которая втихую пишет что-то в UserDefaults со своими ключами.
Jesse Squires
Stop prefixing your UserDefaults keys
UserDefaults is probably one of the most popular APIs on Apple Platforms. It is a highly-optimized key-value persisted store that is backed by a property lis...
Рекомендации по работе с OSLog
Статья с рекомендациями по организации работы с OSLog:
📐Выравнивание данных с помощью alignment APIs
🌡️Уровни логирования и их визуализация
🔎Разные фичи Console.app
Статья с рекомендациями по организации работы с OSLog:
📐Выравнивание данных с помощью alignment APIs
🌡️Уровни логирования и их визуализация
🔎Разные фичи Console.app
Инструкция по чекауту SPM зависимостей в репозиторий проекта
По умолчанию SwiftPM, в отличие от CocoaPods, не скачивает все зависимости прямо в папку проекта. Из-за этого на CI тратится значительно больше времени. В статье разбирается, как написать скрипт, который будет клонировать нужные зависимости в репозиторий, с минимизацией потребляемого места на диске.
По умолчанию SwiftPM, в отличие от CocoaPods, не скачивает все зависимости прямо в папку проекта. Из-за этого на CI тратится значительно больше времени. В статье разбирается, как написать скрипт, который будет клонировать нужные зависимости в репозиторий, с минимизацией потребляемого места на диске.
Medium
How to Use Swift Package Manager to Save Gigabytes of Network Traffic and Disk Space
Use SPM to store dependency checkouts in a repository and do it better than CocoaPods
Swift Macro Toolkit
Набор хелперов, которые упрощают написание макросов. Например, позволяют не писать вручную обработку всех возможных представлений чисел с плавающей точкой (вдруг в макросе кто-то захочет использовать число
Набор хелперов, которые упрощают написание макросов. Например, позволяют не писать вручную обработку всех возможных представлений чисел с плавающей точкой (вдруг в макросе кто-то захочет использовать число
-0xF_ep-0_2
).