iOS Broadcast
3.32K subscribers
1.71K photos
85 videos
976 links
Подборка новостей и статей для iOS разработчиков.

Новости Kotlin и мультиплатформы @kotlin_broadcast
Новости Android @android_broadcast
Реклама и прочее @ab_manager
Download Telegram
🖥Изменения стектрейса при краше в Swift 5.9
Сколько раз вы попадали в ступор при разборе крашей от пользователей? Действительно, 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
👍7👎7👏1
🖥Первый взгляд на будущее тестирования в Swift

Пару месяцев назад команда фреймворка 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
👍2👎1
📱 Inferno
Если вам тоже нравится изучать что-то новое через примеры, то пришло время разобраться с Шейдерами в SwiftUI!
Inferno — это набор шейдеров для SwiftUI. Важно что эти шейдеры разработаны так, чтобы их было легко читать и понимать даже новичкам, поэтому вы обнаружите, что каждая строка кода перефразирована на простом английском языке, а также общее объяснение используемого алгоритма в верхней части каждого файла.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13👎1
🐥Разбираемся в протоколах (15 мин. 🇺🇸)
Протоколы не так просты как кажутся. Статья в деталях рассматривает путаницу, которая может возникать при работе с протоколами в Swift:
👉 Динамическая диспатчеризация с протоколами
👉 Протоколы с типами или дженерики
👉 Протоколы вводящие ограничения при компиляции
👉 Ассоциированые типы
👉 Кодогенерация реализации протоколов

Понимание поведения протоколов во время компиляции и исполнения делает разработку гораздо более приятной и предсказуемой, а использование протоколов на стадии архитектуры позволяет ввести четкие границы и снизить когнитивную нагрузку.
Ну и для прохождения собеседования полезно 😉
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10👎1
Покрытие тестами async/await Swift кода
Классный гайд для тех кто только задумывается о том, как тестировать Swift Concurrency, ведь код с async/await требует другого подхода к написанию тестов
👉Тестирование асинхронного кода
👉Unit тестирование UI логики используя @MainActor
👉Предотвращение дедлока в XCTestExpectation
👉Unit тестирование конкурентного кода через серийное исполнение

Если же вы столкнулись с более глубокими концептуальными проблемами в тестировании Swift Concurrency, очень советую посмотреть секци про тестирование из докладов:
🌐 Дружим Swift Concurrency с имеющейся кодовой базой
🌐 О дивный новый мир со Swift Concurrency
Из них можно узнать, почему
await Task.yield()

не самый элегантный способ решить проблему и как без него выстроить тестирование
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4👎1
📱 Ограничение скоупа анимации в SwiftUI (10 мин. 🇺🇸)
Анимации были киллер фичей SwiftUI с момента его появления, мы могли быстро создавать плавную анимацию в SwiftUI, единственным недостатком было управление анимацией. Всякий раз, когда нам нужно запустить многоэтапную анимацию или ограничить анимацию определенной частью иерархии View. В статье разбирается актуальный подход к анимациям в SwiftUI:
👉Использование модификатора animation
👉Ограничение скоупа анимации при помощи ViewBuilder замыкания
👉Транзакционные анимации с ограничением скоупа
К сожалению, как обычно со SwiftUI, новый подход не имеет бекпорта на старые версии iOS 😢
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5👎1
📱 Как отказаться от Spacer в SwiftUI

В статье в деталях рассматривается способ добиться того же поведения с помощью модификатора .frame.
Идея не новая и уже активно применяется для оптимизации нагруженных элементов в коллекциях, как один из пунктов оптимизации скрола. Я уверен что это стоит знать, но не стоит применять до возникновения необходимости, т.к оптимальный перформанс будет при ручном лейауте фреймами, а SwiftUI нужен для 99% остальных задач, где нужна не максимальная оптимизация, а читаемость и скорость разработки. На мой взгляд, Spacer гораздо более понятный и предсказуемый компонет, не просто так он появился в первой версии SwiftUI
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10👎1
🍎 Проектирование динамичных Live Activities

Очень полезная сессия, которую точно стоит посмотреть! 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 Power Assert. Макрос для повышения читабельности тестов swift. Позволяет получить в репорте описание для теста, как показано на скриншоте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18👎1
🐥 Изменения в интерполяции строк в Swift

Экранировать кавычки и спец символы в Swift теперь не обязательно, не забывайте про это 😉
"Привет, \"iOS Broadcast\""
#"Привет, "iOS Broadcast"#
#"""
Многострочная строка
три двойных кавычки: """
"""#


#swiftTip
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9👎2
🔨 Важные изменения в работе EventKit и EventKitUI

Работа календаря в iOS 17 изменилась: вызов методов requestAccess(to: .event) или requestAccess(to:completion:) не запрашивает у пользователя разрешение, а сразу возвращает ошибку. Начиная с iOS 17, приложение должно запрашивать только определенный уровень доступа, необходимый ему для выполнения задач с данными календаря. Хорошие новости тут в том, что теперь можно создавать записи в календаре пользователя, используя нативный интерфейс календаря не запрашивая разрешений. Компонент EventKitUI запускается в отдельном процессе на уровне системы, что позволит дать пользователям более удобный интерфейс

🔨 Сессия WWDC23 "Discover Calendar and EventKit"
🔨 Техническая инструкция для миграции
🔨 Образец проект с примером использования

#wwdc23
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5