【问题标题】:iOS 6 AutoPause doesn't workiOS 6 自动暂停不起作用
【发布时间】:2012-10-06 22:04:14
【问题描述】:

我已经按照“Session 303 - 从定位服务保持跟踪”WWDC 2012 中的 AutoPause 示例

在示例中,您可以看到 AutoPause 是如何启用的,并且有两个方法被调用:

-(void) locationManagerDidPauseLocationUpdates:(CLLocationManager *)manager
-(void) locationManagerDidResumeLocationUpdates:(CLLocationManager *)manager

我做了同样的例子,但这些方法从来没有被调用过。 谁试过了?

【问题讨论】:

    标签: ios geolocation location ios6


    【解决方案1】:

    我现在正在对此进行试验,以下是我的观察结果:

    在 iPhone 4 上,这根本不起作用。即使您将 pausesLocationUpdatesAutomatically 设置为 YES,它也会将 pausesLocationUpdatesAutomatically 设置为 NO(0)。没有警告,这是什么 API 设计反模式!

    在 iPhone 5 上 pausesLocationUpdatesAutomatically 默认为 YES (1)。并调用 locationManagerDidPauseLocationUpdates。我在调用 locationManagerDidResumeLocationUpdates 时运气不好。我也很困惑,如果 GPS 关闭,这将如何调用?一旦用户到达下一个网络单元,它会被调用吗?即使那不是我的经验,也从来没有被调用过。

    到目前为止,在我看来,这是 iOS6 中一致性最差的变化之一。对于所有场景,我可能只使用 pausesLocationUpdatesAutomatically = NO,并希望在 iOS6 的所有型号上都能正常工作。

    [更新 - 2013 年 3 月 4 日]。我查看了 Apple 关于 iOS6 中位置更改的演示文稿,他们建议在收到区域更改事件后使用区域更改监控来“取消暂停”。虽然这不适合我的场景,因为用户可能会去/跑步/开车一两公里,直到发生此类事件。

    【讨论】:

    • 如果您尝试在 iOS 5 上分配 pausesLocationUpdatesAutomatically = yes,它将崩溃。
    • 以上当然是真的,在使用这个属性之前,你必须通过respondsToSelector检查。
    • 它适用于我的 iPhone 4 (iOS6)。当我再次开始移动时,GPS 会暂停,但从未恢复。
    • @Lukasz 暂停时,您在后台还是前台?我被告知它甚至可以在前台暂停...在那里您可以再次取消暂停并获得恢复回调,不确定前台取消暂停是否自行发生,或者您是否需要在 @987654322 中调用 startLocationUpdates @。根据文件,重新开始似乎是您的责任(可能您希望以降低的准确性重新开始)
    【解决方案2】:

    我遇到了同样的问题,发现你必须将属性 pausesLocationUpdatesAutomatically 设置为 YES

    【讨论】:

      猜你喜欢
      • 2017-03-12
      • 2015-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-25
      相关资源
      最近更新 更多