Flutter-geolocator: 位置在IOS模拟器上不起作用

创建于 2020-06-04  ·  12评论  ·  资料来源: Baseflow/flutter-geolocator

🐛错误报告

预期行为

期望打印位置,这是代码:
Geolocator geo = Geolocator();
排名pos =
等待geo.getCurrentPosition(desiredAccuracy:LocationAccuracy.high);
打印(pos);

繁殖步骤

它适用于Android模拟器位置,并打印到控制台。
在iOS模拟器上不起作用,什么都不会打印,并且如果我在print(pos)之后添加另一个print语句,它也不会打印。 我猜它永远都没有位置,所以它永远“等待”?

配置

Android Studio上的iPhone 11模拟器

版本: 1.x

平台:
:iphone:iOS

ios in progress bug

最有用的评论

@LarryJing我无法重现此问题,您实际上模拟了位置更新吗? 在iOS模拟器上,您需要使用以下菜单选项主动设置位置:“功能”->“位置”:

Screenshot 2020-06-04 at 13 21 49

所有12条评论

@LarryJing我无法重现此问题,您实际上模拟了位置更新吗? 在iOS模拟器上,您需要使用以下菜单选项主动设置位置:“功能”->“位置”:

Screenshot 2020-06-04 at 13 21 49

是的,我在ios模拟器中的此插件上也遇到了错误。 我正在控制台上获取此日志。
Screenshot 2020-06-04 at 6 42 49 PM

是的,我在ios模拟器中的此插件上也遇到了错误。 我正在控制台上获取此日志。
Screenshot 2020-06-04 at 6 42 49 PM

我也有同样的错误。

```颤抖的医生
[✓] Flutter(频道稳定,v1.17.2,在Mac OS X 10.15.4 19E287上,语言环境为en-JP)

[✓] Android工具链-为Android设备开发(Android SDK版本29.0.3)

[✓] Xcode-为iOS和macOS开发(Xcode 11.5)
[✓] Android Studio(4.0版)
[!] IntelliJ IDEA Ultimate Edition(版本2018.2.2)
tter未安装Flutter插件; 这增加了Flutter的特定功能。
art未安装Dart插件; 这增加了Dart特定的功能。
[✓] VS代码(1.45.1版)
[✓]已连接的设备(1个可用)
```

版本: geolocator: 5.3.2

模拟器: iPhone 11 / Software Version 13.5

当模块版本更改为5.3.1时,不会发生该错误。

Screenshot 2020-06-04 at 8 15 06 PM
通过添加位置更新权限,此问题得以解决

我也遇到这个问题。 我不想在背景中请求位置,仅在前景中请求。 我希望这意味着我不需要启用后台模式。

这确实是一个错误,它是错误地存在的。 我将在今天/明天晚些时候更正它。 在此之前,要么在后台启用位置更新,要么坚持使用5.3.1

我刚刚发布了一个修复程序(版本5.3.2 + 1),它可以解决此问题。 现在可以使用Info.plistEnableBackgroundLocationUpdates键配置启用Backgroup位置更新的选项(另请参阅iOS部分的README.md )。

感谢大家帮助调试。 请让我知道它是否再次正常工作。

已确认修复,已解决问题。

嗨,我是新来的,在地理位置上使用Flutter的地理位置服务,我发现这个项目看起来不错,但是当我尝试获取当前位置时遇到问题,应用程序停止,按下一个简单的按钮后就关闭了获取位置...

这是我在虚拟类的onPress事件处理程序中使用的当前代码:

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

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

这是我在pubspec.yaml使用的软件包的版本:

geolocator: ^5.3.2+2

这些是我添加到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关于您认为我做错了什么的任何想法?

@mvanbeusekom ,该链接似乎不起作用,除此以外,这个问题我找不到有关EnableBackgroundLocationUpdates引用。 爱这个包顺便说一句..

@markbeij ,更正提到的链接是5.3.1版本的一部分。 当前,我们正在使用经过改进的版本6.1.6,该版本具有更新的文件夹结构以支持联合插件体系结构(这使得事情更容易支持多个平台)。

指向README.md的当前链接为: https :

有关后台模式的部分是:

如果您希望在App处于后台时接收更新,则还需要向XCode项目添加“后台模式”功能(“项目”>“签名和功能”>“ +功能”按钮),然后选择“位置更新”。 请注意这一点,在向AppStore提交应用程序时,您需要向Apple详细解释为什么您的应用程序需要此功能。 如果Apple不满意该说明,则您的应用将被拒绝。

这基本上会将EnableBackgroundLocationUpdates参数添加到Info.plist 。 请注意,geolocator不支持在后台运行,并且不提供任何在后台运行时接收更新的方式。 目前, EnableBackgroundLocationUpdates唯一要做的就是告诉平台在后台运行应用程序时继续监听平台上的位置更新(否则不会调用或执行任何操作)。

此页面是否有帮助?
0 / 5 - 0 等级