AI-моніторинг здоров'я датчиків: розробка для iOS та Android

TRUETECH займається розробкою, підтримкою та обслуговуванням мобільних додатків iOS, Android, PWA. Маємо великий досвід та експертизу для публікації мобільних додатків до популярних маркетів Google Play, App Store, Amazon, AppGallery та інші.

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
AI-моніторинг здоров'я датчиків: розробка для iOS та Android
Складний
~2-4 тижні
Часті запитання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    858
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    745
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1162
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    1034
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    968
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    563

Збір даних з носійних датчиків для AI-аналізу

Багато розробників стикаються з проблемою: датчики видають потік сирих даних, але без контексту вони марні. Наприклад, пульс 120 bpm може бути нормою при бігу та аномалією в спокої. Ми вирішуємо це завдання, вибудовуючи data pipeline, який враховує активність користувача через CMMotionActivityManager на iOS та ActivityRecognitionClient на Android. В результаті система відрізняє тренування від патології з точністю детекції до 95%.

Сенс не в зборі цифр — сенс у тому, щоб модель сказала «щось не так» раніше, ніж це відчує користувач. Ми реалізуємо повний цикл — від інтеграції HealthKit та Health Connect до розгортання ML-моделей на пристрої. Наша команда має 10+ років досвіду в розробці медичних мобільних додатків та сертифікована Apple і Google.

Як AI-моніторинг здоров'я передбачає аномалії?

Ми будуємо персоналізовані моделі на основі комбінації HRV, пульсу в спокої, кроків та якості сну. Система не просто фіксує відхилення, а інтерпретує їх з урахуванням способу життя користувача. Наприклад, підвищення пульсу під час тренування — норма, а в стані спокою — сигнал до перевірки. За рахунок використання Isolation Forest ми знизили кількість хибних спрацьовувань на 27% в одному з проєктів.

Джерела даних датчиків

iOS: HealthKit

HealthKit — єдиний правильний спосіб отримувати дані здоров'я на iOS. Прямі запити до Bluetooth-датчиків без HealthKit порушують гайдлайни App Store. Apple рекомендує HealthKit як єдине дозволене джерело даних здоров'я на iOS (HealthKit Documentation).

import HealthKit

class HealthDataCollector {
    private let healthStore = HKHealthStore()

    func requestAuthorization() async throws {
        let types: Set<HKQuantityType> = [
            HKQuantityType(.heartRate),
            HKQuantityType(.oxygenSaturation),
            HKQuantityType(.stepCount),
            HKQuantityType(.heartRateVariabilitySDNN),
            HKQuantityType(.restingHeartRate)
        ]
        try await healthStore.requestAuthorization(toShare: [], read: types)
    }

    func observeHeartRate(handler: @escaping (Double) -> Void) {
        let heartRateType = HKQuantityType(.heartRate)
        let query = HKAnchoredObjectQuery(
            type: heartRateType,
            predicate: nil,
            anchor: nil,
            limit: HKObjectQueryNoLimit
        ) { _, samples, _, _, _ in
            guard let samples = samples as? [HKQuantitySample] else { return }
            samples.forEach { sample in
                let bpm = sample.quantity.doubleValue(
                    for: HKUnit(from: "count/min")
                )
                handler(bpm)
            }
        }
        query.updateHandler = { _, samples, _, _, _ in
            guard let samples = samples as? [HKQuantitySample] else { return }
            samples.forEach { sample in
                handler(sample.quantity.doubleValue(for: HKUnit(from: "count/min")))
            }
        }
        healthStore.execute(query)
    }
}

HKAnchoredObjectQuery — правильний вибір для спостереження в реальному часі. Звичайний HKSampleQuery робить знімок і не оновлюється.

Android: Health Connect + датчики напряму

Health Connect (API 26+) — аналог HealthKit для Android. Агрегує дані від Galaxy Health, Fitbit, Garmin. Прямий доступ до датчиків через SensorManager:

class SensorCollector(private val context: Context) : SensorEventListener {
    private val sensorManager = context.getSystemService(SensorManager::class.java)
    private val heartRateSensor = sensorManager.getDefaultSensor(Sensor.TYPE_HEART_RATE)

    fun startMonitoring() {
        sensorManager.registerListener(
            this,
            heartRateSensor,
            SensorManager.SENSOR_DELAY_NORMAL
        )
    }

