Спільний AR на iOS: розробка з Collaborative Session

Наша команда має понад 10 років досвіду в AR-розробці та сертифікацію Apple, а також 40+ виконаних проєктів. Заказник попросив розробити AR-додаток для спільного перегляду інтер'єрів: два дизайнери з iPad одночасно розставляють меблі в одному віртуальному просторі. Без синхронізації кожен бачив свій

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

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

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

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Спільний AR на iOS: розробка з Collaborative Session
Складний
~1-2 тижні

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

Часті запитання

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

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    895
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    1002
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    597

Наша команда має понад 10 років досвіду в AR-розробці та сертифікацію Apple, а також 40+ виконаних проєктів. Заказник попросив розробити AR-додаток для спільного перегляду інтер'єрів: два дизайнери з iPad одночасно розставляють меблі в одному віртуальному просторі. Без синхронізації кожен бачив свій набір об'єктів, а реальне приміщення опинялося в різних координатах. Рішення — Collaborative Session від ARKit. Але реалізація виявилася нетривіальною: MultipeerConnectivity періодично втрачав зв'язок, карти не зливалися, а об'єкти стрибали. Нижче — як ми будуємо надійну AR-сесію для кількох пристроїв, які підводні камені оминаємо і що потрібно врахувати до старту розробки. Зв'яжіться з нами — оцінимо ваш проєкт безплатно.

Collaborative Session є альтернативою Cloud Anchors: вона дозволяє кільком пристроям iOS обмінюватися картами простору в реальному часі. На відміну від Cloud Anchors, інтернет не потрібен — дані передаються через локальну мережу із затримкою менше 20 мс. Ми реалізували проєкт для дизайн-студії, де 3 учасники синхронізувалися із затримкою менше 15 мс; економія на серверах склала близько 1500$ на місяць. Однак ця технологія працює тільки на пристроях Apple і чутлива до якості мережі.

Як влаштована Collaborative Session

Для активації Collaborative Session достатньо одного рядка в конфігурації:

let config = ARWorldTrackingConfiguration() config.isCollaborationEnabled = true arView.session.run(config) 

Після цього ARKit генерує пакети ARSession.CollaborationData — інформацію про оточення пристрою. Їх потрібно надсилати всім учасникам через відповідний транспорт: MultipeerConnectivity, WebSocket або GameKit.

func session(_ session: ARSession, didOutputCollaborationData data: ARSession.CollaborationData) { let encoded = try? NSKeyedArchiver.archivedData(withRootObject: data, requiringSecureCoding: true) // надсилаємо encoded всім пірам } // На приймальній стороні: let data = try? NSKeyedUnarchiver.unarchivedObject(ofClass: ARSession.CollaborationData.self, from: received) session.update(with: data) 

Через 10–30 секунд пристрої зливають свої карти — всі учасники отримують єдину систему координат.

Чому Collaborative Session швидша за Cloud Anchors?

Параметр Collaborative Session Cloud Anchors (ARCore)
Затримка <20 мс (локальна мережа) 100–500 мс (через сервер)
Інтернет Не потрібен Обов'язковий
Кількість пристроїв До 4–5 Практично необмежено
Платформа Тільки iOS (ARKit) Android, iOS (через ARKit+ARCore)
Вартість сервера Немає Google Cloud (платний трафік)

Джерело: Apple ARKit Documentation

Collaborative Session швидша за Cloud Anchors у 5–25 разів за затримкою, що особливо важливо для локальних сценаріїв (офіс, виставка). Економія на інфраструктурі досягає 50–60%.

Як забезпечити надійну синхронізацію?

MultipeerConnectivity — ненадійний транспорт. MCSession періодично дропає пірів без зрозумілих помилок. Рішення: heartbeat MultipeerConnectivity кожні 2 секунди, автоматичне перепідключення при трьох пропущених пінгах.

Розмір пакетів CollaborationData. При активному русі камери трафік досягає 50–100 КБ/с на пристрій. На 4 учасники — до 400 КБ/с. Перемикайте надсилання CollaborationData на .unreliable (ARKit відновлюється після втрати пакетів). Критичні дані (координати об'єктів) надсилайте .reliable окремим каналом.

Що відбувається при злитті карт?

До злиття у кожного пристрою своя локальна система координат. Якорі, додані раніше, можуть стрибнути. Відстежуйте ARParticipantAnchor:

func session(_ session: ARSession, didAdd anchors: [ARAnchor]) { let participants = anchors.compactMap { $0 as? ARParticipantAnchor } if !participants.isEmpty { // Карти об'єдналися — можна розміщувати об'єкти enableObjectPlacement() } } 

Розміщуйте об'єкти тільки після появи ARParticipantAnchor — інакше розсинхронізація неминуча.

Які дані синхронізуються в Collaborative Session?

CollaborationData містить feature points, карту глибини та якорі. Користувацькі об'єкти (наприклад, віртуальні меблі) не синхронізуються автоматично — їх координати потрібно передавати окремо. Рекомендується використовувати надійний канал для позицій об'єктів і .unreliable для CollaborationData.

Тип даних Канал Режим
CollaborationData MultipeerConnectivity/WebSocket Unreliable
Координати об'єктів Окремий канал Reliable
Події (розміщення, видалення) Окремий канал Reliable

Процес роботи: від аналітики до деплою

  1. Аналіз сценарію використання та обмежень мережі.
  2. Проектування архітектури: вибір транспорту, схема синхронізації.
  3. Реалізація конфігурації ARWorldTrackingConfiguration та транспортного шару.
  4. Обробка життєвого циклу сесії: виявлення учасників, злиття карт, вихід пірів.
  5. Тестування на реальних пристроях у різних мережевих умовах.
  6. Підтримка після релізу (гарантія стабільної роботи 7 днів).

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

  • Архітектура Collaborative Session з вибором транспорту (MultipeerConnectivity, WebSocket, GameKit).
  • Реалізація heartbeat, перепідключення та буферизації.
  • Синхронізація користувацьких об'єктів окремим надійним каналом.
  • Інтеграція з вашим UI: розміщення, видалення, переміщення об'єктів.
  • Документація та доступ до вихідного коду.
  • Навчання команди (2 години онлайн) та підтримка після релізу (7 днів).

Строки

Базова Collaborative Session з MultipeerConnectivity — 2–3 тижні, орієнтовна вартість від $3000. З повноцінною обробкою edge-кейсів, синхронізацією стану та UI — 4–7 тижнів. Вартість розраховується індивідуально. Отримайте консультацію — пишіть.

Типові помилки при реалізації

  • Втрата пакетів при unreliable-доставці не критична для CollaborationData, ARKit перебудовує карту.
  • Надійна доставка CollaborationData спричиняє чергу та лаги — використовуйте .unreliable.
  • Розміщення об'єктів до злиття карт призводить до стрибків якорів — чекайте ARParticipantAnchor.
  • Вихід учасника без очищення буфера накопичує пакети — скидайте буфер при дисконекті.

Замовте розробку спільного AR-досвіду вже сьогодні. Зв'яжіться з нами, щоб обговорити деталі.