Alerta de permiso de ubicación en iPhone con PhoneGap

¿Cómo se cambia la cadena en la alerta diciendo:

(Nombre de la aplicación / lo que sea) le gustaría usar su ubicación actual

Por supuesto, solo quiero cambiar la parte del nombre de la aplicación. Porque cuando usas el marco PhoneGap, la cadena es muy fea, algo como esto:

/var/mobile/Applications/157EB70D-4AA7-826E-690F0CBE0F/appname.app/www/index.html

Alguien tiene una idea?

Necesitas hacer la geolocalización después de que el dispositivo esté listo. El siguiente código de Jquery, por ejemplo, se geolocalizará sin esa alerta desagradable:

$(function(){ document.addEventListener("deviceready", onDeviceReady, false); }) function onDeviceReady() { navigator.geolocation.getCurrentPosition(onSuccess, onError); } function onSuccess(position) { // your callback here } function onError(error) { // your callback here } 

En phonegap 3.0, se debe seguir la respuesta de Pius Uzamere Y se debe instalar el complemento.

 cordova plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-geolocation.git 

de lo contrario, recibirá la solicitud de doble permiso.

Acabo de seguir la documentación y la resolví. Abra la terminal y cd a su proyecto e ingrese el siguiente comando. $ cordova plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-geolocation.git

También agregue esto en su config.xml

    

Solucionará este problema. 🙂

Fuente: http://docs.phonegap.com/en/3.0.0/cordova_geolocation_geolocation.md.html#The%20Command-lineInterface

Aunque esta pregunta es mucho más antigua, encontré preguntas similares aquí y aquí .

Para mi resolución, tuve que agregar NSLocationWhenInUseUsageDescription al archivo .plist. Sin embargo, supongo que como mi plugin de geolocalización no estaba actualizado, primero tuve que actualizarlo. Luego tuve que eliminar / agregar la plataforma Cordova iOS. Finalmente, agregué NSLocationWhenInUseUsageDescription al archivo .plist.

Primero, quite / agregue el plugin de geolocalización:

 cordova plugin rm org.apache.cordova.geolocation cordova plugin add org.apache.cordova.geolocation 

Segundo, eliminar / agregar la plataforma de iOS:

 cordova platform rm ios cordova platform add ios 

Por último, agregue NSLocationWhenInUseUsageDescription a .plist. Abra /platforms/ios/{project}/{project}-Info.plist y agregue lo siguiente:

 NSLocationWhenInUseUsageDescription [App Name] would like to access your location when running and displayed. 

Consulte este enlace de la Biblioteca del desarrollador de iOS para obtener información detallada sobre NSLocationWhenInUseUsageDescription versus NSLocationAlwaysUsageDescription versus NSLocationUsageDescription .

Finalmente solucionó el problema.

EN el index.html solo mueve tu cordova.js

como el primer archivo js que se incluirá (especialmente asegúrese de que esté encima de los mapas incluya js). Esto se asegurará de que el mensaje se muestre solo una vez.

No se necesitan otros codejs ni ondevice ready.

Ninguna de las respuestas anteriores funcionó para mí. Mi solicitud de ubicación ya estaba activada en el dispositivo listo. Agregar lo siguiente a config.xml solucionó el problema:

  

Para resolver el problema, tengo que ejecutar el cordova plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-geolocation.git que agrega (automáticamente) a config.xml lo siguiente:

    

Para que las cosas funcionen, también tengo que poner estas líneas en config.xml:

            

Espero que pueda ser útil.

Después de buscar la solución que he fundado, solo agregue una variable cuando agregue la ubicación del complemento como esta línea

 cordova plugin add cordova-plugin-geolocation --variable GEOLOCATION_USAGE_DESCRIPTION="your usage message" 

Después de asegurarme de que mi solicitud de geolocation se llamó después de que el dispositivo estuviera listo, y de asegurarme de que el complemento de geolocalización se instaló y configuró correctamente, todavía recibía la desagradable ventana emergente.

Lo resolví moviendo y haciendo referencia a mi archivo cordova.js y a los archivos cordova_plugins.js en el directorio raíz de mi aplicación (originalmente estaban en una subcarpeta), por lo que la ruta a cordova.js sería:

  

Siento que esto debería incluirse en la documentación (tal vez sí, pero no he logrado encontrarlo)

  • Solo con incluir el archivo “cordova.js” en su archivo html donde está accediendo a esta ubicación se resolverá este problema. NADA DE LUJO NECESARIO.

Llego tarde a la fiesta aquí, pero responderé la pregunta como referencia. La respuesta es usar las funciones de geolocalización que se encuentran en phonegap.js que se incluye con Phonegap. Podrá encontrar dichas instrucciones en el sitio de Phonegap en http://www.phonegap.com .

Si usa navigator.geolocation , está utilizando el sistema de geolocalización predeterminado de Safari. Esto sucede porque PhoneGap funciona ejecutando sus páginas de manera efectiva en una instancia de Safari. Si incluye phonegap.js en su sitio, puede usar un método de geolocalización separado expuesto por el código Objective-C de PhoneGap, que presentará el comportamiento observado en otras aplicaciones donde solicita permiso de [su nombre de aplicación].

1) modificar Location.m en el proyecto PhoneGapLib. reemplace todas las referencias de navigator.geolocation con navigator_geo

