Я хочу получить доступ к данным акселерометра на телефоне.
В iOS 13 вы должны явно запросить разрешение на получение этих данных.
Моя установка dev запущена webpack-dev-server
с использованием --https
, тестирование в моей локальной сети на моем iPhone (iOS 13.3, Safari).
- Первый звонок
checkOrientation()
- это возвращает true
, когда он включен iOS (например, мой клиент рабочего стола возвращает false
). - Если
checkOrientation()
возвращает true
, я звоню askOrientation()
. Это обещание вызывает метод DeviceOrientationEvent.requestPermission()
, затем if (response == 'granted') return true;
, а затем вызывает window.addEventListener("deviceorientation", handleOrientation, true);
В мобильном Safari я получаю ответ от обещания, но получаю ошибку в консоли : DOMException{}
без дополнительной информации. response == «предоставлено» возвращается false, но я никогда не получаю никаких подсказок до этого
Вот большая часть кода:
exports.checkOrientation = function(){
console.log("PermissionsMgr asking Orientation");
if(typeof(DeviceOrientationEvent) !== 'undefined' && typeof (DeviceOrientationEvent.requestPermission) === 'function'){
//ios13
return true;
}else{
// not ios13
return false;
}
}
// если checkOrientation () == true, тогда я вызываю askOrientation ():
exports.askOrientation = function(){
DeviceOrientationEvent.requestPermission()
.then(response => {
if(response=='granted'){
hasGranted=true;
}else{
hasGranted=false;
}
return hasGranted;
})
.catch(console.error)
}
Вопрос: Как получить приглашение на мое мобильное устройство при вызове DeviceOrientationEvent.requestPermission ()?