Flutter-geolocator: L'emplacement ne fonctionne pas sur l'émulateur IOS

Créé le 4 juin 2020  ·  12Commentaires  ·  Source: Baseflow/flutter-geolocator

🐛 Rapport de bogue

Comportement prévisible

Attendez-vous à imprimer la position, voici le code:
Géolocalisateur geo = Géolocalisateur ();
Position pos =
attendre geo.getCurrentPosition (souhaitéAccuracy: LocationAccuracy.high);
imprimer (pos);

Étapes de reproduction

Cela fonctionne sur la position de l'émulateur Android qui est imprimée sur la console.
Ne fonctionne pas sur l'émulateur iOS, rien n'est imprimé et si j'ajoute une autre instruction d'impression après print (pos), elle ne s'imprime pas non plus. J'imagine qu'il n'a jamais eu le poste, donc c'est "en attente" pour toujours?

Configuration

Émulateur iPhone 11 sur Android Studio

Version: 1.x

Plate-forme:
: iphone: iOS

ios in progress bug

Commentaire le plus utile

@LarryJing Je ne peux pas reproduire ce problème, avez-vous réellement simulé des mises à jour de localisation? Sur le simulateur iOS, vous devez définir activement un emplacement à l'aide de l'option de menu suivante: "Fonctionnalités" -> "Localisation":

Screenshot 2020-06-04 at 13 21 49

Tous les 12 commentaires

@LarryJing Je ne peux pas reproduire ce problème, avez-vous réellement simulé des mises à jour de localisation? Sur le simulateur iOS, vous devez définir activement un emplacement à l'aide de l'option de menu suivante: "Fonctionnalités" -> "Localisation":

Screenshot 2020-06-04 at 13 21 49

oui, j'ai aussi une erreur sur ce plugin dans le simulateur ios. je reçois ce journal sur la console.
Screenshot 2020-06-04 at 6 42 49 PM

oui, j'ai aussi une erreur sur ce plugin dans le simulateur ios. je reçois ce journal sur la console.
Screenshot 2020-06-04 at 6 42 49 PM

J'ai aussi la même erreur.

`` docteur flutter
[✓] Flutter (Channel stable, v1.17.2, sur Mac OS X 10.15.4 19E287, locale en-JP)

[✓] Chaîne d'outils Android - développement pour les appareils Android (version 29.0.3 du SDK Android)

[✓] Xcode - développer pour iOS et macOS (Xcode 11.5)
[✓] Android Studio (version 4.0)
[!] IntelliJ IDEA Ultimate Edition (version 2018.2.2)
✗ Le plugin Flutter n'est pas installé; cela ajoute une fonctionnalité spécifique à Flutter.
✗ Le plugin Dart n'est pas installé; cela ajoute des fonctionnalités spécifiques à Dart.
[✓] VS Code (version 1.45.1)
[✓] Appareil connecté (1 disponible)
''

version: geolocator: 5.3.2

simulateur: iPhone 11 / Software Version 13.5

l'erreur ne se produit pas lorsque la version du module passe à 5.3.1 .

Screenshot 2020-06-04 at 8 15 06 PM
En ajoutant l'autorisation de mise à jour de l'emplacement, ce problème résout

Je suis également confronté à cela. Je ne veux pas demander l'emplacement en arrière-plan, seulement au premier plan. J'espère que cela signifie que je ne devrais pas avoir besoin d'activer un mode d'arrière-plan.

C'est en effet une erreur qui a été mise en ligne par erreur. Je le corrigerai plus tard aujourd'hui / demain. Jusque-là, activez les mises à jour de localisation en arrière-plan ou restez avec 5.3.1

Je viens de publier un correctif (version 5.3.2 + 1) qui devrait résoudre ce problème. L'option permettant d'activer les mises à jour de l'emplacement du Backgroup est désormais configurable à l'aide de la clé EnableBackgroundLocationUpdates dans votre Info.plist (voir aussi le README.md dans la section iOS).

Merci à tous d'avoir aidé à déboguer cela. Veuillez me faire savoir si cela fonctionne à nouveau correctement.

Correctif confirmé, fermant le problème.

Salut, je suis nouveau ici en utilisant des services de géolocalisation avec flutter et j'ai trouvé ce projet, ça a l'air bien, mais j'ai un problème lorsque j'essaie d'obtenir l'emplacement actuel, l'application s'arrête et se ferme après avoir appuyé sur un simple bouton pour obtenir l'emplacement ...

C'est le code actuel que j'utilise dans le gestionnaire d'événements onPress dans une classe factice:

GeolocationStatus geolocationStatus  = await Geolocator().checkGeolocationPermissionStatus();

if (geolocationStatus == GeolocationStatus.granted) {
  Position position = await Geolocator().getCurrentPosition(desiredAccuracy: LocationAccuracy.high);
  print('position $position');
}

et voici la version du package que j'utilise dans pubspec.yaml :

geolocator: ^5.3.2+2

Et voici les clés que j'ai ajoutées au fichier info.plist :

  <!-- ...skipped by brevity -->
  <key>EnableBackgroundLocationUpdates</key>
  <true/>
  <key>NSLocationWhenInUseUsageDescription</key>
  <string>This app needs access to location when open.</string>
  <key>NSLocationAlwaysUsageDescription</key>
  <string>This app needs access to location when in the background.</string>
  <key>NSLocationAlwaysAndWhenInUsageDescription</key>
  <string>Always And In Use Permission</string>
  <key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
  <string>This app needs access to location when open and in the background.</string>
  <!-- skipped by brevity... -->

@mvanbeusekom une idée de ce que tu penses que je fais de mal?

@mvanbeusekom , le lien ne semble pas fonctionner et à part ce problème, je ne trouve aucune référence concernant EnableBackgroundLocationUpdates . J'adore ce package btw ..

@markbeij , corriger le lien mentionné faisait partie de la version 5.3.1. Actuellement, nous sommes sur une version 6.1.6 beaucoup améliorée qui a une structure de dossiers mise à jour pour prendre en charge l'architecture de plugins fédérés (ce qui facilite la prise en charge de plusieurs plates-formes).

Le lien actuel vers le README.md est: https://github.com/Baseflow/flutter-geolocator/blob/master/README.md

La section concernant le mode d'arrière-plan est:

Si vous souhaitez recevoir des mises à jour lorsque votre application est en arrière-plan, vous devrez également ajouter la fonctionnalité Modes d'arrière-plan à votre projet XCode (Projet> Signature et capacités> bouton "+ Capacité") et sélectionner Mises à jour de l'emplacement. Soyez prudent avec cela, vous devrez expliquer en détail à Apple pourquoi votre application en a besoin lors de la soumission de votre application à l'AppStore. Si Apple n'est pas satisfait de l'explication, votre application sera rejetée.

Cela ajoutera essentiellement le paramètre EnableBackgroundLocationUpdates à votre Info.plist . Notez que le géolocalisateur ne prend pas en charge l'exécution en arrière-plan et ne fournit aucun moyen de recevoir des mises à jour tout en s'exécutant en arrière-plan. Pour le moment, la seule chose que EnableBackgroundLocationUpdates fera est de dire à la plate-forme de continuer à écouter les mises à jour de localisation sur la plate-forme pendant que l'application est en arrière-plan (rien n'est appelé ou exécuté autrement).

Cette page vous a été utile?
0 / 5 - 0 notes