ubicacion - Alerta de permiso de ubicación en iPhone con PhoneGap
ubicacion iphone por gps (19)
"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
¿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?
¿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!
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
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
<feature name="Geolocation">
<param name="ios-package" value="CDVLocation" />
</feature>
Solucionará este problema. :)
Aunque esta pregunta es mucho más antigua, encontré preguntas similares here y here .
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:
<key>NSLocationWhenInUseUsageDescription</key>
<string>[App Name] would like to access your location when running and displayed.</string>
Consulte este enlace de la Biblioteca del desarrollador de iOS para obtener información detallada sobre NSLocationWhenInUseUsageDescription
versus NSLocationAlwaysUsageDescription
versus NSLocationUsageDescription
.
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!
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:
<script src="cordova.js"></script>
Siento que esto debería incluirse en la documentación (tal vez sí, pero no he logrado encontrarlo)
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"
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.
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.
Finalmente solucionó el problema.
EN el index.html solo mueve tu cordova.js
<script src = "cordova.js"> </ script>
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.
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].
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
}
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:
<gap:plugin name="org.apache.cordova.core.geolocation" />
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 iconos.
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:
<feature name="Geolocation">
<param name="ios-package" value="CDVLocation" />
</feature>
Para que las cosas funcionen, también tengo que poner estas líneas en config.xml:
<plugins>
<plugin name="Device" value="CDVDevice" />
<plugin name="Logger" value="CDVLogger" />
<plugin name="Compass" value="CDVLocation" />
<plugin name="NetworkStatus" value="CDVConnection" />
<plugin name="Debug Console" value="CDVDebugConsole" />
<plugin name="Geolocation" value="CDVLocation" />
<plugin name="SplashScreen" value="CDVSplashScreen" />
<plugin name="Battery" value="CDVBattery" />
<plugin name="Globalization" value="CDVGlobalization" />
</plugins>
Espero que pueda ser útil.
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.
Seguí todas las instrucciones y todavía falló. Al final jugué con la demo de PhoneGap y encontré la solución final :
Mueva todos los archivos js y html a la misma carpeta (ni siquiera a la subcarpeta). ¡Felicitaciones! Problema resuelto, sin permiso de alerta más)
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!
- 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.