iOS Broadcast
Kanalga Telegram’da o‘tish
Подборка новостей и статей для iOS разработчиков. Новости Kotlin и мультиплатформы @kotlin_broadcast Новости Android @android_broadcast Реклама и прочее @ab_manager
Ko'proq ko'rsatish3 481
Obunachilar
Ma'lumot yo'q24 soatlar
+37 kun
-1030 kun
Postlar arxiv
3 482
📱 SwiftUI теперь умеет подбирать отступы под контейнер
Привычная
.padding(.horizontal, 16) выглядит безобидно. Но системные отступы зависят от устройства, размеров контейнера и положения вьюхи внутри него. На iPhone Duo они ещё и бывают разными слева и справа — привет вертикальной панели 😅
В iOS 27.1 под это дело появился contentMargins(for:edges:alignment:). Передаём .container, и SwiftUI берёт системные margins окружающего контейнера.
Выглядит так:
NavigationStack {
ScrollView {
VStack(alignment: .leading, spacing: 12) {
Text("Избранное")
.font(.headline)
Text("Здесь будут сохранённые статьи.")
}
.frame(maxWidth: .infinity, alignment: .leading)
.contentMargins(for: .container, edges: .horizontal)
}
.navigationTitle("Статьи")
}
Так содержимое можно выровнять по системным отступам, которые адаптируются к текущему контейнеру. При повороте устройства или изменении размера окна SwiftUI пересчитает их.
Не без нюансов:
🔵По умолчанию edges равен .all. В примере выбраны только горизонтальные края
🔵Для получения самих значений есть proxy.contentMargins(for: .container, edges: .horizontal) — он возвращает EdgeInsets. Значения зависят от положения вью в иерархии и не включают safe area
🔵У знакомой с iOS 17 перегрузки .contentMargins(.horizontal, 20, for: .scrollContent) другая задача: задать конкретные отступы содержимого скролла. Новая перегрузка получает значения из системного guide.
Нужно iOS 27.1+. Прийдется костылить if #available3 482
🍏 Первые распаковки iPhone Duo уже в сети. А ваш SwiftUI к такому готов?
Старт продаж iPhone Duo уже 23 октября. Появились первые видео с распаковкой складного iPhone. И пока одни обсуждают, как эффектно он раскрывается одной рукой, другие заметили кое-что интереснее: некоторые приложения и игры встречают огромный внутренний экран чёрными полосами 😅. Самое время как минимум, пересобрать приложение с актуальным Xcode. А еще лучше, хотя бы базово придумать как адаптировать интерфейс без боли. Я считаю что лучше всего для этого подойдет добавленный в iOS 27.1
ArrangementView. Это новый контейнер SwiftUI, который сам перестраивает два блока контента в зависимости от доступного пространства и положения сгиба.
Выглядит просто:
ArrangementView {
PlayerView()
} secondary: {
PlaylistView()
}
Один код, три сценария:
🟢На внешнем экране контент располагается вертикально.
🟢На раскрытом экране плеер и плейлист стоят рядом.
🟢При частичном складывании SwiftUI разводит их по разные стороны сгиба.
А ещё есть два режима:
split — разделяет пространство между представлениями. Например, видео и список воспроизведения.
overlay — накладывает одно представление поверх другого, а при складывании может разделить их. Отлично подходит для карты с панелью управления.
.arrangementViewStyle(.overlay)
Как обычно с новыми API, не без костылей:
⚠️Модификатор .splitArrangementLayoutRatio(0.4) нужно применять к дочернему представлению. Если повесить его на сам ArrangementView, код может собраться, но пропорции не изменятся.
⚠️ При частичном складывании одна из панелей у разработчика ужалась до 145 pt, и текст начал переноситься по одной букве. Не забываем про минимальную ширину и адаптивное содержимое.
⚠️ Старый добрый GeometryReader никуда не исчезает. Инженер Apple подтвердил, что переписывать всё под новый API не нужно. Для сложных сценариев есть reservedRegions, которые позволяют учитывать сгиб и другие занятые области экрана.
Достаточно лишь придумать что вы можете полезного отобразить на второй половине внутреннего экрана. А вы уже пробовали ArrangementView или пока ждёте, когда складные iPhone появятся у QA? 🙂3 482
🈸 Apple ужесточила App Review Guidelines
16 октября Apple обновила правила публикации приложений в App Store. Главная новость — отдельный пункт 2.5.19, который запрещает скрытые функции и подмену назначения приложения после прохождения ревью.
Именно такой подход использовали некоторые российские приложения: в App Store появлялось приложение под видом таймера или другого сервиса, а затем пользователям открывался настоящий функционал. Но есть нюанс: это не новый запрет. Раньше он находился в пункте 2.3.1. Теперь Apple вынесла его отдельно и прямо предупредила о возможности удаления приложения и блокировки аккаунта разработчика.
Что ещё изменилось?
🟢1.2 — User-Generated Content. Уточнены требования к модерации пользовательского и AI-контента, особенно интимных изображений, созданных без согласия человека. Нужны фильтрация, жалобы, блокировка пользователей и контакты для обращений. За систематические нарушения можно лишиться приложения и аккаунта.
🟢2.3.14 — Creative Assets. Новый пункт о графических материалах для App Store, включая изображения в шапке страницы и поиске. Нельзя использовать недоказуемые заявления, вводящие в заблуждение отсылки к другим приложениям и конкретные или скидочные цены.
🟢2.5.19 — Hidden Features. Запрещены скрытые, отключённые и незадокументированные функции. Попытка спрятать их в бинарнике, в том числе с помощью обфускации, может привести к удалению приложения и прекращению участия в Apple Developer Program.
🟢3.1.1(a) — External Payments. Уточнены правила ссылок на разрешённые внешние способы оплаты. Music Streaming Services Entitlement объединён в описании со StoreKit External Purchase Link Entitlements.
🟢Section 5 — Legal. Приложения, способствующие торговле людьми или эксплуатации детей, будут удаляться из App Store и блокироваться для альтернативной дистрибуции.
А что обсуждают сообществе:
💬 Feature flags и A/B-тесты. Разработчики беспокоятся, не затронет ли 2.5.19 привычный механизм включения функций через Remote Config.
Официального разъяснения Apple именно по feature flags пока нет. Практический совет сообщества: дать ревьюерам доступ ко всем существенным сценариям и описать их в Notes for Review.
💬Remote kill switch. По мнению участников обсуждения, удалённое отключение сломанной функции вряд ли вызовет вопросы, а вот включение новой после ревью выглядит значительно рискованнее. Это пока интерпретация разработчиков, а не отдельное правило Apple.
💬Двойные стандарты. В r/apple обсуждают, почему ограничения на AI-генерацию интимных изображений не привели к удалению крупных приложений вроде X и Grok.
Другой аргумент: если замаскированное банковское приложение смогло попасть в топ американского App Store, насколько эффективен сам процесс проверки?
Что это значит для нас?
Самое интересное здесь - граница между обычным feature management и bait-and-switch — подменой функциональности после проверки. Если новая возможность меняет назначение приложения, и так и задумано - лучше показать её ревьюерам до релиза. Иначе можно потерять не только приложение, но и весь аккаунт разработчика
3 482
🈸 Apple отклонила более 2 млн отправок приложений за год. При чём здесь AI?
У Apple есть отчет transparency который они публикуют. В 2025 году Apple рассмотрела более 9,1 млн отправок приложений и обновлений и отклонила 2,09 млн. В этом году, по субъективным ощущениям, будет еще больше. Компания отдельно отмечает, что инструменты разработки на базе AI увеличивают поток заявок в App Store.
Порог входа в разработку снижается: с помощью AI-ассистентов и no-code-инструментов создать приложение теперь могут даже люди без классического опыта программирования. Но написать код и выпустить качественный продукт, соответствующий требованиям App Store, всё ещё разные задачи.
Что показывает статистика Apple за 2025 год:
🟣2,09 млн отклонённых отправок из 9,1 млн рассмотренных.
🟣1,2 млн+ отклонённых заявок на новые приложения.
🟣Почти 800 тысяч отклонённых обновлений.
🟣443 тысячи+ отправок отклонены из-за нарушений требований к конфиденциальности.
🟣371 тысяча+ отклонены из-за спама, копирования других приложений или введения пользователей в заблуждение.
🟣Более 306 тысяч новых разработчиков присоединились к платформе.
Последние цифры особенно интересны на фоне бума AI-разработки. Но важно не делать лишних выводов: Apple не раскрывает, сколько отклонённых приложений было создано с помощью AI и какая доля авторов не имела опыта программирования.
Что это означает для iOS-разработчиков?
🟢Кода становится больше, но качество не появляется автоматически. AI может собрать рабочий прототип, но не гарантирует корректную обработку ошибок, безопасность и соответствие App Review Guidelines
🟢Конфиденциальность остаётся серьёзным препятствием. Недостаточно добавить системный запрос разрешения. Нужно понимать, какие данные собирает приложение, зачем они нужны и куда передаются
🟢Копии и приложения с минимальной функциональностью не становятся хорошими продуктами только потому, что их легко создать. Apple отдельно учитывает спам, копирование и недостаточную функциональность
🟢Ревью должно быть частью разработки. Проверяйте сценарии на чистом устройстве, тестируйте релизную сборку и убедитесь, что приложение действительно соответствует описанию в App Store.
AI упрощает создание приложений и одновременно увеличивает нагрузку на систему проверки. Для нас, как разработчиков это не столько повод бояться конкуренции, сколько напоминание: ценность всё больше смещается от самого написания кода к качеству продукта, архитектуре, безопасности и пользовательскому опыту. Ну и ждать в очереди приходится все больше и случайных reject-ов стало значительно больше:
🎯 Комментарий Apple о влиянии AI-инструментов
3 482
📞 Входящий звонок: VK JT Mobile Meetup
31 октября в Москве и 14 ноября в Санкт-Петербурге ВК собирает опытных iOS- и Android-разработчиков.
В Москве пройдут два параллельных трека — по iOS и Android. В Петербурге — общий трек для обеих платформ.
Спикеры из ВКонтакте, Дзена, MAX, VK Tech и других команд ВК разберут инженерные кейсы: расскажут о производительности, тестировании, архитектуре, анализе влияния, ИИ и других задачах мобильной разработки.
После докладов можно обсудить подходы с коллегами, поучаствовать в интерактивах и пообщаться на вечеринке.
Только офлайн. Количество мест ограничено.
👉 Регистрация
#реклама
3 482
🏡 Apple HomeView: умный дисплей для всего дома
Еще одно устройство от Apple - HomeView, умный дисплей для дома. По задумке, он должен стать чем-то вроде домашнего iPhone: управлять устройствами, показывать полезную информацию, запускать музыку и помогать с повседневными делами, не заставляя каждый раз искать телефон.
Что внутри:
🟢Экран на 7 дюймов с Liquid Retina, True Tone и автоматической регулировкой яркости. Доступны четыре цвета: серебристый, тёмно-серый, «сияющая звезда» и розовый.
🟢Siri AI и чип A18. Ассистент понимает последовательные запросы и может учитывать личный контекст из сообщений, календаря и почты.
🟢Управление умным домом. HomeView работает как хаб Apple Home, контроллер Matter и маршрутизатор Thread. Можно управлять светом, климатом, замками и камерами, создавать сценарии и автоматизации.
🟢Персонализация для семьи. До шести профилей с распознаванием лица. Устройство показывает персональные данные только после идентификации пользователя и проверки присутствия его iPhone в домашней сети.
🟢FaceTime и камеры. Встроенная 12-мегапиксельная камера поддерживает Center Stage, а дисплей может показывать трансляции с камер HomeKit Secure Video.
🟢Два варианта установки. Настольная версия с колонкой и настенная модель. Последнюю можно подключить даже через PoE.
Что интересного в интерфейсе?
Вместо обычного домашнего экрана здесь набор настраиваемых представлений: часы, фотографии, Snoopy или виджеты. Отдельный экран умного дома собирает управление светом, климатом и камерами в одном месте. Рецепт можно передать с iPhone и удобно смотреть на кухне.
Есть и ограничения. HomeView не заменяет iPad: набор приложений ограничен, отдельного App Store нет, а часть возможностей Siri зависит от подключённого iPhone. Например, сложные команды для разных типов устройств пока нельзя объединять в один запрос.
Цена: 299$. Предзаказы уже открыты, поставки ожидаются с 13 ноября. Сможет ли HomeView стать действительно полезным центром умного дома, а не просто дорогим способом посмотреть на виджеты остается вопросом
3 482
⚡️⚡️Когда API недостаточно: хардкорные доклады на Mobius
Mobius — профильная конференция по мобильной разработке: здесь встречаются разработчики, архитекторы, DevOps-инженеры, тестировщики и тимлиды, чтобы разбирать технологии iOS, Android, Аврора ОС, Flutter и Kotlin Multiplatform.
📅21–22 октября, Санкт-Петербург + online
Собрали в карточках несколько докладов для тех, кому интересно заглянуть глубже готовых API и библиотек. Внутри — внутреннее устройство Kotlin Flow, NFC internals в Android, Liquid Glass и Metal, шейдеры, портирование KMP-приложения на Аврора ОС и инструмент для AI-агентов.
Это только небольшая часть программы Mobius — в ней еще десятки докладов и разные форматы для мобильных разработчиков.
Листайте карточки и переходите на сайт, чтобы посмотреть полное расписание.
🌟По промокоду
iosbroadcast персональные билеты дешевле
[Купить билет]
Реклама. ООО «Джуг Ру Груп». ИНН 78013414463 482
+3
🔨 Как мы научили VLM проходить тест-кейсы вместо человека
Совсем забыл с вами поделиться статьей про то как у нас смогли заимспользовать AI для ручного прогона тестовых сценариев. В нашем мобильном приложении десятки тысяч тест-кейсов. Регресс проводится каждые 2 недели, и каждый цикл съедает значительную часть ресурсов QA-команд.
Мы построили AI-QA-агента, который проходит тест-кейсы так же, как это делает человек: запускает приложение на симуляторе, шаг за шагом выполняет сценарий, анализирует экраны с помощью VLM и автоматически сравнивает ожидаемый результат с фактическим. Как всё устроено:
🟢тест-кейсы берутся из Allure (наша TMS)
🟢оркестратор подготавливает окружение и запускает симулятор
🟢собственный движок на Swift и XCUITest выполняет тапы, свайпы и ввод текста
🟢VLM анализирует скриншоты и решает, что делать дальше
🟢после каждого шага агент проверяет фактический результат
🟢QA получает отчёт со скриншотами и найденными расхождениями
Интересно, что команда отказалась от подхода, где LLM ориентируется исключительно на accessibility-дерево. В большом приложении с сотнями экранов оно не всегда достаточно полно и качественно размечено. Конечно, это не замена качественному покрытию автотестами, но отличное подспорье. Крайне рекомендую полную статью
Поэтому агент буквально смотрит на экран, как обычный пользователь.
3 482
👨🏻💻 Строим мультиагентные системы для разработки на Podlodka AI Crew
Инженерные задачи редко состоят из одного действия.
В традиционной разработке их распределяют между специалистами. Мультиагентный подход переносит эту логику в ИИ: вместо одного исполнителя работают несколько виртуальных агентов. Как построить такую систему и сделать её эффективной?
Эксперты Podlodka AI Crew ответят на этот вопрос в новом сезоне «Мультиагентные системы» с 12 по 16 октября. Генеральный партнёр — RWB.
Что узнаете:
🧩 Как построить внутреннюю ИИ-платформу разработки
🧠 Как устроен «мозг» агента
🔄 Как убрать себя из агентского цикла с помощью оркестрации
🏭 Как построить «завод» из ИИ-агентов с узкими задачами
🔍 Как быстро находить ошибки и не тратить лишние токены
Формат: онлайн, 5 дней, утренние и вечерние сессии в Zoom. Много практики и обсуждений в закрытом Telegram-канале. Цена ниже привычных конференций.
🎟 Промокод
AI_BROADCAST — скидка на сайте
#реклама3 482
+9
📱 Подготовьте свои приложения для iPhone Duo
Apple выпустила целый раздел для разработчиков по адаптации приложений для iPhone Duo, давайте разбиарться! Начнем с
🟡Приложения будут работать криво в режиме совместимости
🟡Если собрать с iOS 27 SDK то будет в режиме совместимости и только
🟡При сборке с iOS 27.1 SDK можно сделать пополноценную поддержку
🟡Apple предлагает ориентироваться на доступное пространство через size classes. Для SwiftUI используется .enviroment
🟡На внешнем экране Duo всё выглядит примерно как на обычном iPhone.
🟡На внутреннем экране имеет
regular size class сразу по горизонтали и вертикали и спокойно помещает sidebar
🟡Внутренний экран вообще не обязан соблюдать ваши supportedInterfaceOrientations.
🟡У Duo два дисплея, поэтому понятие UIScreen.main становится неоднозначным. Apple прямо говорит, что такие обращения будут deprecated
🟡Если реально нужен экран конкретного окна, получаем его через UIWindowScene:
window?.windowScene?.screen
🟡Лучше вообще работать через environment, traits и размеры самой scene.
🟡Ещё одна ловушка — safe area теперь может быть асимметричной width - leftInset * 2 больше не гарантирует правильный результат Левый и правый inset могут отличаться из-за формы устройства, камеры и системного UI. Apple советует считать каждую сторону отдельно и держать весь интерактивный UI внутри safe area, а фон уже спокойно растягивать edge-to-edge.
🟡Если вы используете стандартную навигацию, большая часть адаптации приезжает бесплатно.
NavigationSplitView, UISplitViewController, TabView, UITabBarController, sheets, popovers и alerts уже умеют адаптироваться к разным положениям Duo
🟡На внутреннем экране даже можно автоматически превращать tab bar в sidebar.
🟡А в iOS 27.1 появилась ещё одна интересная штука: ReservedRegion в SwiftUI и UIViewReservedRegion в UIKit. Она нужна кастомному edge-to-edge UI, чтобы сказать системе: дай мне максимум пространства, но не залезай туда, где уже живёт системный интерфейс.
🟡В Xcode 27.1 через Device Hub можно симулировать разные состояния Duo: открыть, закрыть, повернуть, сложить и посмотреть, как ваш layout переживает всё это
🟡Появился новый AI скил для адаптации новых практик
Главный вывод после просмотра довольно приятный: iPhone Duo не приносит какой-то отдельный "FoldableKit" Apple просто продолжает давить в сторону адаптивного интерфейса:
🟢не угадывать устройство
🟢не ориентироваться на конкретную ширину,
🟢не считать, что экран один,
🟢не предполагать симметричные safe areas
Если вы уже следовали этим правилам, у вас будет минимум работы по адаптации