CLLocationManager委托未调用
我正在使用iBeacons,但遇到了一个小问题。CLLocationManager委托未调用
第一次使用时,用户需要赋予权限,然后我们下面被称为:
_locationManager = [[CLLocationManager alloc] init];
_locationManager.delegate = self;
[_locationManager requestAlwaysAuthorization];
不过,我预计将称为以下的委托方法:
- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status {
NSLog(@"Auth status changed: %i", status);
if(status > 3){
// Check if we have to start monitoring beacons
NSLog(@"Do we need to initialise after auth given?");
//[self initialiseLocations];
}
}
我运行iOS 8.0.2,所以不知道这是否是一个错误
This answer可能会帮助...它至少解决了它。此外,this website对于这个问题也是一个很好的演练。
看起来您正在调用requestAlwaysAuthorization,但您是否在任何地方拨打startUpdatingLocation
?另外,请仔细检查在您的Info.plist中您是否已添加适当的密钥和字符串值(因为您使用的是requestAlwaysAuthorization
,所以为NSLocationAlwaysUsageDescription
)。
我有这些设置,而且它工作正常,否则(我使用它为iBeacons,所以不需要启动startUpdatingLocation,因为这是GPS)。这就是为什么我需要回调,所以我可以发起跟踪信标的请求。 – 2014-10-10 18:53:03
哦,我从来没有使用iBeacons,所以我不完全确定然后...我做了一个快速搜索,然后发现[本教程](http://ibeaconmodules.us/blogs/news/14279747-tutorial-ibeacon -app-development-with-corelocation-on-apple-ios-7-8)过度使用它们,并声明他们对它进行了编辑以便与iOS 8一起使用,所以也许它会有所帮助? – 2014-10-10 19:41:47
你是否设置了对locationManager的强引用,类似'@property(nonatomic,strong)CLLocationManager * locationManager;'? – 2014-10-10 18:36:48
不,但在全球范围内在.h文件中声明它。包含的类很强大,在appDelegate中定义。所有其他回调工作正常,只是这一个。 – 2014-10-10 19:16:36