Flutter-geolocator: geolocator.getCurrentPosition需要很长时间才能返回IOS上的位置

创建于 2019-08-30  ·  72评论  ·  资料来源: Baseflow/flutter-geolocator

getCurrentPosition在Android上确实可以正常工作,但是在IOS上花费了很多时间才能执行。 你能检查一下吗? 谢谢
平台:

  • [x]:iphone:iOS
  • []:机器人:Android
ios bug duplicate

最有用的评论

@babaosoftware谢谢您的努力。 我测试了相同的问题,并得出了与您相同的结论。 我们将致力于解决此问题,并在解决此问题时通知您。

所有72条评论

遇到相同的问题。 到目前为止,还没有找到导致速度下降的原因,但是使用“最新位置”作为我的情况的临时解决方法...

检查您的Info.plist是否具有3个键
NSLocationAlwaysUsageDescription
您的描述
NSLocationWhenInUseUsesDescription
您的描述
NSLocationAlwaysAndWhenInUseUsesDescription
您的描述

这里同样的问题。 不得不降级为geolocator插件的4.0.3版本。 之后的每个版本在iOS中的响应速度都很慢。
是的, @ paulobreim我在Info.plist中具有所有必需的字符串,否则它根本不会响应。

我使用位置插件获取当前位置。 它在Android和IOS上均可正常运行。

@ hungtran2492我也在使用位置插件,它比这快得多。

@StijnWoerkom关闭的原因是什么? 这是一个合法的错误,正在导致开发人员在Flutter的主位置库上出现问题。

@ollydixon我在多个IOS设备上测试了此问题,并得出结论,问题出在设备而不是代码上。 我可以重新打开该问题,但看不到此问题有任何问题。

@StijnWoerkom是否有帮助,我与4个用户一起进行了实时应用演示,并且在所有手机上的运行速度都很慢。 (所有iOS)。 对我来说有点尴尬,因为模拟器运行正常,仅在设备上运行非常慢。

我使用了另一个库,很好(Flutter的位置)。

版本4.0.3可以正常工作。 实际上,我在应用程序上将其降级为该版本。 因此,它必须在库本身中。 用不同的iPhone进行测试是否一致,所以我怀疑它是设备。

@ollydixon谢谢您的回复。 很抱歉您的演示失败。 我重新打开了问题,并将对此进行进一步的研究。 能告诉我您使用的是哪个版本?

@StijnWoerkom不用担心,他们知道这是Alpha版本。 是5.1.3。

4.0.3之后的任何版本都有此问题。 因此,它一定是5.0.0中引入的内容。

@babaosoftware在5.0.0版本中,我们将IOS版本从Swift转换为Objective-C,从而大大减少了最终二进制文件的大小,并解决了与其他基于Objective-c的插件的兼容性问题。

@StijnWoerkom我不是在怀疑转换的必要性,只是说它造成了这个问题,并暗示了有人可能会开始研究它。

我注意到您昨天告诉我问题是从5.0.0版本开始的。 我正在研究我们在该版本中添加的所有功能,以确定导致此问题的原因。

让我提出一个解决问题的替代方案(如果确实存在)。
我们只能使用geolocator.getCurrentPosition函数创建一个小程序,每个人都可以测试该程序并测量其执行时间。
你怎么看?

@paulobreim我今晚要去做那个(美国东部时间)。 我将在收到结果后立即发布。

我做了以下测试:
该应用程序:
导入' package:flutter / foundation.dart ';
导入' package:geolocator / geolocator.dart ';
void main(){
DateTime开始= DateTime.now();
getCurrentPosition()。then((pos){
DateTime结束= DateTime.now();
debugPrint(“时间跨度= $ {end.difference(start).inMilliseconds} ms”);
});
}
未来getCurrentPosition()异步{
返回等待Geolocator()。getCurrentPosition();
}

