Saltar al contenido

¿Cómo hago para que DeviceOrientationEvent y DeviceMotionEvent funcionen en Safari?

Esta es la respuesta más acertada que encomtrarás brindar, pero obsérvala detenidamente y valora si se puede adaptar a tu trabajo.

Solución:

A partir de iOS 13 beta 2, debe llamar a DeviceOrientationEvent.requestPermission() para acceder al giroscopio o al acelerómetro. Esto presentará un cuadro de diálogo de permiso que solicita al usuario que permita el acceso de movimiento y orientación para este sitio.

Tenga en cuenta que esto no funcionará si intenta llamarlo automáticamente cuando se carga la página. El usuario debe realizar alguna acción (como tocar un botón) para poder mostrar el cuadro de diálogo.

Además, la implementación actual parece requerir que el sitio tenga habilitado https.

Para obtener más información, consulte esta página

if ( location.protocol != "https:" ) 
location.href = "https:" + window.location.href.substring( window.location.protocol.length );

function permission () 
    if ( typeof( DeviceMotionEvent ) !== "undefined" && typeof( DeviceMotionEvent.requestPermission ) === "function" ) 
        // (optional) Do something before API request prompt.
        DeviceMotionEvent.requestPermission()
            .then( response => 
            // (optional) Do something after API prompt dismissed.
            if ( response == "granted" ) 
                window.addEventListener( "devicemotion", (e) => 
                    // do something for 'e' here.
                )
            
        )
            .catch( console.error )
     else 
        alert( "DeviceMotionEvent is not defined" );
    

const btn = document.getElementById( "request" );
btn.addEventListener( "click", permission );

Use un elemento en su página para usarlo como activador de eventos y asígnele una identificación de “solicitud”.

Esto verificará https y lo cambiará si es necesario antes de solicitar la autorización de la API. Encontré esto ayer pero no recuerdo la URL.

Necesita un clic o un gesto de usuario para llamar a requestPermission(). Como esto :




Nota: si hace clic en cancelar en el aviso de permiso y desea volver a probarlo, deberá salir de Safari y volver a iniciarlo para que vuelva el aviso.

Tienes la opción de asentar nuestro estudio exponiendo un comentario y puntuándolo te damos la bienvenida.

¡Haz clic para puntuar esta entrada!
(Votos: 2 Promedio: 4)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *