Rya*_*ols 8 macos cocoa core-location
我正在编写一个需要使用CoreLocation服务的Mac App.只要我在安全首选项窗格中手动验证服务,代码和位置就可以正常工作.但是,框架不会自动弹出权限对话框.文件说明:
重要信息用户可以选择拒绝应用程序访问位置服务数据.在应用程序初次使用期间,Core Location框架会提示用户确认使用位置服务是可以接受的.如果用户拒绝该请求,则CLLocationManager对象会在将来的请求期间向其委托报告相应的错误.
我确实得到了我的委托的错误,并且+ locationServicesEnabled的值在CLLocationManager上是正确的.缺少的唯一部分是向用户提示有关权限的提示.这发生在我的开发MPB和朋友MBP上.我们俩都不知道什么是错的.
有没有人碰到这个?
相关代码:
_locationManager = [CLLocationManager new];
[_locationManager setDelegate:self];
[_locationManager setDesiredAccuracy:kCLLocationAccuracyKilometer];
...
[_locationManager startUpdatingLocation];
Run Code Online (Sandbox Code Playgroud)
我发现在 Mac 上,当您通过调用启动位置服务时
[locationManager startUpdatingLocation];
Run Code Online (Sandbox Code Playgroud)
它触发
- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status
Run Code Online (Sandbox Code Playgroud)
状态为
kCLAuthorizationStatusNotDetermined
Run Code Online (Sandbox Code Playgroud)
如果您观察此状态,然后再次开始更新位置,它会触发权限对话框:例如
- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status
{
switch (status) {
case kCLAuthorizationStatusAuthorized:
NSLog(@"Location Services are now Authorised");
[_locationManager startUpdatingLocation];
break;
case kCLAuthorizationStatusDenied:
NSLog(@"Location Services are now Denied");
break;
case kCLAuthorizationStatusNotDetermined:
NSLog(@"Location Services are now Not Determined");
// We need to triger the OS to ask the user for permission.
[_locationManager startUpdatingLocation];
[_locationManager stopUpdatingLocation];
break;
case kCLAuthorizationStatusRestricted:
NSLog(@"Location Services are now Restricted");
break;
default:
break;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1850 次 |
| 最近记录: |