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,所以随你怎么填写
随机推荐
- winform程序公布后,client下载报错“您的 Web 浏览器设置不同意执行未签名的应用程序”
如题 在winserver2008服务器上操作会报错.解决的方法: IE→Internet选项→安全→可信网站,加入信任公布的IP地址
- VueJS构造器:new Vue({})
构造器 每个 Vue.js 应用都是通过构造函数 Vue 创建一个 Vue 的根实例来启动的: var vm = new Vue({ // 选项 }) 属性与方法 每个 Vue 实例都会代理其 dat ...
- Atom 编辑器使用和学习
事先准备:下载 Github 开源文本编辑器 Atom,并安装Atom 官网 | 搜索 “Atom下载” 常用快捷键:http://blog.csdn.net/hunyxv/article/detai ...
- 取出所有的Map集合
public static void main(String[] args) { Map<Integer, String> map = new HashMap<Integer, St ...
- IDEA------Error:java:无效的目标发行版:1/7
© 版权声明:本文为博主原创文章,转载请注明出处 使用IDEA发布java web项目时,报错.报错信息如下: 解决方案: 方案一:File-->Settings-->Build,Exec ...
- HTML5 手机网页制作笔记
http://top.css88.com/archives/546 http://www.w3cfuns.com/blog-5470280-5406828.html 最近在卓手机网页,第一次入手.把要 ...
- Linux XMind
XMind这个软件好像不错的样子,至少在Windows/Linux/Mac下都可以工作,作为FreeMind的替代品应该是没什么问题(还有一个vym貌似也可以,可能没有XMind好,毕竟XMind有公 ...
- 基于RedHat发行的Apache Tomcat本地提权漏洞
描述 Tomcat最近总想搞一些大新闻,一个月都没到,Tomcat又爆出漏洞.2016年10月11日,网上爆出Tomcat本地提权漏洞,漏洞编号为CVE-2016-5425.此次受到影响的主要是基于R ...
- 08 redis中hash结构及命令详解
Hash 哈希数据类型相关命令 hset key field value 作用: 把key中 filed域的值设为value 注:如果没有field域,直接添加,如果有,则覆盖原field域的值 hm ...
- 在ios开发中使用 try 和 catch 来捕获错误。
本文转载至 http://blog.csdn.net/remote_roamer/article/details/7105776 抛出错误的代码 //如果返回的报文是错误信息,则抛出错误 if([ou ...