Разрешение запроса WKWebView для DeviceMotion и DeviceOrientation вызывается при каждом запуске приложения - PullRequest
1 голос
/ 08 января 2020

Существует ли способ запрашивать разрешения DeviceMotion и DeviceOrientation только один раз, а не каждый раз при запуске приложения. Я запрашиваю разрешения, используя

webView.evaluateJavaScript("DeviceMotionEvent.requestPermission().then(response => { if (response == 'granted') {window.addEventListener('devicemotion', (e) => {})}}).catch(console.error)")

и

webView.evaluateJavaScript("DeviceOrientationEvent.requestPermission().then(response => { if (response == 'granted') {window.addEventListener('deviceorientation', (e) => {})}}).catch(console.error)")

Так есть ли способ всегда предоставлять разрешения?

1 Ответ

0 голосов
/ 08 января 2020

Вы должны использовать Userdefaults для хранения какого-либо флага. После того, как вы запросили разрешение, установите значение этого флага в Userdefaults. И при запуске приложения убедитесь, что вы установили этот флаг или нет. Что-то вроде

    if UserDefaults.standard.bool(forKey: "openedOnce") {

    } else {
        webView.evaluateJavaScript("DeviceMotionEvent.requestPermission().then(response => { if (response == 'granted') {window.addEventListener('devicemotion', (e) => {})}}).catch(console.error)")
        webView.evaluateJavaScript("DeviceOrientationEvent.requestPermission().then(response => { if (response == 'granted') {window.addEventListener('deviceorientation', (e) => {})}}).catch(console.error)")
    }

    UserDefaults.standard.set(true, forKey: "openedOnce")
    UserDefaults.standard.synchronize()
...