问题描述
自iOS 8发布以来,我遇到了 SignificantLocationChanges
的问题。方法
I have a problem with the SignificantLocationChanges
since the release of iOS 8. The method
[locationManager startMonitoringSignificantLocationChanges];
在检查可用性后是否正确调用,代表也很好用(我用<$检查它) c $ c> didChangeAuthorizationStatus 方法,它是同一个委托和对象的一部分)并且编译器毫无疑问,但绝对没有更新,也没有来自 didFailWithError的错误
方法。日志说 authorizationStatus 是4,我认为这是可以的。
is called correctly after checking for availability, the delegates also work nice (I check it with the didChangeAuthorizationStatus
method, which is part of the same delegate and object) and compiler has no doubts, but there comes absolutely no updates and no errors from the didFailWithError
method. The log says the authorizationStatus is 4, which is ok I think.
在iOS 8之前,这一切都正常。
Before iOS 8 this all works fine.
第一个测试设备(带有3G的iPad 2)运行iOS 7.1.2第二个(iPhone 5)8.0.2,当我使用正常的 startUpdatingLocation
方法我立即获得更新。但 SignificantLocationChanges
对我的工作会好得多。有没有人知道错误可能在哪里?
The first test-device (iPad 2 with 3G) runs iOS 7.1.2 the second (iPhone 5) 8.0.2, when I use the normal startUpdatingLocation
method I get updates immediately. But SignificantLocationChanges
would be much better for my work. Has anyone an idea where the error could be?
推荐答案
在iOS 8中您必须请求始终类型的授权才能允许应用程序使用重要位置。
In iOS 8 You must request authorization with type "Always" to allow your app to use significant locations.
在-Info.plist文件中添加一个新行,其中包含密钥NSLocationAlwaysUsageDescription
Add a new row in your -Info.plist file with key NSLocationAlwaysUsageDescription
如果尚未请求授权请求授权。
Then request authorization if its not requested yet.
- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status
{
if (status == kCLAuthorizationStatusNotDetermined && [manager respondsToSelector:@selector(requestAlwaysAuthorization)]) {
[manager requestAlwaysAuthorization];
}
}
这篇关于自iOS 8以来,SignificantLocationChanges不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!