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

Новости Kotlin и мультиплатформы @kotlin_broadcast
Новости Android @android_broadcast
Реклама и прочее @ab_manager
Download Telegram
Forwarded from AvitoTech
Делимся материалами с Avito iOS meetup #10 🕊️

📺 Async / Await. Лучшие практики, советы и особенности
Максим Сурков (МТС) — рассмотрит structured concurrency в Swift, поговорит о async/await, actors, tasks и проведёт аналогии с уже существующими инструментами для работы с многопоточностью

📺 SwiftUI — уже пора?
Тимур Долотказин (Авито) расскажет про свой опыт перехода на новый (старый) фреймворк, подводные камни и выводы, к которым он пришёл.

📺 Гармония статики и динамики: погружаемся в mergeable libraries
Александр Сычев (Тинькофф Страхование) о новом решении Apple – mergeable libraries, он рассмотрит их внутреннее устройство и разберёт, как можно интегрировать их в свои iOS-проекты.

Ссылка на наш плейлист.
Фотографии с мероприятия лежат в альбоме Вконтакте 🔵

#iOS_avitotech #avitoiOSmeetup
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13👎1
🖥Атрибут @_marker в Swift

В исходниках макросов обнаружил атрибут @_marker который, как оказалось, служит для тех случаев, когда код имеет значение для Compile-time safety, проверки типов, но не несет пользы в runtime. Этот Атрибут, по мнению Apple, используется в Sendable 😀.
Он может пригодиться и нам, для тех случаев когда протокол используется только в определенной конфигурации
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5👎1
🔥 BIGO Ads появилась в мобильной медиации Яндекса

Глобальная рекламная сеть стала 13-й среди доступных при подключении мобильной медиации Яндекса или в рамках Простой монетизации. 

Если в вашем приложении есть реклама, явно нужно добавить ее в список для аукциона, это даст прирост стоимости показа за счет конкуренции среди рекламодателей.

Поддерживаются стандартные баннеры, полноэкранная реклама и Rewarded Ads (те самые бонусные жизни за просмотр рекламы). Особенный прирост даст, если вашим приложением будут пользоваться на Ближнем Востоке, в России и в странах Южной и Юго-Восточной Азии.

Подключить BIGO Ads вы можете уже сейчас или отдать настройку экспертам Простой монетизации. А вам останется получить оплату одним платежом.

#ads #яндекс
👎2
⚡️ Managed App Distribution Framework

Apple опубликовала документацию по API ManagedAppDistribution, подтверждающую, что он в первую очередь предназначен как решение MDM (mobile device management). Это приоткрывает нам завесу тайны как будет устроен Side-loading сторонних приложений в обход 📱AppStore. Все детали мы узнаем в марте 2024г, а пока Apple оспаривает решение Евросоюза о включении App Store в закон о цифровых рынках. Apple приладывает усилия, чтобы сохранить iOS App Store в текущем виде, но уже ведет активную работу по адаптации iOS 17 к загрузке приложений в обход AppStore. Как и ожидал, важный нюанс: Для использования этого фреймворка необходимо получить 🔑 entitlement от Apple, обосновав необходимость и способ распространения. Больше деталей в статье Apple
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9👎1
🖥Изменения стектрейса при краше в 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