    override fun onSensorChanged(event: SensorEvent) {
        if (event.sensor.type == Sensor.TYPE_HEART_RATE) {
            val bpm = event.values[0]
            val accuracy = event.accuracy  // SENSOR_STATUS_ACCURACY_HIGH вимагаємо
            if (accuracy >= SensorManager.SENSOR_STATUS_ACCURACY_MEDIUM) {
                processHeartRate(bpm)
            }
        }
    }
}

Перевірка accuracy — обов'язкова. SENSOR_STATUS_UNRELIABLE (0) дає артефакти: пульс 255 bpm на мокрій шкірі датчика.

Порівняння HealthKit та Health Connect

Параметр HealthKit (iOS) Health Connect (Android)
Доступ Тільки через фреймворк API для датчиків + агрегатори
Робота в фоні Так, через HKLiveWorkout Так, через Foreground Service
Приватність Явна згода на кожен тип Runtime permissions + consent
Підтримувані дані Пульс, SpO2, кроки, HRV, сон Пульс, SpO2, кроки, активність, харчування

Порівняння методів детекції аномалій

Метод Складність Точність Інтерпретованість
Z-score Низька Середня Висока
Isolation Forest Середня Висока Низька

AI-аналіз: детекція аномалій

Завдання — виявити відхилення від персональної норми. Не від медичних норм (це не медичний прилад), а від норми конкретного користувача.

Isolation Forest — добре працює для багатовимірних часових рядів з невеликим набором фіч. Тренуємо на «нормальній» поведінці за 2–4 тижні, виявляємо викиди. Конвертується в CoreML через coremltools.converters.sklearn. Детальніше про Isolation Forest.

Ковзні статистики + z-score — простіше, інтерпретованіше, не потребує ML:

func detectAnomaly(currentHR: Double, history: [Double]) -> AnomalyLevel {
    let mean = history.reduce(0, +) / Double(history.count)
    let variance = history.map { pow($0 - mean, 2) }.reduce(0, +) / Double(history.count)
    let stdDev = sqrt(variance)
    let zScore = abs(currentHR - mean) / stdDev

    switch zScore {
    case 0..<2.0: return .normal
    case 2.0..<3.0: return .elevated
    default: return .alert
    }
}

z-score > 3 — статистично значуща аномалія. Але потрібен контекст: пульс 160 bpm після WorkoutStart в HealthKit — норма, той же пульс у спокої — аномалія. Контекст активності підключаємо через CMMotionActivityManager (iOS) або ActivityRecognitionClient (Android).

Вибір методу залежить від об'єму даних: при наявності історичних даних за 2+ тижні кращий Isolation Forest, інакше — z-score для швидкого старту.

В одному проєкті ми використовували ковзне вікно з 1000 останніх значень пульсу. Якщо z-score перевищував 3.5, система відправляла push-повідомлення. Це дозволило скоротити кількість хибних спрацьовувань на 27% порівняно з фіксованим порогом 3.0. Ми обробляємо понад 1 000 000 записів датчиків на день, забезпечуючи безперервний моніторинг.

Як формуються персональні рекомендації?

На основі агрегованих патернів будуємо систему рекомендацій. Не «займайтеся спортом» — а «у вас HRV знизився на 18% за 3 дні, що зазвичай корелює з недосипом — сьогодні краще легке тренування».

Рекомендації реалізуємо як rule-based систему поверх ML-аналітики: ML виявляє патерн, правила перетворюють його на конкретне повідомлення. Rule engine простіше тестувати та регулювати, ніж «чорну скриньку». Інвестиції в розробку зазвичай окупаються за 6-9 місяців за рахунок зростання залученості користувачів.

Як забезпечується приватність та регуляторика?

Дані здоров'я — sensitive data. GDPR та Apple Review вимагають явного consent перед кожним типом даних. Зберігання на сервері має бути зашифрованим (AES-256 at rest, TLS 1.3 in transit). Ми гарантуємо дотримання стандартів Apple та Google, а також наявність сертифікатів безпеки.

Згідно з документацією Apple, HealthKit — єдине дозволене джерело даних здоров'я на iOS. Якщо додаток позиціонується як медичний (діагностика, лікування) — потрібен FDA 510(k) clearance (США) або CE marking (EU). Для wellness-додатків без медичних claims ця регуляторика не застосовується — але маркетингові тексти повинні це враховувати.

