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

Новости Kotlin и мультиплатформы @kotlin_broadcast
Новости Android @android_broadcast
Реклама и прочее @ab_manager
Download Telegram
🔨 Воспроизведение тактильных ощущений
Продолжу рубрику непопулярных но полезных технологий. Haptics это не просто вибрации, это прямой мостик взаимодействия с пользователем. Если звук у большей части пользователей отключен, то через тактильные ощущения можно действительно создать уникальный пользовательский опыт. Главное тут не перестараться. В iPhone невероятно работает Haptics engine, просто вспомните что в iPhone с кнопной в какой-то момент кнопка перестала физически нажиматься и никто не заметил, тачпады в маках так же имитируют нажатие вибрацией.
🟣Система может воспроизводить тактильные ощущения на различных платформах и устройствах.
🟣На iPhone тактильная обратная связь воспроизводится через переключатели, ползунки и кнопки выбора.
🟣В Apple Watch тактильная информация генерируется через Taptic Engine.
🟣На Mac с трекпадом Force Touch тактильные ощущения воспроизводятся при перетаскивании и нажатии контента.
🟣Внешние устройства, такие как игровые контроллеры и Apple Pencil Pro, также могут воспроизводить тактильные сигналы.

Лучшие практики:
🟢Используйте стандартные тактильные шаблоны в соответствии с их значениями.
🟢Последовательно используйте тактильные ощущения для установления причинно-следственной связи.
🟢Предпочитайте использовать тактильные ощущения в дополнение к визуальной и слуховой обратной связи.
🟢Избегайте чрезмерного использования тактильных ощущений, чтобы не утомлять пользователей.
🟢Сделайте тактильные ощущения необязательными и убедитесь, что приложение работает без них.

Пользовательские Haptics:
🟢В играх и неигровых приложениях можно использовать пользовательские тактильные ощущения.
🟢Создавайте динамические тактильные шаблоны в зависимости от ввода данных пользователем или контекста.
🟢Используйте преходящие и непрерывные события для создания различных тактильных паттернов.
🟢Управляйте четкостью и интенсивностью тактильных ощущений для передачи различных физических ощущений.

Полезные ссылки:
🔵CoreHaptics
🔵Подготовка приложения для использования Haptic
🔵Воспроизведение паттернов из файла
🔵WWDC21 предентация CoreHaptics
🔵HIG с примерами
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍51
This media is not supported in your browser
VIEW IN TELEGRAM
📱 Внедрение преобразования речи в текст
Apple внедрила функцию преобразования речи в текст в своих приложениях и выпустила новый API SpeechAnalyzer для обработки длинных аудиозаписей. В статье детально рассматривается end-to-end пример использования данного API.

1. Получение звука с микрофона. AudioManager обрабатывает запросы конфигурации аудиосеанса и разрешения доступа к микрофону
2. Буферный преобразователь. Класс BufferConverter преобразует звуковые буферы из одного формата в другой
3. Менеджер транскрипции. Класс TranscriptionManager объединяет компоненты для транскрипции речи

➡️API SpeechAnalyzer все еще beta и доступно только с iOS 26
➡️WWDC сессия по использованию SpeechAnalyzer
Please open Telegram to view this post
VIEW IN TELEGRAM
А вот и мой доклад публично зарелизили, всем спасибо за крутой фидбек, очень приятно! ☺️
Было действительно сложно уместить все знания по этой теме в формат 40-минутного выступления
🤔2
⚡️ Apple и власти РФ ведут переговоры о предустановке RuStore
Apple вступила в переговоры с властями РФ и бизнесом: в ближайшее время может вновь появиться возможность скачивать заблокированные в App Store российские приложения.

Возвращение заблокированных приложений
🔵Российские власти и бизнес ведут переговоры о допуске RuStore в App Store.
🔵Apple пообещала Минцифры не препятствовать размещению RuStore.
🔵Вопрос обсуждался с главой РФПИ Кириллом Дмитриевым.

