web-dev-qa-db-fra.com

Message de localisation Cordova iOS

J'utilise le plugin cordova-plugin-geolocation . Mon seul problème est que le message Demander d'autoriser l'emplacement ressemble à ceci:

/var/container/bundle/application/xxxxxx-xxxx-xxxx-xxxx-xxxxxxxx/my_project/www/index.html Désirez utiliser votre emplacement.

Est-il possible d'avoir quelque chose d'un peu plus sexy, comme

mon_projet voudrait utiliser votre emplacement

À votre santé.

Ajout de code, pour les non croyants

document.addEventListener("deviceready", onDeviceReady, false);

function onDeviceReady(){

    navigator.geolocation.getCurrentPosition(onLocationSuccess, onLocationError, {maximumAge:3000, timeout:2000, enableHighAccuracy:true});

    function onLocationSuccess(){

    }

    function onLocationError(){

    }
 }
7
Eric

La solution a changé pour cordova-plugin-geolocation: "4.0.0" . Voici ce que vous devez ajouter dans votre config.xml:

<edit-config target="NSLocationWhenInUseUsageDescription" file="*-Info.plist" mode="merge">
    <string>need location access to find things nearby</string>
</edit-config>

Pour plus d'informations: https://github.com/Apache/cordova-plugin-geolocation

13
Stan

De docs :

quirks iOS

Depuis iOS 10, il est obligatoire d'ajouter une entrée NSLocationWhenInUseUsageDescription dans info.plist.

NSLocationWhenInUseUsageDescription décrit la raison pour laquelle l'application Accède à l'emplacement de l'utilisateur. Lorsque le système invite l'utilisateur à autoriser l'accès, cette chaîne est affichée dans la boîte de dialogue. Pour Ajouter cette entrée, vous pouvez passer la variable GEOLOCATION_USAGE_DESCRIPTION Lors de l’installation du plugin.

Exemple: plugin cordova add cordova-plugin-geolocation --variable GEOLOCATION_USAGE_DESCRIPTION = "votre message d'usage"

Si vous ne transmettez pas la variable, le plug-in ajoutera une chaîne vide sous la forme .

Pour résoudre votre problème, essayez:

Désinstallez le plugin:

cordova plugin remove cordova-plugin-geolocation

Réinstaller avec:

cordova plugin add cordova-plugin-geolocation --variable GEOLOCATION_USAGE_DESCRIPTION="my_project would like to use your location"
9
Bruno Peres

Il y a 3 raisons possibles pour afficher le chemin d'accès à index.html au lieu du nom de votre application:

  1. Vous n'avez pas installé le plugin (ou il n'est pas installé correctement)
  2. Vous n'attendez pas que l'événement device ready appelle le plug-in
  3. Vous n'avez pas lié le fichier cordova.js à l'index.html

Lorsque vous dites que vous avez installé le plug-in et que vous l'utilisez pour l'événement device ready, vous devez avoir oublié de lier le fichier cordova.js dans le fichier index.html ou le plug-in n'a pas été installé correctement. Vérifiez que le fichier cordova.js est lié et le cas échéant, supprimez le plug-in et ajoutez-le à nouveau. Le fait de supprimer et d'ajouter de nouveau la plate-forme iOS peut également aider.

2
jcesarmobile

Il semble que le version 3.0.0 de cordova-plugin-geolocation ignore le paramètre d'installation 

--variable GEOLOCATION_USAGE_DESCRIPTION=""

comme dit Bruno Peres ci-dessus.

Cela fonctionne bien pour moi en installant la version 2.4.3.

2
carlo318

Si vous ciblez iOS 8 et les versions ultérieures (à mon avis, vous n'avez plus besoin de cibler les anciennes versions ...), deux clés sont disponibles pour la configuration:

NSLocationAlwaysUsageDescription

Cette clé vous permet de décrire la raison pour laquelle votre application a accès aux informations de localisation de l'utilisateur à tout moment. Incluez cette clé lorsque votre application utilise les services de localisation de manière potentiellement non évidente lors de l'exécution au premier plan ou en arrière-plan. Par exemple, une application sociale peut inclure cette clé lorsqu'elle utilise des informations de localisation pour suivre la position de l'utilisateur et afficher les autres utilisateurs à proximité. Dans ce cas, le fait que l’application surveille la position de l’utilisateur peut ne pas être évident. Le système inclut la valeur de cette clé dans le panneau d'alerte affiché à l'utilisateur lorsqu'il demande l'autorisation d'utiliser les services de localisation.

NSLocationWhenInUseUsageDescription

Cette clé vous permet de décrire la raison pour laquelle votre application accède aux informations de localisation de l’utilisateur lorsque celle-ci s’exécute au premier plan ou s’il est utilisé. Incluez cette clé lorsque votre application utilise les services de localisation pour suivre directement la position actuelle de l'utilisateur. Cette clé ne prend pas en charge l’utilisation de services de localisation pour surveiller des régions ou la localisation de l’utilisateur à l’aide du service de changement de localisation significatif. Le système inclut la valeur de cette clé dans le panneau d'alerte affiché à l'utilisateur lorsqu'il demande l'autorisation d'utiliser les services de localisation.

Ainsi, dans votre fichier info.plist de projet iOS, vous pouvez ajouter les éléments suivants:

<key>NSLocationAlwaysUsageDescription</key>
<string>my_project requires constant access to your location, even when the screen is off.</string>

Emplacement d'accès uniquement lorsque l'application est utilisée

<key>NSLocationWhenInUseUsageDescription</key>
<string>my_project requires access to your location only when being used.</string>
1
Niko