Collaborative AR shared experience implementation

NOVASOLUTIONS.TECHNOLOGY is engaged in the development, support and maintenance of iOS, Android, PWA mobile applications. We have extensive experience and expertise in publishing mobile applications in popular markets like Google Play, App Store, Amazon, AppGallery and others.
Development and support of all types of mobile applications:
Information and entertainment mobile applications
News apps, games, reference guides, online catalogs, weather apps, fitness and health apps, travel apps, educational apps, social networks and messengers, quizzes, blogs and podcasts, forums, aggregators
E-commerce mobile applications
Online stores, B2B apps, marketplaces, online exchanges, cashback services, exchanges, dropshipping platforms, loyalty programs, food and goods delivery, payment systems.
Business process management mobile applications
CRM systems, ERP systems, project management, sales team tools, financial management, production management, logistics and delivery management, HR management, data monitoring systems
Electronic services mobile applications
Classified ads platforms, online schools, online cinemas, electronic service platforms, cashback platforms, video hosting, thematic portals, online booking and scheduling platforms, online trading platforms

These are just some of the types of mobile applications we work with, and each of them may have its own specific features and functionality, tailored to the specific needs and goals of the client.

Showing 1 of 1 servicesAll 1735 services
Collaborative AR shared experience implementation
Complex
~1-2 weeks
FAQ
Our competencies:
Development stages
Latest works
  • image_mobile-applications_feedme_467_0.webp
    Development of a mobile application for FEEDME
    756
  • image_mobile-applications_xoomer_471_0.webp
    Development of a mobile application for XOOMER
    624
  • image_mobile-applications_rhl_428_0.webp
    Development of a mobile application for RHL
    1054
  • image_mobile-applications_zippy_411_0.webp
    Development of a mobile application for ZIPPY
    947
  • image_mobile-applications_affhome_429_0.webp
    Development of a mobile application for Affhome
    862
  • image_mobile-applications_flavors_409_0.webp
    Development of a mobile application for the FLAVORS company
    445

Implementing Collaborative AR Experience

Collaborative Session in ARKit allows multiple devices on same local network to exchange AR data: feature points, anchors, transformations. Unlike Cloud Anchors, no external server — devices build common map together, in real-time.

Enabled one line in configuration and turns out significantly more complex than seems.

How Collaborative Session Works

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

After this ARKit generates ARSession.CollaborationData packets with environment information from this device. Must send to other participants via any transport (MultipeerConnectivity, WebSocket, GameKit):

func session(_ session: ARSession, didOutputCollaborationData data: ARSession.CollaborationData) {
    let encoded = try? NSKeyedArchiver.archivedData(withRootObject: data, requiringSecureCoding: true)
    // send encoded to all peers
}

// On receiving side:
let data = try? NSKeyedUnarchiver.unarchivedObject(ofClass: ARSession.CollaborationData.self, from: received)
session.update(with: data)

Devices start building common map — each adds their feature points. Through 10–30 seconds maps merge, all participants see same coordinate system.

What Goes Wrong

MultipeerConnectivity — unreliable transport. MCSession periodically drops peers without clear errors. Device remains in connectedPeers list, but data doesn't arrive. Solution: heartbeat every 2 seconds + auto-reconnect on three missed pings.

CollaborationData packet size. With active camera movement — to 50–100 KB/s per device. On 5 participants — 250–500 KB/s outgoing traffic. MCSession with reliable delivery (.reliable) creates queue and lags. Switch to .unreliable for CollaborationData — individual packet loss non-critical, ARKit recovers. Critical data (object placement) send .reliable on separate channel.

Map merge moment. Before merge devices work in own local coordinate systems. Anchors added before merge can jump during sync. Track ARParticipantAnchor — when another participant appears in scene means maps merged:

func session(_ session: ARSession, didAdd anchors: [ARAnchor]) {
    let participants = anchors.compactMap { $0 as? ARParticipantAnchor }
    if !participants.isEmpty {
        // Maps merged — can place objects
        enableObjectPlacement()
    }
}

Placing objects before ARParticipantAnchor — get desync between participants.

iOS-only limitation. Collaborative Session works only between Apple devices. For Android — only ARCore Cloud Anchors.

Practical Case

Corporate AR app for office planning collaboration. 4 participants with iPad Pro in one room. Collaborative Session via MultipeerConnectivity. Each could drag virtual furniture, others saw changes with ~100 ms delay.

Main problem: when participant left room MCSession dropped them, but ARKit kept sending data to void and queued buffer. On return — avalanche of accumulated packets froze UI. Solution: on peer loss — immediately clear buffer and reconnect from scratch.

What's Included

  • Setting ARWorldTrackingConfiguration with isCollaborationEnabled
  • Implementing transport layer via MultipeerConnectivity or GameKit
  • Handling session lifecycle: discovering participants, map merge, peer exit
  • Syncing user data on top of AR space
  • Testing on real devices in different network conditions

Timeline

Basic Collaborative Session with MultipeerConnectivity — 2–3 weeks. With full edge-case handling, state sync and UI — 4–7 weeks. Cost calculated individually.