DeviceOrientationEvent.askPermission () ничего не запрашивает - PullRequest
1 голос
/ 05 февраля 2020

Я хочу получить доступ к данным акселерометра на телефоне.

В iOS 13 вы должны явно запросить разрешение на получение этих данных.

Моя установка dev запущена webpack-dev-server с использованием --https, тестирование в моей локальной сети на моем iPhone (iOS 13.3, Safari).

  1. Первый звонок checkOrientation() - это возвращает true, когда он включен iOS (например, мой клиент рабочего стола возвращает false).
  2. Если 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 ()?

...