大佬教程收集整理的这篇文章主要介绍了ios – CLLocationManager requestStateForRegion,“When In Use”位置访问错误代码4,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
[LOCATIOnManager requestAlwaysAuthorization]; CLBeaconRegion * region = [self regionFromUUID:uuid]; [LOCATIOnManager startMonitoringForRegion:region];
为了确定设备是在区域内还是在区域外:
- (void)LOCATIOnManager:(CLLOCATIOnManager *)manager didStartMonitoringForRegion:(CLRegion *)region { [LOCATIOnManager requestStateForRegion:region]; }
这成功召唤:
- (void)LOCATIOnManager:(CLLOCATIOnManager *)manager didDetermineState:(CLRegionStatE)state forRegion:(CLRegion *)region { if (state == CLRegionStateInsidE) { [LOCATIOnManager startRangingBeaconsInRegion:(CLBeaconRegion*)region]; } else { [LOCATIOnManager stopRangingBeaconsInRegion:(CLBeaconRegion*)region]; } }
应用程序已成功通过LOCATIOnManager:didRangeBeacons:inRegion:.
我遇到的问题是使用requestWhenInUseAuthorization.在LOCATIOnManager:didStartMonitoringForRegion:调用[LOCATIOn requestStateForRegion:region]之后,委托方法LOCATIOnManager:monitoringDidFailForRegion:withError:返回错误代码4:“操作无法完成”.
使用startRangingBeaconsInRegion交换requestStateForRegion似乎绕过了这个错误并且成功调用了LOCATIOnManager:didRangeBeacons:inRegion:.
这是[LOCATIOnManager requestStateForRegion:region]的已知问题;如果仅授予kCLAuthorizationStatusAuthorizedWhenInUse,将导致错误代码4?
我认为kCLAuthorizationStatusAuthorized(在iOS 8中已弃用)将包括kCLAuthorizationStatusAuthorizedAlways和kCLAuthorizationStatusAuthorizedWhenInUse,因为它们都是特殊类型的“授权”.
感谢@heypiotr,我决定实际查看Apple Docs Declaration并注意到enum声明了以下内容:
kCLAuthorizationStatusAuthorized,kCLAuthorizationStatusAuthorizedAlways = kCLAuthorizationStatusAuthorized,kCLAuthorizationStatusAuthorizedWhenInUse
因此,requestStateForRegion需要kCLAuthorizationStatusAuthorizedAlways,因为这是唯一与kCLAuthorizationStatusAuthorized相同的值,并且根据Apple,只有kCLAuthorizationStatusAuthorized将用于监视.
以上是大佬教程为你收集整理的ios – CLLocationManager requestStateForRegion,“When In Use”位置访问错误代码4全部内容,希望文章能够帮你解决ios – CLLocationManager requestStateForRegion,“When In Use”位置访问错误代码4所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。