SwiftUI + Metal під капотом Lumia Aqua: мій досвід розробки iOS-додатка для боротьби з тривогою

💡 Усі статті, обговорення, новини про Mobile — в одному місці. Приєднуйтесь до Mobile спільноти!

Усім привіт!

Нещодавно я запустив свій новий нативний iOS/iPadOS додаток Lumia Aqua, і хотів би поділитися, що під капотом його технічної реалізації.

Додаток — це особистий простір звукотерапії, створений, щоб допомогти людям впоратися з тривогою, подолати безсоння та знайти фокус. Головна ідея полягала у створенні середовища, де користувач фактично є співавтором аудіовізуального досвіду, який адаптується під його поточний ментальний стан.

Lumia Aqua screensots

Ось кілька технічних хайлайтів із процесу розробки:

  • Гібридний 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!

👍ПодобаєтьсяСподобалось8
До обраногоВ обраному0
LinkedIn
Ctrl + Enter
Ctrl + Enter

Підписатись на коментарі