VKWebAppDeviceMotionStart
VKWebAppDeviceMotionStart включает отслеживание и приём данных о положении мобильного устройства в пространстве.
Схема работы
- 1.Клиент вызывает
VKWebAppDeviceMotionStartдля начала получения данных о положении мобильного устройства в пространстве. - 2.Платформа отвечает:
- •Событием
VKWebAppDeviceMotionStartResultв случае успешного выполнения. - •Событием
VKWebAppDeviceMotionStartFailedв случае ошибки доступа к датчику.
- •
- 3.Если на предыдущем шаге не было ошибки, платформа начинает отправлять поток событий
VKWebAppDeviceMotionChangedс данными о положении мобильного устройства в пространстве. - 4.На iOS поток событий с данными акселерометра может быть прерван. В этом случае платформа отправляет событие
VKWebAppDeviceMotionInterrupted. - 5.Чтобы возобновить получение данных о положении мобильного устройства в пространстве, снова вызовите
VKWebAppDeviceMotionStart.
Чтобы прекратить отслеживание данных, вызовите VKWebAppDeviceMotionStop.
Пример
bridge.send('VKWebAppDeviceMotionStart', {
refresh_rate: 500
})
.then((data) => {
if (data.result) {
// Отслеживание данных положения в пространстве включено
}
})
.catch((error) => {
// Ошибка
console.log(error);
});
Платформы
Android, iOS
Параметры
Поле | Тип | Описание |
|---|---|---|
refresh_rate
необязательное | integer | Период обновления данных о положении мобильного устройства в пространстве в миллисекундах. Минимальное значение: 20. Максимальное значение: 1000. Значение по умолчанию: 1000. |
Результат
Проверить результат можно:
- •
Используя объект
Promise, который возвращается вызовомbridge.send(...). - •
С помощью событий:
- •
- •
Подробнее о проверке результатов при вызовах VK Bridge — в разделе Обработка результата.
Объект Promise
Если обращение к платформе прошло успешно, управление будет передано в then-обработчик объекта Promise.
Если при обращении к платформе произошла ошибка, управление передаётся в метод catch. В качестве ответа платформа возвращает объект с информацией об ошибке, общий для всех событий VK Bridge.
События
VKWebAppDeviceMotionStartResult
Сигнализирует, что отслеживание данных о положении мобильного устройства в пространстве включено и мини-приложение может получать данные. В обработчик события на стороне пользователя передаются данные:
{
detail: {
type: "VKWebAppDeviceMotionStartResult",
data: {
result: true
}
}
}
В качестве ответа платформа возвращает объект с полем:
Поле | Тип | Описание |
|---|---|---|
result | boolean | true, если отслеживание данных положения в пространстве включено. |
VKWebAppDeviceMotionStartFailed
Информирует, что при взаимодействии с платформой произошла ошибка или не удалось включить отслеживание данных.
В обработчик события на стороне пользователя передаётся объект с информацией об ошибке, общий для всех методов VK Bridge.
Отслеживание данных
Чтобы получить текущее состояние датчика отслеживания положения устройства, подпишитесь на события:
- •
VKWebAppDeviceMotionChanged— отслеживает координаты положения устройства в пространстве. - •
VKWebAppDeviceMotionInterrupted— сообщает о том, что поток данных прервался. Событие доступно только для iOS.
VKWebAppDeviceMotionChanged
Сигнализирует, что получены данные о положении устройства в пространстве — угол поворота относительно осей X, Y и Z. Знак числа показывает, в какую сторону происходит вращение.
Положение устройства относительно осей X, Y, Z
В обработчик события на стороне пользователя передаются данные:
{
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.
В обработчик события на стороне пользователя передаются данные:
{
detail: {
type: "VKWebAppDeviceMotionInterrupted",
data: {
"message": "Received empty device motion data"
}
}
}
Чтобы продолжить отслеживание данных о положении мобильного устройства в пространстве, снова вызовите событие VKWebAppDeviceMotionStart.