VKWebAppDeviceMotionStart

VKWebAppDeviceMotionStart включает отслеживание и приём данных о положении мобильного устройства в пространстве.

Схема работы

  1. 1.
    Клиент вызывает VKWebAppDeviceMotionStart для начала получения данных о положении мобильного устройства в пространстве.
  2. 2.
    Платформа отвечает:
  3. 3.
    Если на предыдущем шаге не было ошибки, платформа начинает отправлять поток событий VKWebAppDeviceMotionChanged с данными о положении мобильного устройства в пространстве.
  4. 4.
    На iOS поток событий с данными акселерометра может быть прерван. В этом случае платформа отправляет событие VKWebAppDeviceMotionInterrupted.
  5. 5.
    Чтобы возобновить получение данных о положении мобильного устройства в пространстве, снова вызовите VKWebAppDeviceMotionStart.

Чтобы прекратить отслеживание данных, вызовите VKWebAppDeviceMotionStop.

Пример

JavaScript
bridge.send('VKWebAppDeviceMotionStart', { refresh_rate: 500 }) .then((data) => { if (data.result) { // Отслеживание данных положения в пространстве включено } }) .catch((error) => { // Ошибка console.log(error); });

Платформы

Android, iOS

Параметры

Поле
Тип
Описание
refresh_rate необязательное
integer
Период обновления данных о положении мобильного устройства в пространстве в миллисекундах. Минимальное значение: 20. Максимальное значение: 1000. Значение по умолчанию: 1000.

Результат

Проверить результат можно:

Подробнее о проверке результатов при вызовах VK Bridge — в разделе Обработка результата.

Объект Promise

Если обращение к платформе прошло успешно, управление будет передано в then-обработчик объекта Promise.

Если при обращении к платформе произошла ошибка, управление передаётся в метод catch. В качестве ответа платформа возвращает объект с информацией об ошибке, общий для всех событий VK Bridge.

События

VKWebAppDeviceMotionStartResult

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

JavaScript
{ detail: { type: "VKWebAppDeviceMotionStartResult", data: { result: true } } }

В качестве ответа платформа возвращает объект с полем:

Поле
Тип
Описание
result
boolean
true, если отслеживание данных положения в пространстве включено.

VKWebAppDeviceMotionStartFailed

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

В обработчик события на стороне пользователя передаётся объект с информацией об ошибке, общий для всех методов VK Bridge.

Отслеживание данных

Чтобы получить текущее состояние датчика отслеживания положения устройства, подпишитесь на события:

  • VKWebAppDeviceMotionChanged — отслеживает координаты положения устройства в пространстве.
  • VKWebAppDeviceMotionInterrupted — сообщает о том, что поток данных прервался. Событие доступно только для iOS.

VKWebAppDeviceMotionChanged

Сигнализирует, что получены данные о положении устройства в пространстве — угол поворота относительно осей X, Y и Z. Знак числа показывает, в какую сторону происходит вращение.

Положение устройства относительно осей X, Y, ZПоложение устройства относительно осей X, Y, Z

В обработчик события на стороне пользователя передаются данные:

JavaScript
{ detail: { type: "VKWebAppDeviceMotionChanged", data: { alpha: -2.4815207, beta: -0.37449312, gamma: -0.044164203 } } }

В качестве ответа платформа возвращает объект с полями:

Поле
Тип
Описание
alpha
float
Угол поворота устройства вокруг оси Z в радианах. Подразумевается, что устройство вращается в плоскости XY. Возможные значения:    • alpha < π — положительное число, если устройство вращается против часовой стрелки.    • alpha ≥ -π — отрицательно число, если устройство вращается по часовой стрелке.
beta
float
Угол поворота устройства вокруг оси X в радианах. Если в начальном состоянии устройство лежит в плоскости XY, которая параллельна земле, то при вращении вокруг оси X устройство перемещается из горизонтального положения в вертикальное. Возможные значения:    • beta < π/2 — положительное число означает, что в вертикальном положении экран устройства будет обращён к пользователю.    • beta ≥ -π/2 — отрицательное число означает, что в вертикальном положении задняя поверхность устройства будет обращена к пользователю.
gamma
float
Угол поворота устройства вокруг оси Y в радианах. Если в начальном состоянии устройство лежит в плоскости XY, которая параллельна земле, то при вращении вокруг оси Y меняется боковой наклон устройства. Возможные значения:    • gamma < π — положительное число, если правая сторона устройства наклоняется вниз.    • gamma ≥ -π — отрицательное число, если вниз наклоняется левая сторона.

VKWebAppDeviceMotionInterrupted

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

В обработчик события на стороне пользователя передаются данные:

JavaScript
{ detail: { type: "VKWebAppDeviceMotionInterrupted", data: { "message": "Received empty device motion data" } } }

Чтобы продолжить отслеживание данных о положении мобильного устройства в пространстве, снова вызовите событие VKWebAppDeviceMotionStart.