Мобильные

Как добавить виртуальную примерку в мобильное приложение

Webview или нативный SDK — выбор определяет скорость, разрешения и удержание пользователей

  • Автор YourSizer Editorial
  • Опубликовано
  • 7 мин чтения
На этой странице
  1. Webview vs Нативный SDK: Что На Самом Деле Меняется
  2. Управление Камерой и Разрешениями Без Потери Пользователя
  3. Бюджет Производительности для Рендеринга на Устройстве
  4. Мобильные UX-Паттерны, Которые Удерживают Людей в Потоке
  5. Где YourSizer Вписывается
  6. Часто задаваемые вопросы
  7. Заключение

Мобильные покупатели теперь ожидают получить тот же опыт виртуальной примерки внутри приложения, что и в веб-браузере, но неправильный запрос разрешения камеры или медленный рендер могут подорвать сеанс за считанные секунды. Мобильные приложения для моды, которые это делают плохо, видят, как пользователи уходят еще до того, как увидят одежду на своем теле. Инженерные решения, которые вы принимаете на первом спринте — webview или нативный SDK — определяют, станет ли виртуальная примерка драйвером удержания или генератором тикетов поддержки.

Добавление виртуальной примерки в нативное приложение iOS или Android — это совершенно другая проблема, чем добавление её на веб-сайт. Мобильные пользователи менее терпеливы к времени загрузки, более чувствительны к диалогам разрешений и быстрее отказываются от функции, которая кажется приклеенной к приложению, а не встроенной нативно. Это руководство проходит по реальным инженерным решениям: как выбрать между обёрткой webview и нативным SDK, как управлять разрешениями камеры и фотогалереи без испуга пользователей, как поддерживать приемлемые частоты кадров и времена загрузки на устройствах среднего класса и какие UX-паттерны действительно удерживают людей в потоке.

Webview vs Нативный SDK: Что На Самом Деле Меняется

Встроенный webview загружает ваш существующий веб-опыт виртуальной примерки в компонент WKWebView (iOS) или WebView (Android). Это самый быстрый способ развёртывания — часто несколько дней интеграции — потому что вы переиспользуете один и тот же pipeline рендеринга, логику определения размера и интерфейс, которые уже построили для браузера. Компромисс — это контроль: webview добавляют уровень JavaScript-моста между камерой и pipeline рендеринга, что вводит задержку и заставляет запросы разрешения камеры казаться пришедшими "с веб-сайта", а не из приложения.

Нативный SDK, напротив, выполняет рендеринг внутри собственной иерархии представлений вашего приложения, используя нативные API камеры платформы (AVFoundation на iOS, CameraX на Android) и нативный или основанный на WebGL движок рендеринга. Интеграция требует больше времени и обычно требует работы, специфичной для каждой платформы для iOS и Android, но она устраняет накладные расходы моста, даёт вам прямой контроль над временем разрешения и позволяет вам согласовать интерфейс виртуальной примерки с языком дизайна остального вашего приложения.

ФакторВстроенный webviewНативный SDK
Время интеграцииДни1-3 недели на платформу
Задержка камерыВыше (JS-мост)Ниже (прямой доступ к API)
Контроль UX разрешенийОграниченныйПолный контроль
Устойчивость к плохой сети / оффлайнСлабаяСильнее (локальное кеширование)
Трение при проверке в app storeНизкоеНемного выше (проверка описания использования камеры)
ОбслуживаниеЕдиная кодовая базаОбновления для каждой платформы

Для большинства мобильных приложений моды прагматичный путь — начать со встроенного webview для проверки спроса, а затем перейти на нативный SDK, когда использование виртуальной примерки оправдает инженерные инвестиции. Сразу прыгать на полную нативную сборку до того, как вы узнаёте, действительно ли покупатели хотят эту функцию — это частый способ потратить четверть roadmap'а на неправильное.

Управление Камерой и Разрешениями Без Потери Пользователя

iOS и Android оба требуют явного запроса разрешения перед тем, как приложение сможет получить доступ к камере, и обе платформы позволяют пользователю отказаться постоянно после одного отказа. Это означает, что ваш первый запрос имеет огромное значение — часто нет чистого второго шанса без отправки пользователя в системные параметры. Пустой, необъяснённый системный диалог, который появляется в тот момент, когда кто-то нажимает "Примерить", имеет материально худший коэффициент принятия, чем диалог, которому предшествует краткое объяснение в приложении о том, почему камера необходима.