在pubspec.yaml中,我有
geolocator:^ 4.0.3#不要升级-启动时响应非常慢。
进行第一次测试
地理位置:^ 5.1.4
用于第二次测试。
我使用iPhone 6S进行了测试,但是在我也使用较新的设备之前,所以我认为该设备不会有所作为。
第一个测试版本为4.0.3,显示响应时间约为100毫秒
第二个测试,版本为5.1.4。 显示出大约10 s的响应时间-即秒,而不是ms
妳去

我正在尝试在摩托罗拉Z2 Play和iPhone上对其进行测试,但出现以下错误,并且不知道该怎么办。

在以调试模式为x86构建的Android SDK上启动lib / main.dart ...
正在初始化gradle ...
解决依赖性...
正在运行Gradle任务'assembleDebug'...

失败:生成失败,发生异常。

  • 什么地方出了错:
    任务':app:preDebugBuild'的执行失败。
    > Android依赖关系'androidx。 core:core '对于编译(1.0.0)和运行时(1.0.2)类路径具有不同的版本。 您应该通过DependencyResolution手动设置相同的版本

我知道与Geolocator没有关系,但我不知道要解决它。

'androidx。 core:core '对于编译(1.0.0)和运行时(1.0.2)类路径具有不同的版本

检查一下:
https://github.com/flutter/flutter/issues/27254

这是我对Android的测试。
我放了一个floatActionButton并按了10次

首次测试地理位置:^ 4.0.3
在调试模式下在Moto Z2 Play上启动lib / main.dart ...
正在初始化gradle ...
解决依赖性...
正在运行Gradle任务'assembleDebug'...
构建build / app / outputs / apk / debug / app-debug.apk。
正在将文件同步到设备Moto Z2 Play ...
I /颤振(11197):时间跨度= 1006毫秒
I /颤振(11197):时间跨度= 1626毫秒
I /颤振(11197):时间跨度= 965毫秒
I /颤振(11197):时间跨度= 6024毫秒
I /颤振(11197):时间跨度= 991毫秒
I /颤振(11197):时间跨度= 971毫秒
I /颤振(11197):时间跨度= 6022毫秒
I /合子(11197):执行部分代码缓存收集,代码= 62KB,数据= 51KB
I /合子(11197):收集代码缓存后,代码= 62KB,数据= 51KB
I /合子(11197):将代码缓存容量增加到256KB
I /颤振(11197):时间跨度= 7866毫秒
I /颤振(11197):时间跨度= 940毫秒
I /颤振(11197):时间跨度= 6091毫秒

第二次测试地理位置:^ 5.1.4
在调试模式下在Moto Z2 Play上启动lib / main.dart ...
正在初始化gradle ...
解决依赖性...
正在运行Gradle任务'assembleDebug'...
构建build / app / outputs / apk / debug / app-debug.apk。
正在将文件同步到设备Moto Z2 Play ...
I /颤振(11471):时间跨度= 1043毫秒
I /颤振(11471):时间跨度= 5927毫秒
I /颤振(11471):时间跨度= 8876毫秒
I /颤振(11471):时间跨度= 1052毫秒
I /颤振(11471):时间跨度= 5987毫秒
I /颤振(11471):时间跨度= 6316毫秒
I /颤振(11471):时间跨度= 5948毫秒
I /合子(11471):执行部分代码缓存收集,代码= 62KB,数据= 50KB
I /合子(11471):收集代码缓存后,代码= 62KB,数据= 50KB
I /合子(11471):将代码缓存容量增加到256KB
I /颤振(11471):时间跨度= 934毫秒
I /颤振(11471):时间跨度= 6012毫秒
I /颤振(11471):时间跨度= 954毫秒

第三次测试地理位置:^ 5.1.4
(WHITOUT在地理定位器中等待10次快速按下按钮
在调试模式下在Moto Z2 Play上启动lib / main.dart ...
正在初始化gradle ...
解决依赖性...
正在运行Gradle任务'assembleDebug'...
构建build / app / outputs / apk / debug / app-debug.apk。
正在安装build / app / outputs / apk / app.apk ...
正在将文件同步到设备Moto Z2 Play ...
I /颤振(16122):时间跨度= 1020毫秒
I /颤振(16122):时间跨度= 159毫秒
I /颤振(16122):时间跨度= 584毫秒
I /颤振(16122):时间跨度= 544毫秒
I /颤振(16122):时间跨度= 99毫秒
I /颤振(16122):时间跨度= 536毫秒
I /颤振(16122):时间跨度= 82毫秒
I /合子(16122):执行部分代码缓存收集,代码= 62KB,数据= 50KB
I /合子(16122):代码缓存收集后,代码= 62KB,数据= 50KB
I /合子(16122):将代码缓存容量增加到256KB
I /颤振(16122):时间跨度= 504毫秒
I /颤振(16122):时间范围= 1381毫秒
I /颤振(16122):时间跨度= 946毫秒

正如标题所示,虽然我自己没有在Android上检查问题,但此问题已在iOS上打开。 但是,您的测试显示出非常不一致的结果,而且我不确定在不等待geolocator调用的情况下,第三项测试会做什么。 也许发布您的应用代码会澄清这一点。
无论如何,我现在仍然使用该库的4.0.3版本。 事实上,我最近在Apple Store上发布了我的应用程序。 您可能想在以下位置签出
http://apps.apple.com/us/app/apple-store/id1469322424

这是我对IOS 12.4.4 iPhone 6的测试

首次测试地理位置:^ 4.0.3
以调试模式在iPhone PCB上启动lib / main.dart ...
使用开发人员身份对iOS应用进行签名以进行设备部署:“ iPhone开发人员:Paulo Breim(Y34R2HBJ59)”
正在运行Pod安装...
正在运行Xcode构建...
Xcode构建完成。 23,7秒
安装和启动...
正在将文件同步到设备iPhone PCB ...
颤动:时间跨度= 230毫秒
颤动:时间跨度= 92毫秒
颤动:时间跨度= 74毫秒
抖动:时间跨度= 80毫秒
抖动:时间跨度= 95毫秒
颤动:时间跨度= 87毫秒
颤动:时间跨度= 199毫秒
颤动:时间跨度= 58毫秒
颤动:时间跨度= 73毫秒
抖动:时间跨度= 70毫秒

第二次测试地理位置:^ 5.1.4
以调试模式在iPhone PCB上启动lib / main.dart ...
使用开发人员身份对iOS应用进行签名以进行设备部署:“ iPhone开发人员:Paulo Breim(Y34R2HBJ59)”
正在运行Pod安装...
正在运行Xcode构建...
Xcode构建完成。 22,6秒
安装和启动...
正在将文件同步到设备iPhone PCB ...
颤动:时间跨度= 12383毫秒
颤动:时间跨度= 10033毫秒
颤动:时间跨度= 10027毫秒
颤动:时间跨度= 10026毫秒
颤动:时间跨度= 10031毫秒
颤动:时间跨度= 10029毫秒
颤动:时间跨度= 10032毫秒
颤动:时间跨度= 10032毫秒
颤动:时间跨度= 10028毫秒
颤动:时间跨度= 10029毫秒

babaosoftware,让我知道您是否需要更多测试

@paulobreim感谢您的努力。 显然可以肯定我们一直在说的话,并且结果是一致的。 从5.0.0开始的geolocator库版本在iOS平台上调用getCurrentPosition的响应时间大约为10秒,这是不可接受的。
Android上的结果不一致,但有些结果显示响应时间超过8秒,这也令人担忧。
@StijnWoerkom我认为有足够的证据表明库升级存在某些问题,需要进行一定的隔离和修复。

@babaosoftware谢谢您的努力。 我测试了相同的问题,并得出了与您相同的结论。 我们将致力于解决此问题,并在解决此问题时通知您。

在具有最新版本的GeoLocator的iOS 13.1.3 iPhone XR上,也是如此。 获取当前位置大约需要8-10秒

对于那些在iOS中遇到getPosition缓慢问题的人(例如,需要10多个秒来获取位置信息),您可以使用此替代软件包,如之前在前面的主题中所述。

https://github.com/Lyokone/flutterlocation

它在Android和iOS中都非常快速地加载位置信息。 (<1秒)。

我在使用最新版本时遇到了同样的延迟。 坚持使用4.0.3版本有什么问题/不利方面吗?

我同意@cielo ,我测试了这个程序包和location程序包[ link ],并且速度上的差异是显而易见的。 虽然,此软件包提供了更多功能,但我希望此错误延迟得到解决(对我而言,这是不一致的)。

我只想补充一点,就是我仍然遇到这种缓慢情况。 在模拟器上可以正常工作,但在Iphone 8 Plus物理设备上花费10秒钟以上。

有效地,版本4.0.3很棒。 通过将设备的位置降低到4.0.3,我在物理ios设备(版本5.2.0)中的经验在定位设备的位置方面非常延迟。

嗨,我在Android上遇到此问题

我的代码很简单。 Position position = await _geoLocator.getCurrentPosition();

我正在使用Google Pixel 3A

我也是 :(
我正在使用^ 5.1.5
getCurrentPosition()使得Android和IOS都变慢

我也是
iam使用^ 5.3.0
IOS 12.4 Iphone 5s。

我在iOS 13.4 beta iPhone XR上遇到同样的问题
在任何Android OS设备上均可正常运行。

同样的问题,在虚拟设备上工作正常,但在物理设备上延迟10秒

在我的iPhone 7,iOS 13.4上遇到相同的问题

iPhone 7和iPhone X,IOS 13中存在相同问题

您好,实际的iPhone X设备iOS 13中存在相同问题

由于此问题,我们的启动时间为10+秒,回到4.0.3可以正常工作

同样在这里,iPhone 5s iOS 12.4。

同样在iPhone 6s iOS 13.4中

我也遇到了这个问题。 iPhone 6s iOS 13.4

iPhone 8 iOS 13.4在物理设备上也存在同样的问题。 getLastKnownLocation可以正常工作。

+1

在此处使用在iPhone Xs和iOS 13.3上的^5.3.1 Geolocator版本。 我已将其降级为4.0.3 ,而且速度非常快! 🚀

结果缓慢,在IOS模拟器中,它就像一个咒语,然后我在真实电话上尝试在每个不同的地址上花费大约10秒的时间,我在几所房子周围走来走去,而且第一次总是很慢,如果重试,它将加载快速地。

我也尝试了4.0.3,并且运行良好,但是我看到了从4.0.3到^ 5.3.1的许多修复程序。 有什么计划在主分支中解决此问题?

我注意到4.0.3不如5.3.1准确

我也有同样的问题。 降级为4.0.3为我解决了这个问题。 它在ios模拟器上运行良好,但是在我的物理ios设备(iPhone SE 2nd Gen)上却花了很多时间。

这个问题如何没有得到更多的关注? 当然,这是生产级别的插件中断问题。 v4.0.3以后的实际环境中根本无法使用它。

同样也要抱怨,iPhone 8。
在5.3.1上的实际硬件上,首次采集是20秒钟以上。
相同的硬件,相同的位置,在4.0.3。上的首次采集时间约为2秒。

结果缓慢,在IOS模拟器中,它就像一个咒语,然后我在真实电话上尝试在每个不同的地址上花费大约10秒的时间,我在几所房子周围走来走去,而且第一次总是很慢,如果重试,它将加载快速地。

盖伊我已使用4.0.3版本在模拟器和设备iOS(iPhone 6s-8)中获得最佳效果

我遇到了同样的问题,迁移到4.0.3并非易事,因为我必须降低版本并已经升级到Androidx。 我改用flutter location插件,速度更快。

与其他人说的类似,我在物理iOS设备上看到了大约10秒的延迟(几乎是点),但在模拟器中却没有延迟。 在我的团队中的多个设备上都看到了这种速度下降。

是否打算为较新的版本实施修复程序?

您可以尝试更改精度吗? 这个为我工作:
等待Geolocator()。getCurrentPosition(desiredAccuracy:LocationAccuracy.medium)

等待Geolocator()。getCurrentPosition(desiredAccuracy:LocationAccuracy.medium)
为我工作。

我当时在5.3.2 + 2,并注意到该插件比location插件要慢得多。 根据这里的建议,我降级到4.0.3,速度有了很大提高。

同样具有与上述相同的问题,当在Mac上的Simulator v11.5中运行时,以下修订适用于最新的GeoLocation,在撰写本文时适用于v ^ 5.3.2 + 2。

默认情况下,未设置Simulator IOS设备的位置,这会导致异常,这可以通过单击顶部菜单栏中的设置进行设置。

功能->位置->选择一个选项

由于实际iOS设备上的性能,还不得不降级到4.03。

同样在这里,非常慢。

使用版本5.3.1时,我遇到了同样的问题。
在几乎所有版本的iPhone,iPad上都需要花费大约10秒钟的时间。
更改LocationAccuracy(从最佳到中等)似乎可以解决问题。

此处相同,已在多款6S及更高版本的iPhone(5.3.2版)上进行了测试-需要5-10秒才能获得位置

同样在这里iPhone 8需要5秒钟才能确定位置

也许我的解决方案隐藏在文本中:
当我更改LocationAccuracy(从最佳到中等)时,请将延迟缩短不到一秒钟,有时响应是瞬时的(至少在我测试过的所有计算机上)。
请注意,“好”的LocationAccuracy不够好。

我的iPhoneSE最多需要100秒(秒)才能获取当前位置。 有时它花费的时间不到一秒钟,而下一次花费的时间最多为100。我也尝试使用Location软件包,但是仍然存在相同的问题。 我不能降级到4.0.4,因为我使用的另一个软件包取决于更高的版本。 :(

我们正在努力开发可以解决这些问题的新版本。 另请参阅第430期,有关进度的更多详细信息。

最近使用geolocator遇到了此问题:^ 5.3.1
解决我升级到geolocator的问题:^ 5.3.2 + 2
放 :
编译版本28

并最终做到了
扑扑升级

看来已经解决了这个问题。

等待Geolocator()。getCurrentPosition(desiredAccuracy:LocationAccuracy.medium)
为我工作。

Geolocator()类现已在最新版本的^ 6.0.0中弃用,我应该如何使用PlaceMarker和placeFromCoordinate

@mannnish ,地理编码功能已移至其自己的(专用)插件,称为geocoding

@mannnish ,地理编码功能已移至其自己的(专用)插件,称为geocoding

谢谢工作

我更新到最新版本,为我解决了问题👍👍👍

我更新到最新版本,为我解决了问题👍👍👍

确实,升级到^6.1.14对我有帮助。

我更新到最新版本,为我解决了问题👍👍👍

确实,升级到^6.1.14对我有帮助。

它对我不起作用.................告诉我需要遵循的步骤

我更新到最新版本,为我解决了问题👍👍👍

确实,升级到^6.1.14对我有帮助。

它对我不起作用.................告诉我需要遵循的步骤

嗯,我刚刚更新了pubspec.yaml,也许您还需要删除pubpec.lock?

现在又慢了(至少在网络上)

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

相关问题

estevez-dev picture estevez-dev  ·  6评论

long1eu picture long1eu  ·  4评论

joesnarky picture joesnarky  ·  3评论

prasant10050 picture prasant10050  ·  6评论

hectorAguero picture hectorAguero  ·  5评论