iOS Broadcast
3.31K subscribers
1.67K photos
82 videos
966 links
Подборка новостей и статей для iOS разработчиков.

Новости Kotlin и мультиплатформы @kotlin_broadcast
Новости Android @android_broadcast
Реклама и прочее @android_broadcast_bot
Download Telegram
⤵️ Подходы к навигации в SwiftUI
Автор рассматривает все основные подходы к навигации (часть статьи еще дополняется). SwiftUI сначала был представлен с NavigationView, потом его замененили на NavigationStack стек в iOS 16. Все это время часть разработчиков строила навигаюцию вообще на базе UIKit. В статье рассматриваются подходы:
🟢Базовая навигация по списку
🟢Динамическая/программируемая маршрутизация
🟢Вложенные перечисления для организации сложных сценариев
🟢Глобальная маршрутизация в SwiftUI
🟢Реализация навигационного "хука" с использованием Environment
🟢Удаление навигационной зависимости
🟢Навигация по вкладкам
🟢Структура приложения
🟢NavigationStack и PatientNavigationStack
🟢Использование Environment Values
🟢Управление "модалками"

Добавляйте в 🔖 чтобы не потерять
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
🈸 State of in-app subscriptions 2025
Подписочные системы монетизации почти полностью заменили классическую покупку контента. Если для нас как пользователей это не лучшая новость, то как разработчикам требуется понимать как это использовать:
🟢Рынок покупок в приложениях приближается к $170 млрд к 2025 году.
🟢Высокие цены ≠ низкая конверсия Во всех планах топ-цены по квартилю дают самый высокий LTV, при этом конверсия остается стабильной.
🟢Искусственный интеллект облегчает создание и запуск приложений, но сложнее превратить их в стабильный доход.
🟢Weekly-подписки доминируют За год они выросли на +10 % и уже дают ≈50 % всех новых покупок в App Store. Обошли месячные и годовые в каждом регионе.
🟢Триалы кардинально повышают LTV Бесплатный пробный период увеличивает LTV на 55-64 % в зависимости от страны. Наибольший эффект — у weekly-подписок.
🟢Маленькие рынки → большая выручка Сингапур, Катар, Багамы — в топе по LTV. По Adapty Pricing Index, готовность платить различается в 2-3 раза. Локальное ценообразование — must-have.
🟢Адаптивный индекс ценообразования помогает определить тенденции и оптимизировать цены.
🟢Еженедельные подписки приносят наибольший доход в большинстве регионов.
🟢Ценообразование и упаковка являются ключевыми факторами увеличения доходов от подписки на приложения.
🟢Адаптивное ценообразование позволяет корректировать цены с уверенностью и определять доход.
🟢LTV и рентабельность определяют долгосрочный доход от подписки на приложения.
🟢Эксперименты — лучший ускоритель роста Приложения, которые провели 50+ A/B-тестов пейволлов, растут в 100× быстрее. Начинать лучше с триалов и структуры планов.
Полный отчет
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
🐥 Переход на Swift Testing
Swift Testing предлагает новые возможности для юнит и функционального тестирования. Переход с XCTest на Swift Testing может быть сложным. Официальный гайд Apple не охватывает все практические аспекты.

Поиск и выполнение тестов:
🔵XCTest использует XCTestCase с функциями среды выполнения Objective-C.
🔵Swift Testing использует макросы для генерации описания тестов.
🔵XCTest выполняет тесты последовательно, Swift-тестирование — параллельно.

Проблемы:
🔴Ассерты не работают вне контекста Task
🔴Проблемы с общим изменяемым состоянием
🔴Наследуемые тестовые сценарии не наследуют тесты

Рекомендации по миграции:
🟢Если количество тестов небольшое, использовать быстрое параметризованное тестирование
🟢В противном случае комбинировать XCTests и Swift Testing в один целевой объект
🟢Дождаться поддержки тестового наследования в Swift-тестировании

Преимущества и недостатки миграции:
🟢Возможность переосмыслить дизайн тестов и использовать современные Swift парадигмы
🟢Отсутствие API для тестирования пользовательского интерфейса и производительности
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
3
🐥 Swift и C++
Когда-то давно, на старте карьеры, я попал на проект с Objective-C++. Не просто ручной подсчет ссылок а полноценное управление аллокацией памяти. С менее понятным кодом с тех пор я не сталкивался. И вот, он вернулся, интероп с C++:
🔘Новая система взаимодействия позволяет использовать библиотеки C++ в Swift.
🔘Совместимость C++ и Swift упрощает создание кроссплатформенных инструментов.
🔘Логика C++ может быть повторно использована на различных платформах.
🔘Поддержка взаимодействия Swift с C++ сокращает дублирование кода и ускоряет разработку.
🔘Это упрощает создание кроссплатформенных инструментов с интерфейсом Swift
🔘Логика, написанная на C++, может быть повторно использована на различных платформах