Паттерн, который показывает лучший результат на практике — это двухэтапный запрос: покажите лёгкий экран в приложении, объясняющий, для чего нужна камера (визуализация посадки, а не идентификация или хранение), затем активируйте диалог разрешения OS только после того, как пользователь нажимает "Продолжить". Это иногда называют "пред-разрешением" или "праймингом" и это стандартная практика в приложениях, зависящих от камеры, потому что она преобразует холодный системный запрос в осознанный выбор.

Несколько деталей реализации важны помимо самого запроса:

  • Элегантное обработка отказа. Если пользователь отказывает в доступе к камере, не оставляйте их в тупике — предоставьте альтернативу загрузки фото или ручной путь измерения, чтобы виртуальная примерка продолжала работать в сокращённом виде.
  • Строка iOS Info.plist. Значение NSCameraUsageDescription, показываемое в системном диалоге, должно быть конкретным ("Используется для проверки посадки и предпросмотра одежды на вашем теле") вместо общего, так как рецензенты App Store и пользователи лучше реагируют на ясность.
  • Runtime разрешения Android. На Android 6.0+, запрашивайте CAMERA (и READ_MEDIA_IMAGES, если поддерживаете загрузку фото) в момент использования, а не при запуске приложения, чтобы избежать усталости от не связанных разрешений.
  • Путь повторного запроса. Если пользователь ранее отказал в доступе, обнаружьте это состояние и направьте его в системные параметры с ясной инструкцией, а не молча повторно активируйте запрос, который iOS/Android подавит.

Бюджет Производительности для Рендеринга на Устройстве

Рендеринг виртуальной примерки вычислительно тяжелее, чем типичная страница продукта, и мобильные устройства сильно отличаются по возможностям GPU — трёхлетний смартфон среднего класса — это совсем другая цель рендеринга, чем актуальный iPhone. Если ваш pipeline рендеринга настроен только на флагманские устройства в QA лабе, вы доставите функцию, которая заикается или падает для значительной части вашей реальной базы пользователей.

Три рычага имеют наибольшее значение для плавного опыта: размер модели и текстур, бюджет кадров и зависимость от сети. Агрессивно сжимайте модели тела и одежды для мобильной доставки — набор текстур, построенный для WebGL сцены уровня desktop, часто намного больше, чем нужно телефону. Установите явный бюджет кадров (большинство команд нацеливаются на минимум 30fps для взаимодействия с виртуальной примеркой, резервируя 60fps для более простого интерфейса) и профилируйте на устройстве среднего класса Android, а не только на последнем iPhone. И минимизируйте обращения к API определения размера или рендеринга во время интерактивного момента — предварительно загружайте то, что можно, когда пользователь открывает страницу продукта, так чтобы сама виртуальная примерка казалась мгновенной, вместо ожидания сетевого вызова.

Батарея и тепловое поведение также заслуживают внимания. Продолжительные сеансы камеры + GPU рендеринга могут нагреть устройство и снизить производительность в течение пары минут, поэтому сеанс виртуальной примерки, предназначенный работать неопределённо долго, будет деградировать со временем. Ограничьте длительность сеанса или добавьте лёгкое состояние паузы вместо того, чтобы предполагать, что пользователи выйдут аккуратно сами.

Мобильные UX-Паттерны, Которые Удерживают Людей в Потоке

Малые детали взаимодействия несут непропорциональный вес на маленьком экране. Несколько паттернов последовательно превосходят общие порты desktop потоков виртуальной примерки: размещение триггера виртуальной примерки прямо на изображении продукта (не зарытый в меню), показ состояния скелета/загрузки, который предпросмотривает силуэт одежды во время загрузки рендера, и предоставление смены размера в один тап, чтобы пользователи могли сравнивать посадку без выхода из представления виртуальной примерки. На основе паттернов возвратов, которые мы видим среди брендов моды, использующих YourSizer, покупатели, которые взаимодействуют с рекомендацией размера рядом с визуальным превью, значительно менее вероятно заказывают второй размер "на всякий случай" — поведение, известное как брекетинг, которое раздувает как стоимость доставки, так и объём возвратов.

Ориентация важнее на мобильных устройствах, чем на desktop: используйте портретную ориентацию по умолчанию для полнотелесного превью, так как это соответствует тому, как держат телефоны, но разрешайте пейзажную ориентацию для zoom детали. Также бюджетируйте на перерывы — звонки, уведомления и перевод приложения в фоновый режим намного чаще происходят в середине сеанса на мобильном, чем на desktop, поэтому сохраняйте состояние виртуальной примерки пользователя (фото, выбранный размер, одежда), чтобы приложение в фоновом режиме возобновилось чисто, вместо перезапуска потока.

