Cuando se utiliza la API geolocation.getCurrentPosition en dispositivos móviles, iOS probado en este momento, se solicita a los usuarios más de una vez a través de una sesión según la página. En comparación con un sitio de escritorio, como Chrome en Windows 10, donde una vez que un usuario presiona Allow , ya no se le solicitarán permisos a menos que se deshabilite explícitamente. iOS Safari parece estar basado en sesiones y luego posiblemente basado en páginas dentro de la sesión.
¿Se pregunta si alguien sabe si hay reglas explícitas definidas por Apple para esta verificación de permisos? ¿ maximumAge también juega un papel en la frecuencia con la que se solicita al usuario?
const LOCATION_OPTIONS = { timeout: 15000, enableHighAccuracy: true, maximumAge: 86400000, }; useEffect(() => { const { geolocation } = navigator; // If the geolocation is not defined in the used browser we handle it as an error if (!geolocation) { setError("Geolocation is not supported."); return; } // Call Geolocation API geolocation.getCurrentPosition(handleSuccess, handleError, options); }, [options]); return { location, error };Ejemplo NextJS CodeSandbox https://u11vn.sse.codesandbox.io/
Desafortunadamente, parece que no hay forma de otorgar acceso permanente al sitio web a la privacidad del iPhone, como la ubicación de la cámara, dentro de Safari. pero en el lado del usuario, hay tres opciones ( Ask , Allow , Deny ) que pueden establecer
si usa JavaScript en iOS WKWebView , puede obtener una solución que solicite la ubicación con la API de ubicación de la aplicación
si usa JavaScript en la web, bueno, no puede lograr esto.