应用程序关闭时 iOS 显着位置变化检测

标签 ios iphone location device

我一直在尝试在应用程序完全关闭时使用重大位置更改,但它没有给出预期的结果。

我的应用程序应该检测汽车旅行何时开始。为此,我注册了重大位置变化跟踪,因此一旦发生重大变化,应用程序应由 iOS 启动。

在模拟器上,我模拟了高速公路驾驶,效果完全正常。然而,在真实设备上,应用程序会在以非常高的速度移动 5 到 10 公里后启动。

我在商店中发现了成功执行该操作的其他应用程序,因此我想知道我的实现的哪一部分不正确。

我已在 info plist 中启用位置背景模式。这是我用来启动重要位置更新的代码:

self.significantLocationManager = [[CLLocationManager alloc] init];
self.significantLocationManager.delegate = self;
if ([self.significantLocationManager respondsToSelector:@selector(setAllowsBackgroundLocationUpdates:)]) {
    self.significantLocationManager.allowsBackgroundLocationUpdates = YES;
}
[self.significantLocationManager startMonitoringSignificantLocationChanges];

编辑:我已经请求并授予我的应用“始终”使用位置服务的权限。该应用程序已经在前台、后台和终止时使用位置(但从终止状态启动需要很多时间)。

最佳答案

您必须请求 Always 许可才能在后台运行您的应用程序。即使您的应用程序被终止,如果重要位置发生更改,该应用程序也会唤醒。到那时你不能更改任何 UI 组件(即更改标签文本等),除此之外你的代码是正确的。

关于应用程序关闭时 iOS 显着位置变化检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42388904/

相关文章:

iphone - IOS:找不到 -lz.1.2.3 的库

swift - 导航按钮 用户位置

ios - 在 tableview Swift 3 中保存并显示录制的语音笔记

ios - 将 UICollectionView 添加到导航栏

ios - RxSwift 如何将 "clear all"UIButton 添加到简单的电子表格示例

ios - SwiftUI ForEach 中的动态绑定(bind)字段

iphone - iOS——从包含地址的 NSString 获取指针

iphone - 从 CGBitmapContextGetData 获取图像

api - 没有 HTML5 API 的地理定位

android - 从库中的图像访问位置数据