CLLocationManager startMonitoringVisits在模拟器中不起作用

时间:2015-04-03 23:37:30

标签: ios8 cllocationmanager

我正在初次化访问监控

[self.locationManager startMonitoringVisits];

但这个函数永远不会被称为

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

如果我用

替换初始化调用
[self.locationManager startMonitoringSignificantLocationChanges];

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

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

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

我已经验证了位置设置,看起来正确。位置管理器保存在强大的参考中。

1 个答案:

答案 0 :(得分:0)

此功能无法在模拟器中使用,因为它不仅采用“位置”监视(通过GPS,WiFi,蜂窝网络,接近传感器,蓝牙斑点等-大多数在模拟器中不存在),而且还采用许多启发式和逻辑,以确定什么是“访问”。

例如-您需要“移至”新位置。然后在该处“停留”一段时间(当然,您的位置读数始终会变化)。然后,您必须“离开”-离开该地点至少一段时间和距离,以创建“访问”。

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

如果您访问Ray Wenderlich的站点,那里有一个教程演示了CLVisit的用法,并通过另一个API + GPTX资源文件(一种GPS位置和时间的路线)将一种不错的方法应用于“假”访问模拟器,并提供给模拟器)。