Интеграция шлема Meta Quest с мобильным приложением-компаньоном
Meta Quest 3 — автономный VR-шлем, но полноценный продуктовый опыт часто требует мобильного компаньона: управление настройками, передача медиаконтента, мультиплеерное лобби, покупки и подписки. Задача не тривиальная: шлем работает под Android-based OS с ограниченным доступом, а Meta предоставляет несколько разных каналов коммуникации с разными ограничениями.
Способы связи Quest ↔ мобильное приложение
Meta Companion App SDK (официальный путь для потребительских продуктов). Meta не открывает публичный SDK для произвольной коммуникации Quest ↔ телефон в обычном смысле. Официальный маршрут для разработчиков — через Meta Platform SDK, который предоставляет:
- Авторизацию через Meta аккаунт (OAuth 2.0 через Meta API)
- Notifications API: телефон получает события из Quest (друг онлайн, приглашение в комнату)
- Deep links: мобильное приложение открывает контент в Quest через
oculus://URI scheme
Local network (LAN). Quest 3 и телефон в одной Wi-Fi сети — самый гибкий канал. На Quest стороне: Android приложение на Kotlin/Java, слушает WebSocket или REST. На мобильной стороне: обычный HTTP-клиент. Обнаружение Quest в сети: mDNS через NsdManager (Android) или Network.framework + Bonjour (iOS). Этот подход используем для enterprise-решений, где Quest управляется корпоративным MDM.
Bluetooth. Quest 3 поддерживает BT 5.1. На стороне Quest — Android BT GATT Server или Classic SPP. Ограничение: throughput ~1–2 Mbit/s, не для медиа, но достаточно для команд управления и телеметрии.
USB (ADB-режим через USB-C). Для developer tools и enterprise-деплоя. Через ADB можно передавать файлы (adb push), устанавливать APK, считывать логи. В production-приложениях не используется.
Архитектура companion app
Типичный сценарий: пользователь выбирает контент и настройки на телефоне → Quest подгружает и запускает.
[iOS/Android companion] ──HTTP/WS──► [Backend API]
│
[Meta Quest app] ─────────────────────────┘
Quest-приложение и мобильное синхронизируются через общий backend, а не напрямую — это надёжнее и работает без LAN. Для realtime (например, телефон как контроллер в VR) — WebSocket через relay сервер с latency 50–100 мс, что приемлемо для неигровых взаимодействий.
Meta Multiplayer SDK (Photon + Meta Parties). Если продукт — социальная VR-платформа, используем Meta Platform SDK Groups, Parties, Invites. Компаньон-приложение на телефоне показывает список друзей, онлайн-статусы из Meta Social Graph (с разрешения пользователя через Meta Login), отправляет invites в VR-комнату.
Специфика мобильной стороны
iOS deep linking из Quest. Когда пользователь принимает invite в Quest — телефон должен открыться на нужном экране. Реализуем через Universal Links + oculus:// custom scheme. В Swift: UIApplicationDelegate.application(_:open:options:) обрабатывает входящую ссылку, парсим параметры, навигируем.
Content management. Медиафайлы (видео, изображения, 3D-модели) загружаются через телефон в облако → Quest скачивает. Не через прямую передачу телефон→шлем (слишком медленно через BT, LAN-вариант ненадёжен). CDN + pre-signed URL из S3 или аналога.
Уведомления. Quest-приложение через Meta Platform SDK отправляет события → сервер → FCM/APNs → телефон. Стандартный push-notification flow, ничего специфичного.
Публикация и ограничения
Quest-приложение публикуется в Meta Horizon Store (прежде Oculus Store) или через App Lab (без ревью, для закрытого тестирования). Companion mobile app — в App Store / Google Play. Meta Horizon Store имеет собственные гайдлайны контентного ревью, отдельные от Apple/Google.
Сроки: companion-приложение с LAN-связью и базовым контент-менеджментом — 6–10 недель. Полная интеграция с Meta Platform SDK (авторизация, инвайты, социальные функции) + iOS/Android companion — 3–5 месяцев. Стоимость рассчитывается индивидуально.