Где YourSizer Вписывается

Виджет YourSizer построен для встраивания в слой webview с минимальными инженерными усилиями, давая мобильным командам работающий опыт виртуальной примерки и рекомендации размера без многоспринтовой нативной сборки. Для команд, которым позже требуется более низкая задержка обработки камеры или более глубокая нативная интеграция, та же логика посадки и данные одежды могут быть подключены к пути нативного SDK — базовый интеллект посадки не должен перестраиваться, когда меняется уровень рендеринга. Это позволяет команде дёшево проверить спрос на мобильную виртуальную примерку, а затем решить, стоят ли прирост производительности нативного дополнительные инженерные инвестиции, основываясь на реальных данных использования, а не на предположении. Команды, оценивающие это решение build-vs-integrate, часто начинают с чтения как выбрать решение для рекомендации размера перед тем, как брать на себя инженерные сроки.

Часто задаваемые вопросы

Я должен создавать виртуальную примерку как нативную функцию или сначала встроить webview?

Начните со встроенного webview, если у вас нет уже веских доказательств того, что использование виртуальной примерки оправдает нативные инвестиции. Webview позволяет вам проверить, действительно ли мобильные покупатели используют функцию, измерить её влияние на конверсию и возвраты, и только потом взять на себя многонедельную работу нативного SDK для iOS и Android. Команды, которые сначала создают нативное, до проверки спроса, часто в итоге поддерживают более тяжёлую кодовую базу для функции, которая видит скромное использование.

Как избежать отклонения в App Store или Play Store из-за разрешений камеры?

Apple и Google оба проверяют описания использования камеры и ожидают, что запрашиваемое разрешение совпадает с явно видимой целью в приложении. Напишите специфичную строку NSCameraUsageDescription на iOS, которая называет использование посадки или виртуальной примерки вместо общей фразы, запрашивайте runtime разрешения Android в точке использования, а не при запуске, и убедитесь, что пользователь с отказанной камерой всё ещё имеет функциональный путь, а не сломанный экран — рецензенты на обеих платформах тестируют состояния отказа.

Какую частоту кадров или время загрузки я должен использовать как цель для мобильной виртуальной примерки?

Практическая цель — это рендер, который появляется примерно за одну-две секунды после того, как пользователь даёт доступ к камере, поддерживая как минимум 30fps при взаимодействии на устройстве среднего класса, выпущенном за последние два-три года. Явно тестируйте на смартфоне среднего класса Android, а не только на последнем iPhone, так как возможности GPU сильно варьируются во всей установленной базе и pipeline, настроенный только для флагманского оборудования, будет видимо заикаться в других местах.

Заключение

Правильная виртуальная примерка на мобильном устройстве — это меньше о самой технологии рендеринга и больше о решениях вокруг неё — как вы запрашиваете доступ к камере, как вы элегантно деградируете на более слабых устройствах и строите ли вы нативное до того, как заработали это реальными данными использования. Начните с пути интеграции, который позволяет вам учиться быстро, инструментируйте его хорошо и позвольте реальному поведению мобильных покупателей сказать вам, когда пришло время инвестировать в более глубокую нативную сборку.

Блог

Читать дальше

UXДоступность Virtual Try-On: Дизайн для всех

Руководство по доступному Virtual Try-On: навигация клавиатурой, поддержка экранных читателей, дизайн для слабовидящих и низкая когнитивная нагрузка.

РешенияВиртуальная примерка верхней одежды и пальто

Верхняя одежда и пальто возвращаются чаще, чем почти любой другой товар. Узнайте, как виртуальная примерка решает проблемы многослойности.

РешенияВиртуальная примерка для рабочей одежды и формы

Массовые заказы рабочей одежды часто имеют проблемы с размерами. Виртуальная примерка снижает ошибки в закупках рабочей формы для команд.

РешенияВиртуальная примерка для одежды для беременных

Подгонка меняется каждую неделю. Узнайте, как Virtual Try-On и динамические рекомендации размера сокращают множественные заказы и возвраты при беременности.

Все статьи

Применить на практике

Посмотрите YourSizer в своём магазине

Рекомендация размера, 3D-модель тела и примерка по фото — на ваших карточках товаров за один день.