Alerte d'autorisation de location sur iPhone avec Cordoue

Je travaille sur une cordova app sur laquelle je dois locate the user latitude et la longitude de locate the user . En utilisant le plugin de géolocalisation, il fonctionne bien sur les périphériques Android, mais il affiche une alerte demandant l'autorisation de l'utilisateur dans iOS . Lorsque j'ai utilisé le simulateur, j'ai ce message d'alerte:

 Users/user/Library/Developer/CoreSimulator/Devices/783A2EFD-2976-448C-8E4E-841C985D337D/data/Containers/Bundle/Application/EFC846BB-4BA3-465C-BD44-575582E649FC/app_name.app/www/index.html would like to use your current location. 

J'ai vu un sujet aborder ce problème comme ceci : ceci et ceci, mais aucune des solutions fournies ne fonctionne pour moi.

Voici la page d'exemple de Cordova:

 <!DOCTYPE html> <html> <head> <title>Device Properties Example</title> <script type="text/javascript" charset="utf-8" src="cordova.js"></script> <script type="text/javascript" charset="utf-8"> document.addEventListener("deviceready", onDeviceReady, false); function onDeviceReady() { navigator.geolocation.getCurrentPosition(onSuccess, onError); } function onSuccess(position) { var element = document.getElementById('geolocation'); element.innerHTML = 'Latitude: ' + position.coords.latitude + '<br />' + 'Longitude: ' + position.coords.longitude + '<br />' + 'Altitude: ' + position.coords.altitude + '<br />' + 'Accuracy: ' + position.coords.accuracy + '<br />' + 'Altitude Accuracy: ' + position.coords.altitudeAccuracy + '<br />' + 'Heading: ' + position.coords.heading + '<br />' + 'Speed: ' + position.coords.speed + '<br />' + 'Timestamp: ' + position.timestamp + '<br />'; } function onError(error) { alert('code: ' + error.code + '\n' + 'message: ' + error.message + '\n'); } </script> </head> <body> <p id="geolocation">Finding geolocation...</p> </body> 

Existe-t-il un moyen de modifier le texte de l'alerte ou de désactiver cette alerte?

-modifier—

J'ai trouvé la source de mon problème. J'ai supprimé le plugin de géolocalisation et je l'ai ajouté plusieurs fois parce que lorsque j'ai ajouté le plugin, je n'ai pas trouvé de dossier avec le nom du geolocation plugin comme les autres plugins. Même le fichier cordova_plugin.js ne contient aucune donnée sur le plugin de géolocalisation. Maintenant, j'ai installé le plugin à nouveau et ça marche.

Identique à "éditer" dans la question initiale, j'ai dû supprimer l'ancienne version du plugin de géolocalisation et ajouter la nouvelle. Ensuite, j'ai dû supprimer / ajouter la plate-forme Cordova iOS. Seulement alors, puis-je ajouter NSLocationWhenInUseUsageDescription au fichier .plist, comme le mentionne DaveAlden dans sa réponse avec succès.

Tout d'abord, supprimez / ajoutez le plugin de géolocalisation:

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

Ensuite, supprimez / ajoutez la plate-forme iOS:

 cordova platform rm ios cordova platform add ios 

Enfin, ajoutez NSLocationWhenInUseUsageDescription à la .plist. Ouvrez /platforms/ios/{project}/{project}-Info.plist et ajoutez ce qui suit:

 <key>NSLocationWhenInUseUsageDescription</key> <string>[App Name] would like to access your location when running and displayed.</string> 

Consultez ce lien de bibliothèque de développeur iOS pour obtenir des informations détaillées concernant NSLocationWhenInUseUsageDescription versus NSLocationAlwaysUsageDescription versus NSLocationUsageDescription .

Vous ne pouvez pas désactiver le message de demande, ni dans l'émulateur ni sur l'appareil, mais vous pouvez le personnaliser en ajoutant une propriété à votre plancher.

Pour iOS 8, si votre application demande l'autorisation d'utiliser l'emplacement en arrière-plan, vous souhaitez la clé suivante (définissez la valeur de la chaîne à tout ce que vous aimez):

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

Si votre application utilise uniquement l'emplacement en premier plan, ajoutez la touche suivante:

 <key>NSLocationWhenInUseUsageDescription</key> <string>My app requires access to your location when the screen is on and the app is displayed.</string> 

Pour les anciennes versions d'iOS (<= 7), vous devez utiliser NSLocationUsageDescription

  • Assurez-vous que le fichier "cordova.js" existe dans votre dossier racine et, en incluant ce fichier JS dans votre fichier .html, vous accédez à cet emplacement pour résoudre ce problème. NON EXTRAIT REQUIS. Si ce fichier js est manquant, le navigator.geolocation appellera l'objet HTML5 basé sur le navigateur et donc l'alerte bizarre.