Інтеграція 8th Wall для WebAR в мобільний додаток
8th Wall — платформа для WebAR на базі WebGL та кастомного SLAM-движка, працюючого прямо в браузері без ARKit/ARCore. Це означає, що AR-опит запускається по посиланню або QR-коду, без встановлення додатку. Для бізнесу це часто вирішальний аргумент: конверсія в «відкрив посилання» в рази вище, ніж «скачав додаток».
Інтеграція в існуючий мобільний додаток будується через WKWebView (iOS) або WebView/Custom Tabs (Android), де 8th Wall-сцена рендериться всередину нативного контейнера. Або як standalone PWA з диплінкингом з додатку.
Де зазвичай ломається
Камерний доступ всередину WKWebView. З iOS 14.3 Apple дозволила getUserMedia в WKWebView, але з обмовками: mediaTypesRequiringUserActionForPlayback повинен бути налаштований, та allowsInlineMediaPlayback = true. Без цього 8th Wall не отримає доступ до камери та виборе NotAllowedError. На Android ситуація простіша — Chrome WebView підтримує getUserMedia без спеціальних флагів з Chrome 89.
Продуктивність SLAM на бюджетних пристроях. 8th Wall використовує власний world tracking замість ARCore, що тяжче по CPU. На пристроях з Snapdragon 665 і нижче FPS у сцені з динамічним освітленням та кількома 3D-об'єктами падає до 18-22. Рішується: зниження poly count моделі до 15k трикутників, вимкнення real-time shadows, використання baked lightmaps в GLTF.
HTTPS-вимога. 8th Wall вимагає secure context для camera API. Локальна розробка через localhost проходить, але staging на HTTP — ні. WKWebView в додатку працює з будь-яким URL при NSAllowsLocalNetworking, але для production-сцен потрібен валідний SSL.
Як будуємо інтеграцію
Проект 8th Wall створюється в cloud IDE платформи — там же JavaScript/TypeScript сцени на базі A-Frame або Three.js + 8th Wall pipeline. Для нативної інтеграції:
iOS (WKWebView):
let config = WKWebViewConfiguration()
config.allowsInlineMediaPlayback = true
config.mediaTypesRequiringUserActionForPlayback = []
let webView = WKWebView(frame: .zero, configuration: config)
webView.load(URLRequest(url: URL(string: "https://your-8thwall-scene.8thwall.app/scene/")!))
WKUIDelegate потрібен для перехвату webView(_:requestMediaCapturePermissionFor:) — іначе пермішен-діалог не з'явиться.
Android (Custom Tab vs WebView): Custom Tabs запускають повноцінний Chrome з підтримкою WebXR API та камери — кращий варіант. Нативний WebView вимагає WebChromeClient з переопленим onPermissionRequest. Для seamless-інтеграції (без переходу в браузер) — WebView з кастомним UA-string, якщо платформа 8th Wall не визначає його як restricted.
Передача даних між нативним шаром та 8th Wall сценою — через WKScriptMessageHandler / addJavascriptInterface. Типовий кейс: передати userId або SKU продукту в сцену, щоб та завантажила правильну 3D-модель з CDN.
Ліцензування та обмеження
8th Wall працює по підписці: Starter ($99/мес), Pro ($250/мес), Enterprise (custom). Ліцензія привязана до домену. Для white-label продукту або кількох клієнтських доменів — тільки Enterprise. Враховуйте це на етапі оцінки.
Терміни
Інтеграція WebView-контейнера в існуючий додаток — 3-5 днів. Розробка самої AR-сцени на 8th Wall (1-2 об'єкти, базова взаємодія) — ще 5-10 днів. Вартість розраховується індивідуально після аналізу вимог до сцени та цільових пристроїв.







