Інтеграція Nearby Interaction (Apple) для UWB в iOS-додатку

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

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

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

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

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1735 послуг
Інтеграція Nearby Interaction (Apple) для UWB в iOS-додатку
Середній
~5 днів
Часті запитання

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

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

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

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    792
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    671
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1097
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    969
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    914
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    495

Інтеграція Nearby Interaction (Apple UWB) у iOS-додаток

Nearby Interaction — фреймворк Apple для визначення точної дистанції та напрямку до іншого iPhone або аксесуара з чипом U1/U2. Це не Bluetooth proximity, не iBeacon та не GPS. UWB (Ultra Wideband) працює на сантиметровій точності: додаток отримує distance у метрах з точністю ±10–15 см та direction — 3D-вектор до пристрою у просторі (на iPhone 14 Pro+ через двунаправлені антени).

Використовується для: точного наведення у шеринзі файлів та платежах, знаходження загублених предметів (як AirTag), управління умним домом з прив'язкою до простору, AR-додатків з реальною просторовою прив'язкою.

Обмеження, які потрібно знати до старту

Тільки iPhone 11 та новіше. Чип U1 вперше з'явився у iPhone 11. iPhone SE (усі покоління) — без UWB. iPad — без UWB (крім спеціалізованих конфігурацій). Додаток обов'язково повинен перевіряти NISession.deviceCapabilities.supportsPreciseDistanceMeasurement.

Лише на переднему плані. NISession працює лише коли додаток на переднему плані. Без винятків. Якщо потрібно вимірювання у фоні — UWB не підходить, це апаратне обмеження.

Два пристрої, одна сесія. Для P2P-вимірювання обидва пристрої повинні створити NISession та обміняти NIDiscoveryToken. Токен неможна передати заздалегідь — він генерується при створенні сесії та змінюється при кожному перезапуску. Обмін токенами відбувається через MultipeerConnectivity, Bluetooth, сервер — на вашу вибір.

Як влаштована сесія

import NearbyInteraction
import MultipeerConnectivity

class UWBSessionManager: NSObject, NISessionDelegate {
  private var niSession = NISession()
  private var peerToken: NIDiscoveryToken?

  override init() {
    super.init()
    niSession.delegate = self
  }

  func startSession(with peerToken: NIDiscoveryToken) {
    let config = NINearbyPeerConfiguration(peerToken: peerToken)
    config.isCameraAssistanceEnabled = true  // Camera Assistance на iPhone 14 Pro+
    niSession.run(config)
  }

  func session(_ session: NISession,
               didUpdate nearbyObjects: [NINearbyObject]) {
    guard let peer = nearbyObjects.first else { return }

    if let distance = peer.distance {
      print("Distance: \(distance) m")
    }
    if let direction = peer.direction {
      print("Direction: \(direction)")  // simd_float3
    }
  }

  func session(_ session: NISession,
               didInvalidateWith error: Error) {
    // NIErrorCode.userDidNotAllow, .resourceUsageLimitReached, .sessionFailed
    // при .resourceUsageLimitReached — просто перезапустити сесію
  }
}

Обмін токенами через MultipeerConnectivity

Найпоширеніший підхід для P2P: використовуємо MCSession для передачі токена, а потім запускаємо NISession. Важливо: NIDiscoveryToken неможна передати як рядок — він Codable, кодуємо через NSKeyedArchiver:

let tokenData = try NSKeyedArchiver.archivedData(
  withRootObject: niSession.discoveryToken!,
  requiringSecureCoding: true
)
mcSession.send(tokenData, toPeers: peers, with: .reliable)

На приймаючій стороні:

let token = try NSKeyedUnarchiver.unarchivedObject(
  ofClass: NIDiscoveryToken.self,
  from: data
)

Спроба передати токен через JSON-кодування — не працює, NIDiscoveryToken не Encodable у стандартному смислі.

Camera Assistance

На iPhone 14 Pro та 15 серії доступний режим isCameraAssistanceEnabled = true. При цьому система показує нативний AR overlay поверх камери, допомагаючи наводитися на пристрій. Користувач бачить стрілку-указник. Активується лише якщо користувач дав дозвіл на камеру. Додає задержку ~200 мс до отримання перших direction-даних.

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

  • Перевірка сумісності пристрою (NIDeviceCapability)
  • Настройка NISession з конфігурацією для P2P або аксесуарів (NINearbyAccessoryConfiguration)
  • Механізм обміну NIDiscoveryToken (через MultipeerConnectivity, Bluetooth або REST)
  • Обробка оновлень дистанції/напрямку у реальному часі
  • Camera Assistance overlay
  • Обробка помилок та перезапуск сесії
  • Тестування на двох фізичних пристроях (симулятор UWB не підтримує)

Терміни

5 днів. Тестування вимагає двох реальних iPhone з U1/U2 — симулятор недостатній. Вартість розраховується індивідуально після аналізу сценарію використання.