SwiftUI + Metal під капотом Lumia Aqua: мій досвід розробки iOS-додатка для боротьби з тривогою
Усім привіт!
Нещодавно я запустив свій новий нативний iOS/iPadOS додаток Lumia Aqua, і хотів би поділитися, що під капотом його технічної реалізації.
Додаток — це особистий простір звукотерапії, створений, щоб допомогти людям впоратися з тривогою, подолати безсоння та знайти фокус. Головна ідея полягала у створенні середовища, де користувач фактично є співавтором аудіовізуального досвіду, який адаптується під його поточний ментальний стан.

Ось кілька технічних хайлайтів із процесу розробки:
- Гібридний UI (SwiftUI + UIKit): Архітектурно це мікс двох фреймворків. SwiftUI я використав для декларативної побудови інтерфейсу — це швидко, зручно і чудово підходить для чистого UI. Проте для максимального контролю над рендерингом я використав UIKit як надійний холдер для Metal-в’ю.
- Кастомні Metal-шейдери: Щоб ефект занурення був максимальним, я хотів створити реалістичні, плавні анімації біолюмінесцентних кілець, які імітують дотики до води. Оскільки це нативний додаток, Metal став єдиним правильним вибором для такої ідеї. Для застосунку, мета якого — знижувати тривожність, будь-які фризи анімації чи перегрів девайса є абсолютно неприпустимими. Metal дозволив отримати ідеальну плавність при стабільно комфортній температурі пристрою.
- Інтерактивний аудіорушій: Замість статичних треків я написав власний рушій мікшування аудіо. Користувачі не просто слухають — вони динамічно мікшують ембієнт-педи, звуки крапель води та інші акустичні елементи в реальному часі (звуки котрі дійсно заворожують), налаштовуючи точну інтенсивність звукового пейзажу під власні потреби.
- Технологія Theta Drone: Ядро аудіорушія спирається на математично вивірені частоти (від 174 Гц для сну до 963 Гц для глибокої медитації). Накладання цих значень на Theta-дрони вимагало ретельної обробки звуку (DSP), щоб уникнути кліпінгу та спотворень. На виході звук має залишатися кристально чистим і терапевтичним.
- Синхронізований дихальний асистент: Логіка дихальних патернів під капотом тісно зв’язана як із Metal-рендером, так і з аудіорушієм. Це дозволяє плавно синхронізувати фізичну реакцію користувача (вдих, затримка, видих) з акустичним середовищем для природного зниження частоти серцебиття та зняття паніки.
- Підписки (StoreKit 2): Ініціалізація та контроль наявності підписки реалізовані на сучасному стеку — StoreKit 2 у зв’язці з Combine для реактивного оновлення стейтів у SwiftUI.
Створення додатку, орієнтованого на покращення якості життя та активне зниження стресу, було для мене величезним passion-проєктом. Пошук того, як поєднати клінічну сторону звукотерапії з технічною стороною Swift, Metal та маніпуляціями зі звуком у реальному часі, став надзвичайно крутим досвідом навчання.
Буду радий почути ваші думки щодо UI або відповісти на будь-які запитання про створення інтерактивного аудіо та кастомних шейдерів на iOS!
Немає коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів