CLLocationManager startMonitoringVisits在模拟器中不起作用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CLLocationManager startMonitoringVisits在模拟器中不起作用相关的知识,希望对你有一定的参考价值。

我正在初始化访问监控

[self.locationManager startMonitoringVisits];

但是这个函数永远不会被调用

- (void)locationManager:(CLLocationManager *)manager
               didVisit:(CLVisit *)visit

如果我用。替换初始化调用

[self.locationManager startMonitoringSignificantLocationChanges];

然后同一个代表开始接听此电话

- (void)locationManager:(CLLocationManager *)manager
     didUpdateLocations:(NSArray *)locations

我正在使用ios 8模拟器,并使用不同的调试选项模拟位置,如高速公路驱动器,骑自行车,甚至尝试在等待几分钟后设置几个自定义位置。

我已经验证了位置设置并且看起来正确。位置管理器保存在强引用中。

答案

此功能在模拟器中无法工作,因为除了“位置”监控(通过GPS,WiFi,Cell网络,接近传感器,BlueTooth点等等 - 大多数模拟器中不存在),它还采用了大量的启发式方法和逻辑,以确定“访问”是什么。

例如 - 你需要“搬家”到一个新的地方。然后“停留”一段时间(当然,您的位置读数会一直变化)。然后你必须“离开” - 离开那个地方至少一段时间和距离,以创造一个“访问”。

这些事情不会发生在模拟器上,因此 - 没有访问。

如果你访问Ray Wenderlich的网站,那里有一个教程,它演示了CLVisit的使用,并通过另一个API + GPTX资源文件(GPS位置和时间的路径,以及送到的模拟器)应用一种很好的方法来“伪造”访问模拟器。模拟器)。

以上是关于CLLocationManager startMonitoringVisits在模拟器中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

为啥'CLLocationManager.locationServicesEnabled()'默认为真?

Xcode 6 GM - CLLocationManager

CLLocationManager 和 CLGeoCoder

CLLocationManager:没有调用 didChangeAuthorization 和 didRangeBeacons

CLLocationManager 最后一个已知位置

CLLocationManager 从不调用委托方法[重复]