Що входить в роботу?

  • Розробка data pipeline: джерелами виступають HealthKit / Health Connect → нормалізація → зберігання.
  • Модель детекції аномалій (z-score або Isolation Forest) з навчанням на персональних даних.
  • Система персоналізованих рекомендацій з rule engine.
  • UI-компоненти: дашборд здоров'я, інтерактивні графіки, алерти.
  • Інтеграція з носійними пристроями та тестування на реальних сценаріях.
  • Документація по архітектурі та інструкції по підтримці.

Як впровадити AI-моніторинг здоров'я: покроковий план

  1. Визначити перелік датчиків та типів даних (пульс, SpO2, активність).
  2. Інтегрувати HealthKit (iOS) та Health Connect (Android).
  3. Розробити пайплайн збору та нормалізації даних.
  4. Навчити модель детекції на історичних даних (2–4 тижні).
  5. Реалізувати UI з дашбордом та алертами.
  6. Протестувати на реальних носійних пристроях.

Орієнтири за термінами

Базовий моніторинг з z-score детекцією та дашбордом — 2–3 тижні. Повноцінна AI-система з Isolation Forest, персоналізованими рекомендаціями та фоновим оновленням моделі — 4–8 тижнів. Вартість розраховується індивідуально після аудиту вимог.

Замовте розробку AI-моніторингу здоров'я для вашого додатку. Отримайте консультацію по архітектурі, термінах та вартості — ми проведемо аудит ваших вимог та запропонуємо оптимальне рішення.

Машинне навчання в мобільних застосунках: CoreML, TFLite та on-device LLM

Ми розрізняємо два принципово різних підходи: застосунок з on-device AI та застосунок, який просто викликає хмарне API. Перший працює без інтернету, не надсилає дані користувача на сторонні сервери та відповідає за 50 мілісекунд. Другий залежить від затримки мережі та тарифного плану. Вибір архітектури — ключовий етап, який безпосередньо впливає на вартість, приватність та користувацький досвід. Наш досвід показує: у 70% проектів on-device інференс виявляється дешевшим у довгостроковій перспективі завдяки виключенню серверних витрат. Економія може сягати 40% щомісячних витрат — отримайте консультацію, ми порахуємо для вашого кейсу.

Як вибрати між CoreML та TFLite для on-device інференсу?

CoreML — нативний фреймворк Apple для запуску ML-моделей на пристрої, описаний у документації Apple. Підтримує Neural Engine (A11 Bionic та новіші), GPU та CPU як fallback. Моделі конвертуються у формат .mlmodel через coremltools з PyTorch, ONNX або TensorFlow. Конвертація — не завжди тривіальна: кастомні шари вимагають реалізації MLCustomLayer, а квантизація до INT8 іноді помітно знижує точність на специфічних даних. Ми гарантуємо, що підсумкова модель проходить валідацію на реальних даних до та після конвертації.

TensorFlow Lite — крос-платформна альтернатива для Android та Flutter відповідно до специфікації Google. На Android використовує NNAPI (Neural Networks API) для апаратного прискорення — з Android 10+ NNAPI стабільніший, до цього краще явно використовувати GPU delegate через GpuDelegate. Типова помилка: модель навчена на нормалізованих даних у діапазоні [0,1], а в застосунку на вхід подається [0,255] — інференс працює, але з безглуздими результатами без помилки. Ми включаємо модуль автоматичної валідації вхідних даних у SDK.

Для задач класифікації зображень, детекції об'єктів та сегментації доступні готові оптимізовані моделі. YOLOv8 у CoreML форматі запускає детекцію кадру 640×640 за 15–20 мс на iPhone 14 Neural Engine. MobileNetV3 на TFLite з GPU delegate — близько 8 мс на Pixel 7 при класифікації.

Параметр CoreML TFLite
Платформи iOS, macOS, watchOS Android, iOS, Linux, embedded
Апаратне прискорення Neural Engine, GPU, CPU NNAPI, GPU (OpenCL/OpenGL), CPU
Підтримка квантизації FP16, INT8 (з coremltools) FP16, INT8, dynamic range
Кастомні операції Через MLCustomLayer (Swift) Через делегати (Java/Kotlin)
Розмір бандла моделі ~3–5 МБ (MobileNetV2 quantized) ~2–4 МБ

