javascript - that - Permitir que la aplicación web HTML5 acceda a la ubicación cuando el navegador no está enfocado(iOS)
to view this video please enable javascript and consider upgrading to a web browser that (1)
Recientemente construí una aplicación web HTML5 diseñada para notificar al usuario cuando se acerca a un destino establecido. Lo configuré en caché para que pueda ser utilizado sin acceso a la web en dispositivos con funcionalidad GPS o AGPS. Entonces, para establecer la imagen, es una aplicación web que he almacenado en caché y agregué a la pantalla de inicio para que sea como una aplicación nativa, pero en realidad es solo una aplicación HTML5 (con Javascript).
La aplicación en sí parece estar funcionando (en la medida en que detecta la ubicación del usuario, ya que no devuelve ningún error, como sé que lo haría), pero he identificado un problema importante con él; las funciones de geolocalización de HTML5 dejan de funcionar después de un corto período de tiempo cuando la aplicación ya no está enfocada (y lo sé porque cuando lo ejecuto y cambio a una aplicación diferente, el indicador de geolocalización desaparece de la pantalla del iPhone, pero cuando tengo la aplicación en foco, el ícono de geolocalización permanece).
Me propuse que la aplicación funcionara de manera tal que cuando el usuario se encuentre a 200 metros del destino, la ventana de la aplicación se convierta en el foco y se envíe una alerta al usuario para informarle que se está acercando a su destino. Por lo tanto, está diseñado para funcionar en segundo plano.
El problema es que parece en el iPhone al menos que una aplicación web solo puede tener acceso a la geolocalización cuando se enfoca la ventana (supongo que este es el caso, ya que accedí a la configuración de ubicación en el iPhone y lo vi en la ubicación de mi aplicación la configuración estaba habilitada para rastrear la ubicación solo mientras la aplicación estaba en uso, es decir, cuando la aplicación estaba visible en la pantalla).
Lo que estoy buscando es una forma (en HTML5 o JS) que permita que una aplicación web continúe monitoreando la ubicación del usuario, incluso cuando la aplicación no esté visible en la pantalla .
Aquí está el código que he usado para detectar la ubicación del usuario:
function getLocation(){
if(geo_position_js.init()){
geo_position_js.getCurrentPosition(success_callback,error_callback,{enableHighAccuracy:true});
}
else{
alert("Warning: unable to determine your position!");
}
}
function watchCurrentPosition() {
navigator.geolocation.watchPosition(success_callback, error_callback, {enableHighAccuracy:true});
}
function success_callback(p)
{
return [p.coords.longitude.toFixed(2), p.coords.latitude.toFixed(2)];
}
function error_callback(p)
{
alert("Warning - error!");
}
Estoy ejecutando esto en iOS 8.1.3 en un iPhone 6 si eso es de alguna utilidad. ¡Gracias por adelantado!
Después de hacer más investigaciones y pruebas, encontré las siguientes respuestas:
- Pregunta / Respuesta 1 : Probé el método iFrame sugerido en la primera respuesta, pero encontré que no funcionó y causó errores como se sugiere en los comentarios
- Q / A 2 : La respuesta aquí parece ser el caso actualmente.
Entonces, siempre que la aplicación en sí sea la ventana actual, debería funcionar, parece, y mi prueba estaría de acuerdo con esa conclusión. A menos que sea una aplicación nativa completa, que es una empresa un tanto costosa para alguien como yo que no es un desarrollador de aplicaciones a tiempo completo, parece imposible. Las características de geolocalización de HTML5 parecerían estar más diseñadas para una aplicación web en la que los usuarios pueden verificar sus ubicaciones a través de un mapa en lugar de la monitorización de la geolocalización.