Изображения в Localizable.strings
Если добавить название изображения в Localizable.strings, SwiftUI автоматически подцепит локализованную строчку как accessibility label.
Если добавить название изображения в Localizable.strings, SwiftUI автоматически подцепит локализованную строчку как accessibility label.
Тренды iOS разработки в 2022
Обзор изменений в нескольких областях экосистемы, которые по мнению автора являются ключевыми в этом и следующем году:
🎨SwiftUI
🔃Unidirectional flow
🧱Modularization
👀Testing
😎Accessibility
Обзор изменений в нескольких областях экосистемы, которые по мнению автора являются ключевыми в этом и следующем году:
🎨SwiftUI
🔃Unidirectional flow
🧱Modularization
👀Testing
😎Accessibility
Swift with Majid
iOS development trends in review
2022 has come to an end, and it is a perfect time for retrospective analysis. Today I want to review trends in iOS development over the past year that I notice while building my own apps or consulting others.
Дизайн макросов выражений в Swift
Помните опубликованный в прошлом году вижн макросов в Swift? Ждать придется не очень долго. На ревью уже находится подробный дизайн и прототипная реализация одной из составляющих – макросов выражений.
Expression macro – это специальный код, начинающийся со знака #, который при компиляции разворачивается в какое-то выражение. У таких макросов есть доступ к синтаксическому дереву программы, как на чтение, так и на изменение. По сути, они заменяют собой любые внешние кодогенераторы.
Репозиторий с примерами макросов
Помните опубликованный в прошлом году вижн макросов в Swift? Ждать придется не очень долго. На ревью уже находится подробный дизайн и прототипная реализация одной из составляющих – макросов выражений.
Expression macro – это специальный код, начинающийся со знака #, который при компиляции разворачивается в какое-то выражение. У таких макросов есть доступ к синтаксическому дереву программы, как на чтение, так и на изменение. По сути, они заменяют собой любые внешние кодогенераторы.
Репозиторий с примерами макросов
GitHub
swift-evolution/proposals/0382-expression-macros.md at main · swiftlang/swift-evolution
This maintains proposals for changes and user-visible enhancements to the Swift Programming Language. - swiftlang/swift-evolution
Знакомство с Flutter для iOS разработчиков
Команда Flutter добавила в документацию специальный раздел, который помогает iOS разработчикам познакомиться с фреймворком, сравнив его основные концепции и компоненты с аналогичными в SwiftUI или UIKit.
Похожий документ есть и для языка Dart, где его сравнивают со Swift.
Команда Flutter добавила в документацию специальный раздел, который помогает iOS разработчикам познакомиться с фреймворком, сравнив его основные концепции и компоненты с аналогичными в SwiftUI или UIKit.
Похожий документ есть и для языка Dart, где его сравнивают со Swift.
This media is not supported in your browser
VIEW IN TELEGRAM
Как запустить iPhoneOS 1.0 на эмуляторе QEMU
На QEMU запустили полноценную эмуляцию первого iPod Touch с рендерингом девайса и мультитачем. В статье – много деталей про то, как устроены кишочки загрузки операционной системы и куча ссылок для тех, кто захочет закопаться поподробнее.
На QEMU запустили полноценную эмуляцию первого iPod Touch с рендерингом девайса и мультитачем. В статье – много деталей про то, как устроены кишочки загрузки операционной системы и куча ссылок для тех, кто захочет закопаться поподробнее.
Расскажите, чего хотите от Подлодки в 2023
Команда Podlodka iOS Crew собирает идеи того, как можно улучшить конференции. Если вы приходили на прошлые сезоны или смотрели какие-то видео, проходите небольшой опрос. А заодно, если вам есть чем поделиться, или вы готовы ворваться в программный комитет, оставляйте свои контакты!
Команда Podlodka iOS Crew собирает идеи того, как можно улучшить конференции. Если вы приходили на прошлые сезоны или смотрели какие-то видео, проходите небольшой опрос. А заодно, если вам есть чем поделиться, или вы готовы ворваться в программный комитет, оставляйте свои контакты!
Google Docs
Podlodka iOS Crew 2023
Привет,
Мы собираем инсайты, идеи, а также желающих поделиться своими знаниями и опыт (в качестве и спикеров, и участников ПК)
Мы собираем инсайты, идеи, а также желающих поделиться своими знаниями и опыт (в качестве и спикеров, и участников ПК)
Первые подробные слухи про Apple Glasses
- Батарея для очков будет носиться на поясе, очки к ней будут подключаться по MagSafe. Заряда должно хватать на два часа.
- Справа будет находиться Digital Crown, использующаяся для переключения между VR и обычным зрением.
- Вроде как будут две версии ремешка для очков: для проствх пользователей и для разработчиков, но в чем будет отличие, пока не понятно.
- Если вам нужны линзы с плюсом/минусом, они будут крепиться на магнитах.
- Моторчики будут подгонять конструкцию под удобную для вас зрительную дистанцию.
- Существующие iOS приложения будут запускаться в 2D режиме, что бы это ни значило.
- Основными методами управления будут голосовое и hand-tracking. Отдельного игрового контроллера не будет.
- На внешней части устройства будет экран, который показывает окружающим эмоции того, кто носит очки.
- Цена, кажется, будет в районе 3000$.
- Батарея для очков будет носиться на поясе, очки к ней будут подключаться по MagSafe. Заряда должно хватать на два часа.
- Справа будет находиться Digital Crown, использующаяся для переключения между VR и обычным зрением.
- Вроде как будут две версии ремешка для очков: для проствх пользователей и для разработчиков, но в чем будет отличие, пока не понятно.
- Если вам нужны линзы с плюсом/минусом, они будут крепиться на магнитах.
- Моторчики будут подгонять конструкцию под удобную для вас зрительную дистанцию.
- Существующие iOS приложения будут запускаться в 2D режиме, что бы это ни значило.
- Основными методами управления будут голосовое и hand-tracking. Отдельного игрового контроллера не будет.
- На внешней части устройства будет экран, который показывает окружающим эмоции того, кто носит очки.
- Цена, кажется, будет в районе 3000$.
Как работает модификатор aspectRatio
Aspect Ratio в SwiftUI часто работает не так, как от него ожидается. Чтобы разобраться в том, как именно его использование влияет на процесс лэйаута, автор проводит серию экспериментов.
Aspect Ratio в SwiftUI часто работает не так, как от него ожидается. Чтобы разобраться в том, как именно его использование влияет на процесс лэйаута, автор проводит серию экспериментов.
Курсы для начинающих айосеров от Apple
Apple решили собрать свой набор видеоуроков для тех, кто только вкатывается в iOS.
🎨SwiftUI: интерфейсы, навигация, управление стейтом, хранение данных, многопоточность
🧱UIKit: работа с коллекциями, анимации, системные фреймворки
🛠️Работа с сетью и тесты
В процессе прохождения курса разрабатывается несколько учебных проектов. Курс расчитан на 15 часов.
Apple решили собрать свой набор видеоуроков для тех, кто только вкатывается в iOS.
🎨SwiftUI: интерфейсы, навигация, управление стейтом, хранение данных, многопоточность
🧱UIKit: работа с коллекциями, анимации, системные фреймворки
🛠️Работа с сетью и тесты
В процессе прохождения курса разрабатывается несколько учебных проектов. Курс расчитан на 15 часов.
Если ИТ – это ваш конек, то Тинькофф ждет вас 23 января на катке в московском Парке Горького!
Ледовый ИТ-квест, нетворкинг, дискуссии со спикерами в теплом шатре и многое другое. Вечер точно будет насыщенным и приятным. За коньки не беспокойтесь — их выдадут бесплатно.
Не медлите, регистрируйтесь сами и зовите коллег — будет весело!
Ледовый ИТ-квест, нетворкинг, дискуссии со спикерами в теплом шатре и многое другое. Вечер точно будет насыщенным и приятным. За коньки не беспокойтесь — их выдадут бесплатно.
Не медлите, регистрируйтесь сами и зовите коллег — будет весело!
Как предоставлять Export Compliance Information
Помните тот вопрос, который App Store Connect задает каждый раз при заливе новой версии: «Does your app use encryption?» Держите максимально подробный гайд про то, как следует себя вести.
*️⃣В большинстве случаев, если вы не заполните self-classification report, ничего страшного не случится. Но формально это требуется обязательно, даже если вы просто используете https или встроенные в SDK криптографические алгоритмы.
*️⃣Для бесплатных приложений отчет требуется заполнять только один раз, для платных – каждый год. Заполнить и отправить отчет надо в промежуток с 1 января до 1 февраля.
*️⃣Сгенерировать отчет можно здесь. После этого его надо будет отправить на почты [email protected] и [email protected].
*️⃣Если вы не успели отправить отчеты – не критично. Подождите до следующего 1 января.
Перевод на русский язык
Помните тот вопрос, который App Store Connect задает каждый раз при заливе новой версии: «Does your app use encryption?» Держите максимально подробный гайд про то, как следует себя вести.
*️⃣В большинстве случаев, если вы не заполните self-classification report, ничего страшного не случится. Но формально это требуется обязательно, даже если вы просто используете https или встроенные в SDK криптографические алгоритмы.
*️⃣Для бесплатных приложений отчет требуется заполнять только один раз, для платных – каждый год. Заполнить и отправить отчет надо в промежуток с 1 января до 1 февраля.
*️⃣Сгенерировать отчет можно здесь. После этого его надо будет отправить на почты [email protected] и [email protected].
*️⃣Если вы не успели отправить отчеты – не критично. Подождите до следующего 1 января.
Перевод на русский язык
annual-self-classification-report.github.io
BIS Annual Self-Classification Report Generator
Fill in the form, and generate a report. Could it be any simpler?
This media is not supported in your browser
VIEW IN TELEGRAM
Коллекция SwiftUI анимаций
Большая подборка сниппетов с анимациями на SwiftUI. Некоторые из них повторяют поведение системных компонентов, а некоторые – уникальные.
Большая подборка сниппетов с анимациями на SwiftUI. Некоторые из них повторяют поведение системных компонентов, а некоторые – уникальные.
Подходы к тестированию в больших компаниях
Огромное обсуждение на форуме Mobile Native Foundation про то, как разные крупные компании подходят к организации тестирования. Ветка довольно старая, но в ней периодически появляются новые истории. Вот несколько интересных хайлайтов:
✨Испанцы Karumi выложили в опенсорс свои гайды по тестированию (скриншотные тесты, property-based тесты, HTTP стабы)
✨В Spotify 32.000 тестов разных видов.
✨Target получают большую часть полезного фидбэка не от тестов, а от программы Beta тестирования в TestFlight.
Если вы занимаетесь организацией процессов релизов или тестирования, то в любом случае рекомендую прочитать всю ветку.
Огромное обсуждение на форуме Mobile Native Foundation про то, как разные крупные компании подходят к организации тестирования. Ветка довольно старая, но в ней периодически появляются новые истории. Вот несколько интересных хайлайтов:
✨Испанцы Karumi выложили в опенсорс свои гайды по тестированию (скриншотные тесты, property-based тесты, HTTP стабы)
✨В Spotify 32.000 тестов разных видов.
✨Target получают большую часть полезного фидбэка не от тестов, а от программы Beta тестирования в TestFlight.
Если вы занимаетесь организацией процессов релизов или тестирования, то в любом случае рекомендую прочитать всю ветку.
GitHub
Testing strategies · MobileNativeFoundation/discussions · Discussion #6
I'm curious to hear from folks about their general testing strategies, automated or manual, and what has been the most useful over time for your apps.
7 февраля протухает WWDR сертификат для валидации покупок
🤔Кого затронет проблема:
Тех, кто валидирует покупки, не используя AppTransaction/Transaction API или серверную ручку verifyReceipt, а вместо этого хардкодит сертификат в приложении и проверяет покупку в клиентском коде.
💻Что делать:
- В идеале – отказаться от хардкода сертификата и выбрать один из рекомендуемых методов валидации.
- В худшем случае – обновить захардкоженный сертификат и вспомнить о проблеме снова через несколько лет.
Перевод на русский язык
🤔Кого затронет проблема:
Тех, кто валидирует покупки, не используя AppTransaction/Transaction API или серверную ручку verifyReceipt, а вместо этого хардкодит сертификат в приложении и проверяет покупку в клиентском коде.
💻Что делать:
- В идеале – отказаться от хардкода сертификата и выбрать один из рекомендуемых методов валидации.
- В худшем случае – обновить захардкоженный сертификат и вспомнить о проблеме снова через несколько лет.
Перевод на русский язык
Revenuecat
App Store receipt signing certificate changes in 2023
In February of 2023, your hardcoded WWDR intermediate certificate for App Store receipt signing will stop working. This is how you fix it
Breaking changes в Swift 6
Разработчики Swift стараются развивать язык, не ломая обратную совместимость на уровне исходников. Это значит, что код, компилируемый Swift 4, будет собираться и Swift 5. Для примера, появление Swift Concurrency ничего не сломало в старом коде.
В Swift 6 должно выкатиться много важных для языка изменений, ради которых готовы пожертвовать обратной совместимостью. Большая их часть касается одной из трех областей:
🏇Data-race safety by default
🏎️Performance predictability
🧱Package ecosystem scalability
В Swift 5.8 появится возможность включить часть из этих ломающих фичей, чтобы вы могли заранее подготовить свою кодовую базу к миграции. Но времени еще много, Swift 6 стоит ждать не раньше, чем через год.
Разработчики Swift стараются развивать язык, не ломая обратную совместимость на уровне исходников. Это значит, что код, компилируемый Swift 4, будет собираться и Swift 5. Для примера, появление Swift Concurrency ничего не сломало в старом коде.
В Swift 6 должно выкатиться много важных для языка изменений, ради которых готовы пожертвовать обратной совместимостью. Большая их часть касается одной из трех областей:
🏇Data-race safety by default
🏎️Performance predictability
🧱Package ecosystem scalability
В Swift 5.8 появится возможность включить часть из этих ломающих фичей, чтобы вы могли заранее подготовить свою кодовую базу к миграции. Но времени еще много, Swift 6 стоит ждать не раньше, чем через год.
Swift Forums
Design Priorities for the Swift 6 Language Mode
As Swift evolves, it gains new features and enhancements as govered by the Swift Evolution process. Once implemented, new features become available in new versions of the tools, e.g., async/await was first available in the Swift 5.5 tools, and one will need…
Обзор линкеров для iOS/macOS
- Линкинг – один из этапов билда, на который может уходить довольно много времени, особенно в случае больших приложений. Если вы оптимизируете скорость сборки, это один из кандидатов на улучшение.
- Apple долгое время не вкладывались в ускорение своего основного линкера, ld64. В 2020 году автор выпустил свой форк этого линкера, zld, который работал на 40% быстрее.
- С тех пор появился третий проект, lld, который в основном поддерживается Google и Meta. Кроме того, Apple существенно улучшили ld64, и постепенно набирает обороты быстрый коммерческий линкер sold.
- Сейчас, если вы хотите получить более быстрый линкинг, разумнее всего использовать lld. Это может вам дать ускорение на 50-80%. Обратите внимание – это верно для дебажных билдов, релизные лучше собирать стандартным линкером.
- В статье автор рассказывает, почему решил прекратить поддержку своего линкера, и насыпает много ссылок про технические детали.
Перевод на русский язык
- Линкинг – один из этапов билда, на который может уходить довольно много времени, особенно в случае больших приложений. Если вы оптимизируете скорость сборки, это один из кандидатов на улучшение.
- Apple долгое время не вкладывались в ускорение своего основного линкера, ld64. В 2020 году автор выпустил свой форк этого линкера, zld, который работал на 40% быстрее.
- С тех пор появился третий проект, lld, который в основном поддерживается Google и Meta. Кроме того, Apple существенно улучшили ld64, и постепенно набирает обороты быстрый коммерческий линкер sold.
- Сейчас, если вы хотите получить более быстрый линкинг, разумнее всего использовать lld. Это может вам дать ускорение на 50-80%. Обратите внимание – это верно для дебажных билдов, релизные лучше собирать стандартным линкером.
- В статье автор рассказывает, почему решил прекратить поддержку своего линкера, и насыпает много ссылок про технические детали.
Перевод на русский язык
Michael Eisel’s Blog
Faster Apple Builds with the lld Linker
Update: with the release of ld-prime, the new default linker, lld is no longer necessarily the fastest option
This media is not supported in your browser
VIEW IN TELEGRAM
Новые фичи автокомплита кода в Xcode 14
- Генерация предзаполненных инициализаторов для структур
- Генерация бойлерплейта для Codable
- Корректная обработка параметров структур, у которых есть дефолтное значение
- Автоподстановка аргументов в функцию map, основываясь на названии создаваемой переменной (как в гифке в заголовке)
- Автоматическое выравнивание кода в блоках
Это только часть изменений, все остальные – в статье. У Xcode куча проблем, но попробовать новые фичи все равно стоит – они могут упростить некоторые частве сценарии и сделать вашу жизнь чуть лучше.
Перевод на русский язык
- Генерация предзаполненных инициализаторов для структур
- Генерация бойлерплейта для Codable
- Корректная обработка параметров структур, у которых есть дефолтное значение
- Автоподстановка аргументов в функцию map, основываясь на названии создаваемой переменной (как в гифке в заголовке)
- Автоматическое выравнивание кода в блоках
Это только часть изменений, все остальные – в статье. У Xcode куча проблем, но попробовать новые фичи все равно стоит – они могут упростить некоторые частве сценарии и сделать вашу жизнь чуть лучше.
Перевод на русский язык
Как поддержать несколько разных виджетов в одном приложении
- Apple предлагает два подхода к поддержке нескольких виджетов: использовать widget bundle или создавать несколько разных widget extensions.
- У бандла есть ограничение на 10 виджетов внутри. Его теоретически можно обойти.
- Apple рекомендует в большинстве случаев использовать бандлы, а ко второму способу обращаться только в специфичных случаях. Например, когда только одному из них для работы требуется какой-то пермишн от пользователя.
Перевод на русский язык
- Apple предлагает два подхода к поддержке нескольких виджетов: использовать widget bundle или создавать несколько разных widget extensions.
- У бандла есть ограничение на 10 виджетов внутри. Его теоретически можно обойти.
- Apple рекомендует в большинстве случаев использовать бандлы, а ко второму способу обращаться только в специфичных случаях. Например, когда только одному из них для работы требуется какой-то пермишн от пользователя.
Перевод на русский язык
Способы выдать доступ к дебажному меню
*️⃣Показывать меню только пользователям TestFlight, проверяя App Store receipt URL.
*️⃣Показывать меню после серии специальных жестов. Минус в том, что такое меню могут легко обнаружить случайно.
*️⃣Показывать меню тем, кто откроет приложение с помощью специальной URL схемы.
*️⃣Если в приложении есть авторизация, то дебажное меню можно активировать только для определенных аккаунтов.
*️⃣Показывать меню тем, на чьих девайсах стоит специальный Configuration Profile.
Перевод на русский язык
*️⃣Показывать меню только пользователям TestFlight, проверяя App Store receipt URL.
*️⃣Показывать меню после серии специальных жестов. Минус в том, что такое меню могут легко обнаружить случайно.
*️⃣Показывать меню тем, кто откроет приложение с помощью специальной URL схемы.
*️⃣Если в приложении есть авторизация, то дебажное меню можно активировать только для определенных аккаунтов.
*️⃣Показывать меню тем, на чьих девайсах стоит специальный Configuration Profile.
Перевод на русский язык
blog.sidetrack.app
Securely debugging your app in production • Sidetrack
Some of the earliest known cheat codes and secret debug menus date back to the 1980s, but with today’s technology and security in mind - what option works best for your app?