模拟`startMonitoringSignificantLocationChanges`的位置变化

时间:2011-12-17 01:39:43

标签: iphone xcode4 ios-simulator core-location

我正在编写iPhone应用程序并使用位置服务。我在startMonitoringSignificantLocationChanges上使用CLLocationManager方法。 (据我所知,这是针对低功耗,低精度的定位服务。)当我在iOS模拟器中构建和启动我的应用程序时,它使我的位置正常。但是,我想模拟初始修复之外的位置更新。

我注意到了这两个选项:

  • iOS模拟器:调试>位置菜单
  • Xcode 4:产品>调试>模拟位置菜单

这两项工作都可以用来模拟初始修复。 (例如,从前者选择'Apple',或从后者选择'Moscow'。)但是,对其中任何一个的后续更改都不会在模拟应用中触发另一个位置更新。

我希望在使用startMonitoringSignificantLocationChanges时模拟位置发生变化时收到通知。 (当我使用startUpdatingLocation时,iOS模拟器生成一系列更新。)这样可以更轻松地测试启用位置的应用程序,而无需将设备带入现场。

两个问题:

  • 这两者有什么区别?
  • 如何使用iOS模拟器和/或Xcode 4模拟一系列位置变化?

干杯。

3 个答案:

答案 0 :(得分:36)

如果您想制作曲目,可以创建一个包含以下路标的GPX文件:

<?xml version="1.0" encoding="UTF-8"?>
<gpx>
    <wpt lat="52.373" lon="4.871"></wpt>
    <wpt lat="52.374" lon="4.872"></wpt>
    <wpt lat="52.375" lon="4.871"></wpt>
</gpx>

将其另存为track.gpx。小心一开始就没有空格。

当你构建并运行时,Xcode底部有一个工具栏,带有一个位置箭头(类似于iPhone上的那个)。这是“模拟位置”。单击此处并加载您的GPX文件。当您的应用在模拟器中运行时,蓝点应该移动。我不认为有一种方法可以控制时间,因此它会每半秒左右更新一次它的位置。

我在Simulator菜单中看到的差异是你不能拥有自定义曲目,只能拥有自定义曲目。我不知道为什么菜单选项不同,他们可能会在某个时候为模拟器中的自定义轨道添加一个选项。

答案 1 :(得分:9)

FWIW,对重要位置变化的监控几乎完全与细胞塔三角测量和切换相关联。在模拟器中处理它的方式可能与它在设备上的方式大不相同。甚至区域监控也可以获得Wifi和其他使用位置的应用程序的额外奖励,以获得更频繁的更新。

我猜这就是模拟器的工作原理,即使是通过远距离并且应该逻辑触发的位置,也就是说不是如何处理更新。模拟器中没有单元塔切换,因此无法真正测试出重大变化。

答案 2 :(得分:0)

跟进@ Nevan-king回答使用startMonitoringSignificantLocationChanges

时没有更新的原因

请参阅Apple Note for func startMonitoringSignificantLocationChanges()

  

只要设备移动500米,应用就会收到通知   或者更多来自之前的通知。不应该期待   通知频率高于每五分钟一次。如果   设备能够从网络中检索位置管理器的数据   更有可能及时发送通知。