Apple опубликовала документацию по API ManagedAppDistribution, подтверждающую, что он в первую очередь предназначен как решение MDM (mobile device management). Это приоткрывает нам завесу тайны как будет устроен Side-loading сторонних приложений в обход
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9👎1
Сколько раз вы попадали в ступор при разборе крашей от пользователей? Действительно, Swift предоставляет гораздо меньше контекста в стектрейсе чем доступно у коллег c Android + Kotlin. С новым релизом Swift 5.9 все изменится! Бектрейсер имеет ряд полезных функций, включая:
👉 Обработка сбоев внепроцессно
👉 Умное встроенное отображение исходного кода программы
👉 Возможность приостановки и проверки сбойной программы или даже вызова отладчика для отладки
👉 Поддержка Swift Concurrency
👉 Цветное выделение для удобочитаемости
👉 Расширенные параметры настройки (документация)
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11👎1
Forwarded from Android Broadcast (Кирилл Broadcast)
Apple интегрирует в iMessage поддержку RCS (Rich Communication Services) - обмен сообщениями с богатыми возможностями по сравнению с SMS/MMS. Например, появится статус о прочтение, индикатор набора сообщения и др.
Apple был бы не Apple. Синим цветом все также будут отмечаться сообщения для iMessage, а все остальные зелёным.
Достойных приверженцев компании отмечают отдельным цветом, но это и причина для булинга подростков со стороны сверстников из-за отсутствия iPhone и продвижения техники компании. Бизнес такое бизнес и лицемерие: на презентациях забота обо всем и всех, а в реале только прибыль!
#apple #rcs
Apple был бы не Apple. Синим цветом все также будут отмечаться сообщения для iMessage, а все остальные зелёным.
Достойных приверженцев компании отмечают отдельным цветом, но это и причина для булинга подростков со стороны сверстников из-за отсутствия iPhone и продвижения техники компании. Бизнес такое бизнес и лицемерие: на презентациях забота обо всем и всех, а в реале только прибыль!
#apple #rcs
👍7👎7👏1
Пару месяцев назад команда фреймворка XCTest поделилась с сообществом новой опенсорсной Swift библиотекой на основе макросов с взгядом на будущее тестирования Swift. Я уже рассказывал про swift-testing и, как указано в ее документации, она предназначена для проверки концепции нового API тестирования для Swift, основанного на макросах и интегрированного в Swift так же, как и XCTest.
Библиотека предназначена для получения обратной связи от нас свами и скоро заменит XCTest. В статье автор делится своим опытом интеграции на основе самых базовых примеров. Если заинтересовались, можно так же посмотреть гайд по предполагаемой миграции с XCTest от Apple. Если у вас есть предложения, еще не поздно высказать свое мнение на форуме Swift
@Suite
struct WifiParserTests {
func requiredFields() throws {
let wifi = "WIFI:S:wifi;P:password;;"
let network = try sut.parse(wifi: wifi)
#expect(network.hidden == nil)
#expect(network.security == nil)
#expect(network.ssid == "wifi")
#expect(network.password == "password")
}
}
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4👎1
Forwarded from Android Broadcast (Кирилл Розов)
📺 Tracer — альтернатива Crashlytics. Другой взгляд на аналитику ошибок в приложениях (43 мин)
Tracer – система аналитики ошибок от команды OK.Tech с поддержкой Android и iOS. Эту систему используют почти все крупные бизнес-юниты VK: Одноклассники, ВКонтакте, Дзен, Юла, Почта, RuStore. По мнению команды – получилось хорошо, поэтому решили выйти в public и поделиться сервисом со всеми, он бесплатный.
Кирилл Попов рассказал про отличия Tracer от Crashlytics в части работы с крэшами и ANR. Провел демонстрацию других инструментов команды: профайлеров, мониторинга утечек памяти и мониторинга утечек файлов на диске. Также Кирилл рассказал как это всё реализовано на бэкенде.
#tooling
Tracer – система аналитики ошибок от команды OK.Tech с поддержкой Android и iOS. Эту систему используют почти все крупные бизнес-юниты VK: Одноклассники, ВКонтакте, Дзен, Юла, Почта, RuStore. По мнению команды – получилось хорошо, поэтому решили выйти в public и поделиться сервисом со всеми, он бесплатный.
Кирилл Попов рассказал про отличия Tracer от Crashlytics в части работы с крэшами и ANR. Провел демонстрацию других инструментов команды: профайлеров, мониторинга утечек памяти и мониторинга утечек файлов на диске. Также Кирилл рассказал как это всё реализовано на бэкенде.
#tooling
👍2👎1
Если вам тоже нравится изучать что-то новое через примеры, то пришло время разобраться с Шейдерами в SwiftUI!
Inferno — это набор шейдеров для SwiftUI. Важно что эти шейдеры разработаны так, чтобы их было легко читать и понимать даже новичкам, поэтому вы обнаружите, что каждая строка кода перефразирована на простом английском языке, а также общее объяснение используемого алгоритма в верхней части каждого файла.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13👎1
Протоколы не так просты как кажутся. Статья в деталях рассматривает путаницу, которая может возникать при работе с протоколами в Swift:
👉 Динамическая диспатчеризация с протоколами
👉 Протоколы с типами или дженерики
👉 Протоколы вводящие ограничения при компиляции
👉 Ассоциированые типы
👉 Кодогенерация реализации протоколов
Понимание поведения протоколов во время компиляции и исполнения делает разработку гораздо более приятной и предсказуемой, а использование протоколов на стадии архитектуры позволяет ввести четкие границы и снизить когнитивную нагрузку.
Ну и для прохождения собеседования полезно 😉
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10👎1
Классный гайд для тех кто только задумывается о том, как тестировать Swift Concurrency, ведь код с async/await требует другого подхода к написанию тестов
👉Тестирование асинхронного кода
👉Unit тестирование UI логики используя
@MainActor
👉Предотвращение дедлока в XCTestExpectation
👉Unit тестирование конкурентного кода через серийное исполнение
Если же вы столкнулись с более глубокими концептуальными проблемами в тестировании Swift Concurrency, очень советую посмотреть секци про тестирование из докладов:
Из них можно узнать, почему
await Task.yield()
не самый элегантный способ решить проблему и как без него выстроить тестирование
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4👎1
Анимации были киллер фичей SwiftUI с момента его появления, мы могли быстро создавать плавную анимацию в SwiftUI, единственным недостатком было управление анимацией. Всякий раз, когда нам нужно запустить многоэтапную анимацию или ограничить анимацию определенной частью иерархии View. В статье разбирается актуальный подход к анимациям в SwiftUI:
👉Использование модификатора animation
👉Ограничение скоупа анимации при помощи
ViewBuilder
замыкания👉Транзакционные анимации с ограничением скоупа
К сожалению, как обычно со SwiftUI, новый подход не имеет бекпорта на старые версии iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5👎1
В статье в деталях рассматривается способ добиться того же поведения с помощью модификатора
.frame
.
Идея не новая и уже активно применяется для оптимизации нагруженных элементов в коллекциях, как один из пунктов оптимизации скрола. Я уверен что это стоит знать, но не стоит применять до возникновения необходимости, т.к оптимальный перформанс будет при ручном лейауте фреймами, а SwiftUI нужен для 99% остальных задач, где нужна не максимальная оптимизация, а читаемость и скорость разработки. На мой взгляд, Spacer гораздо более понятный и предсказуемый компонет, не просто так он появился в первой версии SwiftUIPlease open Telegram to view this post
VIEW IN TELEGRAM
👍10👎1
Очень полезная сессия, которую точно стоит посмотреть! Live Activities появились начиная с версии IOS 16.1 на всех моделях iPhone, но популярность начинают обретать только сейчас. На сессии рассматривается на примерах, как лучше всего создавать Live Activities, которые отображаются:
👉 На экране блокировки
👉 В режиме ожидания (StandBy)
👉 На динамическом острове (Dynamic Island)
Особенно это полезно для разработчиков которые ходят, как я, не с iPhone Pro серии и не имеют реального опыта взаимодействия с Dynamic Island и StandBy режимом
#wwdc23
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7👎1
Какой у вас iPhone? Нужен ли разработчику актуальный или самый популярный iPhone?
Anonymous Poll
63%
iPhone 11-15 Pro
28%
iPhone X-15
6%
iPhone 6s-SE 2
3%
iPhone 5-SE
👍1
Находка выходных - Swift Power Assert. Макрос для повышения читабельности тестов swift. Позволяет получить в репорте описание для теста, как показано на скриншоте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18👎1
Экранировать кавычки и спец символы в Swift теперь не обязательно, не забывайте про это 😉
"Привет, \"iOS Broadcast\""
#"Привет, "iOS Broadcast"#
#"""
Многострочная строка
три двойных кавычки: """
"""#
#swiftTip
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9👎2
Работа календаря в iOS 17 изменилась: вызов методов
requestAccess(to: .event)
или requestAccess(to:completion:)
не запрашивает у пользователя разрешение, а сразу возвращает ошибку. Начиная с iOS 17, приложение должно запрашивать только определенный уровень доступа, необходимый ему для выполнения задач с данными календаря. Хорошие новости тут в том, что теперь можно создавать записи в календаре пользователя, используя нативный интерфейс календаря не запрашивая разрешений. Компонент EventKitUI
запускается в отдельном процессе на уровне системы, что позволит дать пользователям более удобный интерфейс#wwdc23
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5