ios 定位权限获取


- (void)initCLLocationManager
{
    //定位服务是否可用
    BOOL enable=[CLLocationManager locationServicesEnabled];
    //是否具有定位权限
    int status=[CLLocationManager authorizationStatus];
    if(!enable || status<3)
    {
        //请求权限
        if ([[UIDevice currentDevice].systemVersion floatValue] >= 8)
        {
            //由于IOS8中定位的授权机制改变 需要进行手动授权
            CLLocationManager  *locationManager = [[CLLocationManager alloc] init];
            //获取授权认证
            [locationManager requestAlwaysAuthorization];
            [locationManager requestWhenInUseAuthorization];
        }
        
        UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:nil
                                                            message:@"无法定位到您所在的城市,请前去开启GPS定位"
                                                           delegate:self
                                                  cancelButtonTitle:nil
                                                  otherButtonTitles:@"取消",@"去设置", nil];
        alertView.tag = 1000;
        [alertView show];
        
    }
}

#pragma mark -- UIAlertViewDelegate

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    if (buttonIndex == 0)
    {
        
    }
    
    else
    {
        [self jumpSetting];
    }

}

- (void)jumpSetting
{
    //打开设置页面,去设置定位
    NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
    if ([[UIApplication sharedApplication] canOpenURL:url])
    {
        [[UIApplication sharedApplication] openURL:url];
        
    }
}

当去设置页面去设置允许获取定位功能时,奔溃问题修改


info.plist中,

NSLocationWhenInUseUsageDescription ,允许在前台使用时获取GPS的描述

NSLocationAlwaysUsageDescription ,允许永久使用GPS的描述


这两个必须是String类型,不能是BOOL

修改后需要卸载重装app


跳转到设置页面去


typedef NS_ENUM(int, CLAuthorizationStatus) {
    // 用户从未选择过权限
    kCLAuthorizationStatusNotDetermined = 0,
    // 无法使用定位服务,该状态用户无法改变
    kCLAuthorizationStatusRestricted,
    // 用户拒绝该应用使用定位服务,或是定位服务总开关处于关闭状态
    kCLAuthorizationStatusDenied,
    // 这个值已弃用
    kCLAuthorizationStatusAuthorized // 大致是用户允许该程序无论何时都可以使用地理信息
    kCLAuthorizationStatusAuthorizedAlways // 大致是用户同意程序在可见时使用地理位置
    kCLAuthorizationStatusAuthorizedWhenInUse 
};


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值