Возможные сценарии и сроки
🟢Apple может сделать RuStore доступным только в РФ.
🟢RuStore может появиться в iPhone осенью.
🟢С 1 сентября 2025 года все смартфоны и планшеты в России должны иметь предустановленные российские магазины приложений.

От себя добавлю, что технических ограничений для этого нет, альтсторы уже работают в ЕС. Открытым остаются нюансы по оплате комиссий за каждую установку с RuStore. Но с учетом того что заинтересованы в первую очередь банки, в том что они смогут придумать как произвести оплату сомнений не возникает.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥291
🐥12 секретов оптимизации Swift, о которых Apple вам не расскажет
Статья про "секреты" оптимизации, по факту почти все советы из серии капитан очевидность. Несколько действительно полезных:

Принцип Copy on write
🟢Задерживает копирование данных до изменения
🟢 Подходит для передачи массивов без лишних затрат
🔴Избегайте частых мутаций больших коллекций. Например при парсинге JSON можно заранее аллоцровать примерный объем
var users = [String]()
users.reserveCapacity(1000) // Prevents multiple re-allocations


Value и Reference типы
🟢Value типы хранятся в стеке, копирование дешево
🟢Ссылочные типы живут в куче, требуют ARC
🔴Иногда использование структур вместо классов оправдано повышением производительности
var p1 = Point(x: 1, y: 2)
var p2 = p1 // Cheap copy (stack)

var c1 = PointClass(x: 1, y: 2)
var c2 = c1 // Just another reference (heap, ARC overhead)


Инлайн функции
🟢Компилятор может встраивать функции для повышения производительности
🔴Потенциально увеличивает размер бинарника
@inline(__always)
func square(_ x: Int) -> Int {
return x * x
}


Статическая и динамическая диспатчеризация
🟢Статическая - быстрее, определяется при компиляции
🔴Динамическая - медленнее, определяется в рантайме
Использование ключевого слова final ускоряет диспатчеризацию

Ленивые коллекци
🔴Функции высокого порядка могут создавать промежуточные массивы
🟢Используйте ленивые коллекции
// Efficient with lazy evaluation
let squaredLazy = (0..<1000).lazy.map { $0 * $0 }.filter { $0 % 2 == 0 }


Оптимизация расположения памяти: Выравнивание структуры
🟢Сгруппируйте свойства по размеру для компактного аллоцирования.
// Bad layout (wasted memory due to padding)
struct Bad {
var a: Int8 // 1 byte
var b: Int64 // 8 bytes
var c: Int8 // 1 byte
}
// Better layout (group similar sizes together)
struct Good {
var b: Int64
var a: Int8
var c: Int8
}


Оптимизация на уровне компилятора
🟢Включите оптимизацию всего модуля (WMO) для выпуска сборок.
🟢Используйте настройки сборки для уменьшения размера или оптимизации (-Osize и -Ofast)
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍2🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
🎹 Познакомьтесь с новым дизайном иконок приложений
Совсем скоро пользователи станут массово обновляться до iOS 26 и лучшим способом дешево добиться вау-эффекта от вашего приложения - адаптировать иконку приложения под новые требования:

🟢Обновленные значки основаны на многослойных иконках visionOS и свойствах стекла.
🟢Новый материал позволяет создавать ощущение глубины и подсвечивания изнутри.
🟢Обновленные режимы внешнего вида включают монохромное стекло и тонированное стекло.
🟢Обновленная система проектирования упрощает дизайн для iOS, macOS, watchOS и App Store.
🟢Многослойность является ключевым компонентом нового языка дизайна.
🟢Прозрачность и размытость улучшают внешний вид материала.
🟢Важно учитывать наложение слоев, прозрачность и размытость для максимальной эффективности использования материалов и режимов оформления.

