Розробка Apple Watch додатку (watchOS)
Клієнт замовив трекер тренувань для Apple Watch із синхронізацією даних на iPhone. Перша версія втрачала до 5% записів через те, що WCSession.sendMessage працював лише при активному додатку, а WKExtendedRuntimeSession не був налаштований. Ми перепроектували архітектуру: використали HKWorkoutSession для необмеженого фону та transferUserInfo для гарантованої доставки. Втрати даних скоротилися до 0.01%. Зараз додаток обробляє до 1000 тренувань на день без збоїв.
watchOS-додаток — це окремий таргет зі своїм життєвим циклом, обмеженими ресурсами (512 МБ RAM на Series 4, 1 ГБ на Series 9) та специфічними паттернами. Ми використовуємо SwiftUI, Combine та async/await для реактивної архітектури. Середній час розробки — 2–4 тижні для комплексного рішення. При налаштуванні code signing для watchOS потрібні окремі provisioning profiles — це часта помилка у початківців. Ми наполегливо рекомендуємо тестувати complications на реальних годинниках, оскільки симулятор не відображає справжню продуктивність та обмеження енергоспоживання.
В основі кожного проекту лежить глибокий аналіз сценаріїв використання: чи буде Watch працювати автономно або як companion-додаток? Від цього залежить вибір механізму синхронізації. Серед наших проектів — додатки для фітнесу, медитації та розумного дому, кожен з унікальною архітектурою. Ми спеціалізуємося на watchOS більше 5 років і випустили 20+ додатків у App Store. Замовте розробку watchOS додатку під ключ — від ідеї до публікації в App Store.
Як гарантувати доставку даних при синхронізації?
WCSession — канал зв'язку між додатками на iPhone та Watch. Не між пристроями в цілому, а саме між додатками. Три механізми передачі даних:
| Механізм | Коли працює | Швидкість | Гарантія доставки | Типове застосування |
|---|---|---|---|---|
| sendMessage | Обидва додатки активні | Миттєво | Ні (якщо Watch заснув) | Команди, запити даних у foreground |
| updateApplicationContext | Будь-який стан (у т.ч. фон) | При наступному пробудженні | Так, перезаписується | Поточний стан (тренування, налаштування) |
| transferUserInfo | Будь-який стан | По порядку, із затримкою | Так, черга | Логи подій, транзакції |
WatchConnectivity через sendMessage у 10 разів швидше, ніж updateApplicationContext, але вимагає активного додатку. Для фонової доставки — тільки updateApplicationContext або transferUserInfo.
WCSession.default.sendMessage(["action": "fetchData"], replyHandler: { reply in // Відповідь від iPhone }, errorHandler: { error in // Обробка помилки (Watch недоступний) }) try WCSession.default.updateApplicationContext(["lastSync": Date().timeIntervalSince1970]) Якщо додаток активний на обох пристроях — використовуйте sendMessage для негайної відповіді. Для фонової синхронізації стану (наприклад, поточні показники тренування) — updateApplicationContext. Для черги подій — transferUserInfo. Перевірка WCSession.default.isReachable асинхронна: завжди обробляйте errorHandler.
Чому complications розряджають батарею?
Часта помилка — часто оновлювати timeline або запитувати дані з мережі. Оптимальне рішення: оновлювати timeline раз на годину, використовувати HealthKit для локальних даних. Для економії заряду слідуйте рекомендаціям Apple щодо обмеження частоти оновлення.
Complications — елементи на циферблаті годинника. З ClockKit (застарілий) → тепер WidgetKit, аналогічний iOS. ComplicationConfiguration через WidgetConfiguration — той же API, що й iOS віджети. Сімейства: .circularSmall, .modularSmall, .modularLarge, .utilitarianSmall, .utilitarianLarge, .graphicCorner, .graphicBezel, .graphicCircular, .graphicRectangular, .graphicExtraLarge. Timeline у Complication працює як iOS WidgetKit: TimelineProvider, заздалегідь заповнені TimelineEntry. Годинник знає, що показати на наступні кілька годин — економія батареї. CLKComplicationDataSource.getPrivacyBehavior — що показувати на заблокованому циферблаті. hideOnLockScreen — приховати дані, показати пусту комплекцію.
Background Modes на watchOS
WKExtendedRuntimeSession — до 60 хвилин фонової роботи для специфічних сценаріїв:
-
workout— тренування (необмежений час з активним WorkoutSession) -
selfCare— медитація, дихальні вправи (до 10 хвилин після екрану) -
alarm— будильник (вимагає дозволу користувача) -
sleepTracking— відстеження сну (ніч)
Для трекінгу тренування: HKWorkoutSession + HKLiveWorkoutBuilder — офіційний API. Без HKWorkoutSession система агресивно вбиває фонові процеси. Мережеві запити у фоні через URLSession з фоновою конфігурацією не підтримуються — дані тільки через iPhone (WatchConnectivity) або при наступному foreground-запуску.
Технічна деталь: налаштування WKExtendedRuntimeSession
Для запуску необхідно викликати start() та вказати тип. Важливо: сесія вимагає явного invalidate() після завершення, інакше працюватиме до таймауту. Приклад:
let session = WKExtendedRuntimeSession() session.start(with: .workout) // ... session.invalidate() UX-особливості
Екран маленький: Series 4+ — 44mm (368×448pt retina). Мінімальний touch target — 44pt. Список рядків без складної ієрархії — найкраща навігація. Digital Crown — прокрутка контенту, zoom у MapKit, введення значень через Stepper або Picker з кастомним стилем. onLongPressGesture — працює, але вимагає 0.8 секунд за замовчуванням — часто випадкові спрацьовування. Haptic feedback через WKInterfaceDevice.current().play(.click) — важливий UX-елемент, де візуальні відповіді обмежені.
Що входить у розробку watchOS-додатку
- Проектування архітектури: Shared код з iOS, виділений watchOS-таргет.
- Налаштування WatchConnectivity: вибір механізму під ваш сценарій.
- Реалізація complications: підтримка 5+ сімейств, налаштування timeline.
- Інтеграція HealthKit / CoreMotion / інших датчиків.
- Тестування на реальних пристроях (Series 4, Series 9, Ultra).
- Підготовка для App Store: provisioning profiles, code signing, іконки.
- Документація з синхронізації та фонових завдань.
- Гарантійна підтримка 1 місяць після публікації.
Терміни та вартість
Повноцінний watchOS-додаток з WatchConnectivity та complications — 1–2 тижні. Простий companion-app (без власної логіки) — 3–5 днів. Вартість розраховується після аналізу вимог. Замовте безкоштовну консультацію — оцінимо проект. Зв'яжіться з нами для деталей.
Ми займаємося мобільною розробкою більше 5 років, випустили понад 20 додатків у App Store. Наші рішення працюють стабільно — гарантуємо дотримання App Store Review Guidelines та рекомендацій щодо продуктивності.
Отримайте консультацію інженера — це безкоштовно. Зв'яжіться з нами для детальної оцінки вашого проекту.







