iOS开发之App如何跳转到系统设置界面
来源:互联网 发布:mac 软件安装桌面 编辑:程序博客网 时间:2024/05/19 20:39
在 iOS开发中有时候会遇到这样一个需求,当 APP 中需要获取使用相机/相册等系统的权限时,而用户第一次却没有授权,当用户再次进入时,我们则需要提示用户去开启权限,并且直接跳到系统的设置界面授权。
方法有2种
一、直接在跳转按钮的点击事件方法中添加如下代码
NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];if ([[UIApplication sharedApplication] canOpenURL:url]) { [[UIApplication sharedApplication] openURL:url];}
注意:这里可能会出现以下警告,图1是 iOS9出现的,图2是 iOS10出现的
图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
- iOS开发之App如何跳转到系统设置界面
- iOS中APP跳转到系统的各种设置界面
- iOS开发之app跳转至各系统设置界面
- iOS开发 跳转到系统对应app设置(ios8)
- iOS 跳转到系统设置界面
- iOS 跳转到系统的设置界面
- iOS 跳转到系统的设置界面
- iOS 跳转到系统的设置界面
- iOS 跳转到系统的设置界面
- iOS 跳转到系统的设置界面
- iOS 跳转到系统的设置界面
- iOS 跳转到系统的设置界面
- iOS 跳转到系统的设置界面
- iOS 跳转到系统的设置界面
- iOS 跳转到系统的设置界面
- iOS 跳转到系统的设置界面
- iOS 跳转到系统的设置界面
- iOS 跳转到系统设置界面
- Codeforecs 675E Trains and Statistic 贪心+DP
- MySQL时间格式转换
- my_demo
- Android中的文件存储问题
- 使用JAVA实现RabbitMQ的发送告警
- iOS开发之App如何跳转到系统设置界面
- 混淆过程中邂逅的坑
- 实时互联网的隐形风口
- webpack牛刀小试---创建第一个简单的项目
- stm32 DMA
- RecyclerView流式布局
- maven 笔记-工程结构
- 类文件结构
- 应用开发进阶必经之路之性能优化