Розробка мобільного додатку для управління контентом AR-сцен
Команда маркетингу хоче оновити 3D-модель продукту в AR-додатку без участі розробника. Зараз це виглядає так: відправити задачу в Jira → розробник замінює файл → збірка → ревю → публікація → 2 тижні. AR CMS вирішує це: контент-менеджер завантажує нову USDZ-модель через веб-інтерфейс → додаток витягує оновлення при наступному запуску → без апдейту в App Store.
Архітектура AR Content Management System
Серверна частина. CMS для AR-контенту — це по суті файловий менеджер з метаданими та CDN. Мінімальний стек:
- Storage: S3 або аналог (Cloudflare R2 дешевше) для зберігання USDZ/glTF/відео
- База даних: PostgreSQL з таблицями
ar_scenes,ar_objects,ar_triggers - API: REST або GraphQL для CRUD операцій над сценами
- CDN: CloudFront або Cloudflare для швидкої доставки важких 3D-файлів по всьому світу
- Admin UI: React або Vue для контент-менеджера
Структура AR-сцени в JSON:
{
"sceneId": "product-launch-q4",
"trigger": { "type": "image", "referenceImageUrl": "...", "physicalWidth": 0.2 },
"objects": [
{
"modelUrl": "https://cdn.../product.usdz",
"iosUrl": "https://cdn.../product.usdz",
"androidUrl": "https://cdn.../product.glb",
"position": [0, 0.1, 0],
"scale": [1, 1, 1],
"animation": "idle_loop"
}
],
"publishedAt": "2025-03-01T00:00:00Z",
"expiresAt": "2025-06-01T00:00:00Z"
}
Мобільна сторона. При запуску (або за розкладом) додаток запитує актуальний маніфест сцен. Порівнюємо updatedAt з кешованою версією — якщо змінилось, скачуємо нові ассети. Зберігання локально: iOS — FileManager у Caches directory (система очищує при нехватці місця), Android — аналогічно через getCacheDir(). Критичний контент — у Documents/filesDir (не очищується).
Lazy loading: не завантажуємо всі моделі при старті, тільки після того як користувач відкрив конкретний AR-екран. URLSession.downloadTask з прогресом для великих файлів (>10 МБ).
Версіонування та rollback
Контент має бути версіонований. Якщо нова модель має проблеми — швидкий откат без публікації апдейту. Реалізуємо через version поле в маніфесті: CMS зберігає історію версій, API приймає ?version=latest або конкретний ID. Rollback — зміна current_version указівника в CMS без видалення файлів.
A/B тестування контенту: різні сцени для різних сегментів userId. Параметр variant в відповіді API визначає який контент завантажувати.
Валідація завантажувального контенту
Контент-менеджер може завантажити зламаний USDZ. Потрібна серверна валідація:
- Перевірка формату: USDZ = ZIP з
.usdc/.usdaвсередину. Парсимо заголовок на сервері - Розмір: ліміт на завантаження (наприклад, 50 МБ для моделі)
- Превью: автоматично рендеримо thumbnail з USDZ через
SceneKitна macOS сервері або через Reality Composer CLI - Попередження про високий полігонаж: лічимо poly count через USD Python API
Права доступу та workflow публікації
Для корпоративних клієнтів: ролі (viewer, editor, publisher, admin), approval workflow (контент створений → перевірений менеджером → опублікований). Temporal publishing: сцена стає активною у задане час — для сезонних кампаній без ручного включення.
Терміни: базовий AR CMS з веб-інтерфейсом, CDN та мобільним клієнтом для iOS — 6–10 тижнів. Повна система з Android, версіонуванням, approval workflow та аналітикою переглядів — 3–5 місяців. Вартість розраховується індивідуально.