2) Copie phonegap.js en phonegap2.js y ponga en la raíz de la aplicación. Ahora aprendí que cada vez que construyo mi aplicación y la carga en un dispositivo o simulador, el archivo phonegap.js se está regenerando. DE ACUERDO. Bueno, necesito modificarlo así que solo usemos otro y lidiemos con las complicaciones de la actualización en el futuro.

3) Modifique la línea (en phonegap2.js) que crea el constructor para la navegación.geolocation en 626 para ser … if (typeof navigator._geo == “undefined”) navigator._geo = new Geolocation ();

4) Ahora en su HTML cada vez que quiera usar el GPS de PHONEGAP, puede hacer referencia a él con navigator._geo.getCurrentPosition o similar 5) Disfrute el permiso de alerta de ubicación ONE y CLEAN, sin revelar a sus usuarios su inteligencia para usar PhoneGap y crea una aplicación con HTML / JS.

* ¡CAVEAT Y POR FAVOR AYUDA! *

Si ejecuto la función watchPosition, obtendré la primera actualización de ubicación con todo tipo de estadísticas. Luego, siempre informará un error. Supongo que esto es una mierda para este tiempo de 30 segundos de obtener un GPS preciso en estas cosas.

http://groups.google.com/group/phonegap/browse_thread/thread/8067c2037816a9ad

Seguí todas las instrucciones y todavía falló. Al final jugué con la demo de PhoneGap y encontré la solución final :

  1. Mueva todos los archivos js y html a la misma carpeta (ni siquiera a la subcarpeta). ¡Felicidades! Problema resuelto, sin permiso de alerta más)

  2. Por cierto, es mejor utilizar un “setTimeout (function () {utility.getGeoData ();}, 1000);” Encontré “document.addEventListener (” deviceready “, utility.getGeoData (), false);” no funciona para mi

Espero que ayude cuando no encuentres la solución anterior:)

¡Buena suerte!

Debido a que durante días tuve problemas con el mismo problema y finalmente encontré la solución, decidí compartirlo con cualquier persona que aún no pudiera solucionarlo.

La solución es simple: el complemento de geolocalización faltaba en el directorio de complementos dentro del directorio www, aunque agregué el complemento a través de la interfaz de línea de comando de phonegap Y los archivos de complemento estaban en el directorio / Plugins. Entonces solo tiene que copiar los archivos faltantes en / www / plugins y listo. Tan simple como eso.

Si alguien necesita los archivos faltantes: http://d.pr/f/xqhq

BTW: estoy usando cordova 3.2.0.

¡Espero que esto también te funcione!

Phoengap / Cordova versión 3.5 aquí.

Similar a la respuesta de Manuel anterior, pero esta vez el complemento no se instala en la carpeta plataformas / ios / [appname] / Plugins.

La solución para mí fue simplemente crear manualmente una nueva carpeta para el complemento en la carpeta ../plataforma/ios/[nombredeaplicación]/Plugins> luego cambiarle el nombre a org.apache.cordova.geolocation> y luego copiar .h y. m archivos del complemento en él.

Puede encontrar los archivos .m y .h para el complemento geoLocation en el directorio [root] /plugins/org.apache.cordova.geolocation/src/ios.

Obtuve este error (y muchos otros) después de actualizar Cordova de 3.6 a 4.3.

Creo que hay algunos fallos en el proceso de actualización y la única solución de trabajo para mí fue cordova platform rm ios entonces cordova platform add ios

/! \ Perderá todas las configuraciones del proyecto ios y tendrá que volver a cargar las salpicaduras y los icons.

En mi caso, estoy usando Cordova / Ionic y he tenido el mismo problema. Eso se debe al código antes de que el dispositivo esté listo. Simplemente envolví el código con document.addEventListener en “deviceready”. Por ejemplo:

 document.addEventListener("deviceready", function () { $cordovaGeolocation.getCurrentPosition(options).then(function(position){ ...your code here... }); }); 

Entonces el mensaje adicional no aparece.

“Mueva todos los archivos js y html a la misma carpeta (ni siquiera a la subcarpeta). ¡Felicidades! Problema resuelto, no hay más alertas de permiso:)” Al igual que Caleb dice que funciona para mí, bueno, solo mueve el archivo cordova.js a la raíz y agregar el complemento a config.xml

¿Cuál es el nombre para mostrar de su proyecto?

Intente cambiar manualmente desde el valor predeterminado ${PRODUCT_NAME} y vea …

¡Esa alerta de permiso de ubicación solo selecciona el nombre de visualización de su paquete!