iOS开发 - 如何跳到系统设置里的各种设置界面
在iOS开发中,有时会有跳转系统设置界面的需求,例如提示用户打开蓝牙或者WIFI,提醒用户打开推送或者位置权限等。在iOS6之后,第三方应用需要跳转系统设置界面,需要在URL type中添加一个prefs值,如下图:
需要设置prefs
设置跳转有三种方式,每一种的使用场景都不同。 并且你在跳转到系统中自己应用下面设置的时候,你的应用要提前至少申请了某一个权限,如通知,定位等。否则,会引起崩溃。
- 方式一:
prefs:root=某项服务 - 方式二:
prefs:root=bundleID - 方式三:
UIApplicationOpenSettingsURLString
本篇针对iOS7、iOS8、iOS9、iOS10,来介绍其中区别。
一、跳转方法
iOS系统版本 < 10.0
- NSURL *url= [NSURL URLWithString:@"prefs:root=LOCATION_SERVICES"];
- if( [[UIApplication sharedApplication]canOpenURL:url] ) {
- [[UIApplication sharedApplication]openURL:url];
- }
iOS系统版本 >= 10.0
- if( [[UIApplication sharedApplication]canOpenURL:url] ) {
- [[UIApplication sharedApplication]openURL:url options:@{}completionHandler:^(BOOL success) {
- }];
- }
可以看出,跳转方法非常简单。本文重点讲解url 怎么设置
二、跳转到哪里去?(系统的设置,系统中自己应用下面的设置)
方式一:
iOS系统版本 <= iOS7 , 只能跳转到 系统设置页面
NSURL *url= [NSURL URLWithString:@"prefs:root=LOCATION_SERVICES"];跳转到: 隐私-定位服务。
prefs:root=某项服务- 系统设置:prefs:root=INTERNET_TETHERING
- WIFI设置:prefs:root=WIFI
- 蓝牙设置:prefs:root=Bluetooth
- 系统通知:prefs:root=NOTIFICATIONS_ID
- 通用设置:prefs:root=General
- 显示设置:prefs:root=DISPLAY&BRIGHTNESS
- 壁纸设置:prefs:root=Wallpaper
- 声音设置:prefs:root=Sounds
- 隐私设置:prefs:root=privacy
- 蜂窝网路:prefs:root=MOBILE_DATA_SETTINGS_ID
- 音乐:prefs:root=MUSIC
- APP Store:prefs:root=STORE
- Notes:prefs:root=NOTES
- Safari:prefs:root=Safari
- Music:prefs:root=MUSIC
- photo":prefs:root=Photos
这种跳转方式,都是跳转到系统的设置界面。
方式二 :
iOS系统版本 >= iOS8 ,支持跳转到第三方应用的设置界面中
使用prefs:root=bundleID ,bundleID是你第三方应用工程的唯一ID
局限性:只支持iOS8,iOS9系统,在iOS10系统上,不会跳转。 在iOS7系统上,仅仅只是跳转到设置应用,不推荐使用。如果需要继续向项目内层进行跳转,可以通过添加path路径的方式,如下:
- 关于本机:prefs:root=General&path=About
- 软件升级:prefs:root=General&path=SOFTWARE_UPDATE_LINK
- 日期时间:prefs:root=General&path=DATE_AND_TIME
- Accessibility:prefs:root=General&path=ACCESSIBILITY
- 键盘设置:prefs:root=General&path=Keyboard
- VPN:prefs:root=General&path=VPN
- 壁纸设置:@"prefs:root=Wallpaper
- 声音设置:prefs:root=Sounds
- 隐私设置:prefs:root=privacy
- APP Store:prefs:root=STORE
- 还原设置:prefs:root=General&path=Reset
- 应用通知:prefs:root=NOTIFICATIONS_ID&path=应用的boundleId
更多参数字段自己查询
方式三
iOS系统版本 >= iOS10,支持跳转到自己应用设置,不支持跳转到系统设置
NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];UIApplicationOpenSettingsURLString字段,是在iOS8上才提供的,支持iOS8,iOS9,iOS10系统,推荐使用。
iOS系统版本>= iOS10,支持跳转到自己应用设置,不支持跳转到系统设置
只认NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];跳转。
而prefs:root=bundleID和prefs:root=服务都将不起作用。
总结一下:
- 方式一:
prefs:root=某项服务适用于
小于 iOS10的系统; - 方式二:
prefs:root=bundleID适用于
大于等于iOS8系统,小于iOS10的系统 - 方式三:
UIApplicationOpenSettingsURLString适用于
大于等于iOS8的系统
iOS开发 - 如何跳到系统设置里的各种设置界面的更多相关文章
- iOS开发之如何跳到系统设置里的各种设置界面
跳到更多设置界面 除了跳到WiFi设置界面,能不能跳到其他的设置界面呢?比如:定位服务.FaceTime.音乐等等.都是可以的,一起来看看如何实现的! 定位服务 定位服务有很多APP都有,如果用户关闭 ...
- OC如何跳到系统设置里的各种设置界面
当 iOS系统版本 <= iOS7时 , 只能跳转到 系统设置页面 ,楼主试了下,非真机是没有任何效果的 当iOS系统版本 < iOS 10.0 时 NSURL *url= [NSURL ...
- iOS如何跳到系统设置里的各种设置界面
最近项目需要授权时候跳转到相关的设置页面,自己总结了一下,想写到简书上来,和大家分享一下. 在本人测试后,iOS8和9都没有问题,直接跳转到各个页面,这可能苹果对这方面开放了吧.第一步修改plist文 ...
- iOS开发UI篇—模仿ipad版QQ空间登录界面
iOS开发UI篇—模仿ipad版QQ空间登录界面 一.实现和步骤 1.一般ipad项目在命名的时候可以加一个HD,标明为高清版 2.设置项目的文件结构,分为home和login两个部分 3.登陆界面的 ...
- iOS开发之静态库(五)—— 图片、界面xib等资源文件封装到静态框架framework
编译环境:Macbook Air + OS X 10.9.2 + XCode5.1 + iPhone5s(iOS7.0.3) 一.首先将资源文件打包成bundle 由于bundle是静态的,所以可以将 ...
- iOS应用内跳转系统设置相关界面的方法
在iOS开发中,有时会有跳转系统设置界面的需求,例如提示用户打开蓝牙或者WIFI,提醒用户打开推送或者位置权限等.在iOS6之后,第三方应用需要跳转系统设置界面,需要在URL type中添加一个pre ...
- 【iOS开发-22】navigationBar导航条和navigationItem设置:基本搞定导航条上的文字和按钮以及各种跳转
http://blog.csdn.net/weisubao/article/details/39646739?utm_source=tuicool&utm_medium=referral (1 ...
- ios开发之--跳转到指定的TabBarViewController中的某一个VIewController
比较简单,也很实用,方法大同小异,仅做记录,方法的系统记录如下: [self dismissViewControllerAnimated:YES completion:^{ // 这是从一个模态出来的 ...
- iOS开发上架之itunes connect里app信息的编辑
sku用于我们在后台识别自己的app,所以随你怎么填写
随机推荐
- js 快速排序
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- ios 之 autoresizing小解
对于IOS的app开发人员来说,不会像Android开发人员一样为非常多的屏幕尺寸来做界面适配,因此硬编码的坐标也能工作良好,可是从设计模式上来说这不是好的做法. 并且也另一些问题,如iPhone5的 ...
- TCP/IP协议(数据封装与拆装过程)
IP地址 = 网络地址+主机地址 = 网络地址 + 子网地址 + 主机地址 应用进程之间的通信被称之为端到端的通信. 传输层与网络层之间的区别:传输层为应用进程间提供了端到端的逻辑通信:网络层提 ...
- Javascript模式(二) 发布者/订阅者模式
var publisher = { // 订阅者数组 subscribers : { "any" : [] }, // 增加订阅者 on : function(type, fn, ...
- chm文件打不开的解决办法
我今天在网上找了找C++函数库,下载下来一个 .chm 文件,打开之后发现只显示了目录,内容却显示不出来. 显示是这样:右边区域显示不出来. 在网上查了一下发现CHM文件是网上比较多的电子书籍显示格式 ...
- android 怎样单独下载一个项目
起因,"网络"不太好."比方铁通的就是不如联通的" 每次运行一边repo sync,十分蛋疼,假设不做full build无需所有下载,着急看某个项目的修改但是 ...
- hdu5386(暴力)
题意: 给出两个n*n的矩阵,一个作为初始矩阵.一个作为目标矩阵,给出m个操作,操作有两种,一种是"L,x,y".代表我们要把x这一行赋成y,还有一种是"H,x,y&qu ...
- java Map 实现类的对比
java为数据结构中的映射定义了一个接口 java.util.Map ,他有四个实现类
- sqlserver中的时间比较
例子: select count(*) from table where DATEDIFF ([second], '2004-09-18 00:00:18', '2004-09-18 00:00:19 ...
- cacti 主机/网络设备流量监控 图解
1.在配置中找到设备 console —> Device 2.初次添加 cacti 监控主机的时候是没有任何设备的,所以要选择add 添加你要监控的主机 \