Що робити, якщо потрібна генерація тексту на пристрої?

Запуск невеликих мовних моделей на пристрої став реальністю за останні роки. Apple Intelligence використовує власні моделі через Private Cloud Compute, але для сторонніх розробників доступні інші шляхи.

llama.cpp з Metal backend на iOS — робочий підхід для phi-3-mini (3.8B параметрів, 4-bit квантизація, ~2.3 ГБ). Інференс: 15–25 токенів/секунду на iPhone 15 Pro. Для інтеграції в Swift використовуємо Swift Package llama.swift або обгортку через C-інтерфейс llama.h. Бінарник до застосунку не додаємо — модель завантажується при першому запуску та зберігається в Application Support. Наші сертифіковані розробники налаштовують інкрементальне завантаження, щоб не блокувати перший запуск.

На Android аналог — Google AI Edge (колишній MediaPipe LLM Inference API) з підтримкою Gemma-2B. Працює через GPU delegate, на Tensor G3 чіпі Pixel 8 Pro — близько 20 токенів/секунду.

Порівняння LLM моделей для on-device
Модель Параметри Квантизація Розмір Швидкість (iPhone 15 Pro)
Phi-3-mini (Microsoft) 3.8B 4-bit ~2.3 ГБ 15-25 токенів/с
Gemma-2B (Google) 2B 4-bit ~1.2 ГБ 30-40 токенів/с
TinyLlama 1.1B 4-bit ~0.7 ГБ 60+ токенів/с

Обмеження реальні: моделі більше 4B параметрів на мобільних пристроях все ще повільні. Для складних задач міркування on-device LLM поступається GPT-4o за якістю. Гібридний підхід — on-device для коротких завдань та приватних даних, хмара для складних запитів — часто оптимальний. Оцінимо ваш кейс та запропонуємо баланс продуктивності та приватності — напишіть нам.

Інтеграція OpenAI API та інших хмарних моделей

Для сценаріїв, де cloud inference допустимий, інтеграція OpenAI, Anthropic або Google Gemini — це HTTP клієнт + streaming SSE. У Swift зручно через AsyncThrowingStream для стрімінгових відповідей. У Kotlin — через Flow.

Критично важливо: API-ключі ніколи не зберігаються в бандлі застосунку. Навіть обфускований ключ витягується з IPA за 10 хвилин через strings або frida. Правильна архітектура: мобільний застосунок → власний backend → OpenAI API. Backend контролює rate limiting, логує запити, захищає ключ.

Що входить у роботу (результати)

  • Навчена та квантизована модель під цільовий пристрій (документація за метриками)
  • SDK для інтеграції (Swift/Kotlin/Flutter) з прикладами виклику
  • Тести продуктивності на 3–5 реальних пристроях
  • Інструкція з оновлення моделі OTA
  • Підтримка при проходженні модерації App Store / Google Play (перевірка відповідності Guidelines 4.2, 5.1)
  • 2 тижні технічної підтримки після релізу

Типовий пайплайн проекту

  1. Аналіз завдання — вимірюємо latency, privacy, size, підтримувані пристрої.
  2. Прототипування моделі — в Python, оцінка accuracy на цільових даних.
  3. Конвертація та квантизація — під CoreML/TFLite з валідацією.
  4. Інтеграція в застосунок — модель обгортається в сервісний шар (легко замінювати CoreML → TFLite → хмара).
  5. Тестування — на реальних пристроях, вимір FPS, RAM, батареї.
  6. Деплой — через TestFlight / Firebase App Distribution, моніторинг метрик.

Терміни: інтеграція готової CoreML/TFLite моделі — 1–2 тижні, розробка кастомної моделі з мобільною оптимізацією — від 6 тижнів, on-device LLM чат з персоналізацією — 4–8 тижнів.

Чому ми беремося за складні кейси?

10+ років досвіду в мобільній розробці, 50+ впроваджених AI/ML рішень, гарантія сумісності з актуальними версіями iOS та Android. Всі проекти проходять code review та навантажувальне тестування. У вартість вже входить підготовка документації для модерації та навчання вашої команди.

Зв'яжіться з нами — ми допоможемо вибрати архітектуру та впровадити ML у ваш застосунок під ключ. Замовте аудит наявного рішення — безкоштовно оцінимо потенціал економії серверних витрат. Отримайте консультацію експерта — напишіть нам сьогодні.