iOS开发之App如何跳转到系统设置界面

在 iOS开发中有时候会遇到这样一个需求,当 APP 中需要获取使用相机/相册等系统的权限时,而用户第一次却没有授权,当用户再次进入时,我们则需要提示用户去开启权限,并且直接跳到系统的设置界面授权。

方法有2种
一、直接在跳转按钮的点击事件方法中添加如下代码

NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
if ([[UIApplication sharedApplication] canOpenURL:url]) {
    [[UIApplication sharedApplication] openURL:url];
}

注意:这里可能会出现以下警告,图1是 iOS9出现的,图2是 iOS10出现的
图1
图1
图2
这里写图片描述
造成这种情况一般是在错的线程中执行了某些操作,解决办法是采用延时机制

dispatch_after(0.2, dispatch_get_main_queue(), ^{
    NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
    if ([[UIApplication sharedApplication] canOpenURL:url]) {
        [[UIApplication sharedApplication] openURL:url];
    }
});

二、
1.先在跳转按钮的点击事件方法中添加如下代码,iOS10之后有变化,所以要添加一个判断

NSURL *url = [NSURL URLWithString:@"App-Prefs:root=WIFI"];
if ([[UIApplication sharedApplication] canOpenURL:url]){
    if ([[UIDevice currentDevice].systemVersion doubleValue] >= 10.0) {
        [[UIApplication sharedApplication] openURL:url options:@{} completionHandler:nil];
    }else{
        [[UIApplication sharedApplication] openURL:url];
    }
}

2.然后在项目中的info.plist中添加 URL types 并设置一项URL Schemes为prefs,如下图:

这里写图片描述

注意:String 字段那里@”App-Prefs:root=WIFI”,iOS10以下的版本可以不加“ App-”,但 iOS10以上的版本要加,不然跳转不了。

这里演示的是跳转至系统的 WIFI 界面,当然你也可以修改字符串,跳到相应的设置界面

@"App-prefs:root=WIFI" //打开WiFi
@"App-prefs:root=Bluetooth" //打开蓝牙设置页 
@"App-prefs:root=AIRPLANE_MODE" //打开飞行模式
@"App-prefs:root=MOBILE_DATA_SETTINGS_ID" //蜂窝移动网络
@"App-prefs:root=INTERNET_TETHERING" //个人热点
@"App-prefs:root=NOTIFICATIONS_ID" //通知设置
@"App-prefs:root=General" //通用
@"App-prefs:root=General&path=About" //通用-关于本机      
@"App-prefs:root=DISPLAY&BRIGHTNESS" //显示与亮度
@"App-prefs:root=Wallpaper" //墙纸
@"App-prefs:root=Sounds" //声音
@"App-prefs:root=Privacy" //隐私
@"App-prefs:root=STORE" //存储
@"App-prefs:root=NOTES" //备忘录
@"App-prefs:root=SAFARI" //Safari
@"App-prefs:root=MUSIC" //音乐
@"App-prefs:root=Photos" //照片与相机
@"App-prefs:root=CASTLE" //iCloud
@"App-prefs:root=FACETIME" //FaceTime
@"App-prefs:root=LOCATION_SERVICES" //定位服务
@"App-prefs:root=Phone" //电话
//通用下常用字段
@"prefs:root=General&path=About" //关于本机
@"prefs:root=General&path=SOFTWARE_UPDATE_LINK" //软件更新
@"prefs:root=General&path=DATE_AND_TIME" //日期和时间
@"prefs:root=General&path=ACCESSIBILITY" //辅助功能
@"prefs:root=General&path=Keyboard" //键盘
@"prefs:root=General&path=VPN" //VPN设置
@"prefs:root=General&path=AUTOLOCK" //自动锁屏
@"prefs:root=General&path=INTERNATIONAL" //语言与地区
@"prefs:root=General&path=ManagedConfigurationList" //描述文件
//隐私下常用字段
@"prefs:root=Privacy&path=CAMERA" //设置相机使用权限
@"prefs:root=Privacy&path=PHOTOS" //设置照片使用权限
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值