我一直在尝试使用重要的位置更改,而应用程序完全关闭,但它没有给出理想的结果。
我的应用程序应该检测何时开车旅行。为此,我注册了重要的位置更改跟踪,因此应用程序应在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];
编辑:我已经请求并授予我的应用程序“始终”使用位置服务的权限。应用程序已经在前台,后台和终止时使用位置(但从终止状态启动需要很多时间)。
答案 0 :(得分:1)
您必须要求始终允许在后台运行您的应用。即使您的应用程序被杀,如果重要位置发生更改,应用程序也会唤醒。到那时你不能改变任何UI组件(即更改标签文本等)。除此之外你的代码是正确的。