Не думаю что кто-то в здравом уме будем писать логику на C++, но вот использовать готовые опенсорсные C++ движки или повышать производительность в местах ботлнеков может быть полезно.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
🐥 Создание Swift макросов
Решение для повторяющихся шаблонов - макросы.

Макрос @ThemedButton
🟢Макрос генерирует кнопку с оформлением темы приложения.
🟢Пример использования: @ThemedButton("Коснись меня")

Расширенный макрос @GreetingText
🟢Макрос анализирует строку и создает пользовательское сообщение.
🟢Пример использования: @GreetingText("Отжимающийся воин").

Плюсы использования:
🟢Макросы ускоряют время компиляции и незначительно улучшают использование памяти.
🟢Выгоды наиболее заметны при масштабировании до большого количества компонентов.

Минусы использования макросов
🔴Трассировки стека становятся нечитаемыми.
🔴Сообщения об ошибках указывают на расширение, а не на файл.
🔴Макросы могут нарушать работу инструментов рефакторинга.

Заключительные мысли
🔘Макросы Swift мощные и декларативные, но требуют тщательного тестирования.
🔘Макросы подходят для статичных задач и упрощают написание кода.
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔21
🔨 Uncertain⟨T⟩
Mattt (NSHipster) редко но метко закидывает интересные концепции. В этот раз поднимается вопрос неопределенности в программировании. Идея состоит в том чтобы внедрить неопределенность в систему типов.

Uncertain<T>: новый подход
🔵Исследователи предложили кодировать неопределенность в системе типов.
🔵Uncertain<T> позволяет моделировать неопределенность с помощью вероятностных распределений.
🔵Uncertain<T> делает код более умным и точным.

Метод Монте-Карло
🔵Метод Монте-Карло позволяет анализировать вероятности через симуляции.
🔵Пример с игровым автоматом показывает, как можно использовать этот метод.

Заключение
🔵В реальном мире нет ничего определенного, кроме самой неопределенности.
🔵Более совершенные инструменты помогут лучше справляться с неопределенностью.
🔵Цель не в устранении неопределенности, а в признании её существования
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
8
🏝🦢 Kotlin-to-Swift экспорт теперь работает по умолчанию [EXPERIMENTAL]

Kotlin-to-Swift экспорт позволяет удобно использовать скомпилированный для Apple таргетов код из Swift удобным образом. Изменение добавили в Kotlin 2.2.0-Beta2

Ключевые фичи:
👉 Поддержка многомодульности: каждый Kotlin модуль - отдельный Swift модуль
👉 Поддержка пакетов в коде
👉 type alias теперь доступны из Swift
👉 Улучшения в nullability с примитивными типами
👉 Вызов перегруженных функций в Kotlin из Swift кода
👉 Можно изменить имя модуля

Фича всё ещё в экспериментально режиме и для её включения надо выполнить ряд действий (подобно как раньше в XCode проект подключался KMP модуль)

#kotlin #swift #kmp
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍1
📱 Как обнаружить обрезку текста в SwiftUI?
Давняя проблема еще со времен UIKit - калькуляция точного фрейма для текста. Самая частая задача это вычисление размера ячейки исходя из контента. В SwiftUI эта проблема перестала решаться вручную, но все еще существуют нюансы.

Проблема обрезки текста в SwiftUI:
🔵SwiftUI упрощает работу с текстом, но теряет контроль над его отображением.
🔵В статье рассматривается проблема адаптации макета для отображения описаний и сумм без обрезки.
🔵SwiftUI не предоставляет информации о усечении текста.
🔵Использование NSAttributedString сложно и чревато ошибками.
🔵Метод с фиксированным размером и вычислением геометрии позволяет определить необходимый размер для полного отображения текста.

Реализация решения
🟢Создана структура ZStackContainer для управления макетами.
🟢Используется функция для определения оптимального макета и установки его приоритета.
🟢ZStack отображает только выбранный макет, используя его размер как свой собственный.
🟢Интеграция этих механизмов позволяет решить сложные задачи верстки в SwiftUI.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Код Воробья для iOS разработчиков
☁️ Xcode Cloud вырубили для учеток РФ и РБ

Для физиков: смотрят реальное гео. Если аккаунт в Казахстане, но входите из мск — тоже вырубят. Даже с VPN как-то определяют

Для юриков: смотрят только регион аккаунта (не гео). Даже если добавленные в учетку разработчики в РФ — всё работает

Мы открываем компании в UK, на которые открывается Apple Developer Program без санкций
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔5🔥3
🚀 Хватит тушить баги в продакшене!

Приходи на открытый урок
"Покрываем проект на SwiftUI Unit-тестами и Snapshot-тестами"!

🗓 6 августа 20:00 МСК | Онлайн

За 90 минут вы:

Узнаете, как тестировать UI без боли через Snapshot-тесты
Научитесь разделять логику и вью для чистых тестов
Устраните рутину и ускорите разработку
Поймёте принципы стабильных тестов от Apple

🔥 Бонус для участников:
скидка на курс «iOS Developer. Professional»

👉 Регистрация на вебинар

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM