gpt4 book ai didi

ios - ios7 中的 CLLocationManager 停止工作

转载 作者:行者123 更新时间:2023-12-02 08:40:34 24 4
gpt4 key购买 nike

我的 CLLocationManager 在用户首次进入应用程序时启动。我这样初始化它:

self.locationManager = [[CLLocationManager alloc] init];
self.locationManager.delegate = self;
self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;
self.locationManager.distanceFilter = kDistanceFilter;
self.locationManager.headingFilter = kHeadingFilter;

我正在使用地理围栏。

我已在 .plist 中定义了所需的背景模式

如果我使用 gpx 文件在模拟器中测试应用程序,它工作正常。到目前为止,一切顺利。

但是,我在这两个链接中阅读了:

Start Location Manager in iOS 7 from background task

Background Location Services not working in iOS 7

iOS7 中,当位置在几分钟内没有改变时,CLLocation 就会进入休眠状态。

我的问题是:

我根本不调用didUpdateLocation,我只想要didEnterRegiondidExitRegion。理论上,即使应用程序被终止或用户位置在过去一小时内没有更改然后决定移动,它会起作用吗?

最佳答案

您的问题中有几个要素:

1-为了不重复以前的答案中的内容,我将首先在此链接中查看我的答案。它将帮助您解决如果用户停止移动则核心位置更新停止的问题以及如何修改该行为: iOS7 Core Location not updating

2-如果用户在 iOS7 中终止某个应用程序(通过在应用程序切换器中向上轻拂该应用程序),该应用程序将不会重新启动,因此在手机重新启动后,您的位置更新和区域监控都不会重新启动。另一方面,如果应用程序因内存压力而被终止,iOS 将重新启动应用程序并在后台重新启动您的位置更新和区域监控。另外,如果您重新启动手机,区域监控将自动重新启动。显然您必须启用后台模式。

3-现在您正在讨论问题中的区域,因此我假设您已经实现了 CLCircularRegion。如果没有,那应该是第一步,然后是“startMonitoringForRegion”。在您的情况下,即使用户停止移动一段时间然后开始移动,当应用程序进入或退出某个区域时,该应用程序也会被唤醒/委托(delegate)调用。

4- 确保同时使用 locationManager: didDetermineState: forRegion: 。这将允许应用程序在开始时确定它是在该区域之内还是之外。当您想到正在启动的应用程序并且没有发生区域跨越时,这非常有用,但了解用户是在该区域之内还是之外非常重要。

希望这有帮助

关于ios - ios7 中的 CLLocationManager 停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21076888/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com