Расскажите дизайнерам и запросите ассеты заранее ☺️
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍3🔥1
⚡️ Apple Event объявлена дата
Презентация Apple состоится во вторник 9 сентября в 20:00 по московскому времени.
Что нас ждет? iPhone 17 или iPhone 26? Новые Apple Watch? Что-то про AI?
Добавляем в календарь чтобы не забыть
Please open Telegram to view this post
VIEW IN TELEGRAM
5
🕸 Как построить CI/CD пайплайн для iOS проектов
Как не странно, но самый частый запрос от мобильных разработчиков в росте "Хочу разобраться в CI". Нормального гайда по устройству CI/CD для мобильных приложений не было. И тут, внезапно, в блоге jetbrains секции TeamCity появляется достойная статья, объясняющая основные принципы:
🟢Инструменты xcodebuild или fastlane.
🟢Этапы сборки для различных конфигураций.
🟢Тестирование на нескольких версиях iOS
🟢Статический анализ кода и отчеты о покрытии кода
🟢Подписание и упаковка (IPA-файлы)
🟢Развертывание в TestFlight или App Store
🟢Настройка проекта iOS
🟢Настройка beta релиза
🟢Настройка fastlane
🟢Настройка match (подпись)
🟢Настройка задания сборки
🟢Настройка секретов
🟢Настройка параметров сборки
🟢Выполнение скриптов
🟢Тестирование PipeLine
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍221
Forwarded from Surf Tech
📱 Проведём вечер на эвенте от Apple 9 сентября в 20:00. Присоединяйся к стриму — обсудим новые iPhone вместе с Кириллом Давыдовым, iOS-разработчиком Surf, и Андреем Зоновым, автором канала iOS Broadcast.

После стрима разыграем 3 пауэрбанка — как раз подойдут для будущих айфонов. Чтобы участвовать:

Подпишись на @surf_tech, @surf_mobile, @ios_broadcast
Нажми кнопку «Участвовать» под этим постом.

➡️ Увидимся 9 сентября в 20:00 (по Москве) в VK Video или на YouTube.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
🐥 Фулстек Swift разработчик
Очень детальная и крутая статья про опыт реализации клиент-серверного приложения на Swift. В отличии от большинства таких статей, которые я читал, тут рассматривается реальный опыт написания проекта со всеми болями и преимуществами:
🟡Сервер написан на Swift с использованием Vapor и SQLite через Fluent
🟡Клиент написан на Swift и SwiftUI для iOS и macOS
🟡Общий уровень API состоит из 164 Codable структур (удобно шарить между клиентом и сервером)
🟡Разработка строгой поддержки параллелизма застопорилась
🟡Vapor не является прагматичным выбором
🟡Пример определения маршрутизации
🟡Реализация запроса/ответа на стороне сервера с использованием асинхронных функций
🟡Использование собственного идентификатора электронной почты и аутентификации по токену на предъявителя
🟡Развертыване на одном сервере с прямым доступом к базе данных SQLite
🟡Разработка полного набора тестов для Swift, содержащих ~ 150 тестов
🟡Развертывание сложное и требует времени
🟡Dockerfile полезен, но требует дополнительных знаний для настройки
🟡Проблемы с использованием Swift API, недоступных в Linux, требуют использования альтернативных фреймворков
🟡SwiftUI не обеспечивает полной совместимости с macOS, поэтому используется Mac Catalyst
🟡Designed for iPad работает лучше, чем Mac Catalyst (совпало с моим личным опытом)
🟡Проект настроен с использованием XcodeGen и project.yml файла
🟡Используются @Observable объекты и SwiftUI для каждого логического экрана.

Полезный вывод:
Сложно рекомендовать Swift в качестве прагматичного выбора для серверного веб-сервиса. Все его преимущества не компенсируют его отставание от более широкой экосистемы веб-фреймворков. Возможно, через несколько лет, когда язык Swift стабилизируется и сообщество Swift за пределами разработки приложений вырастет это изменится.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9