在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的系统

参考链接:http://www.jianshu.com/p/767c409c50e6

iOS 10 应用内跳转到系统设置的更多相关文章

  1. >=ios8 应用内跳转到系统设置界面-openURL

    iOS8以后,苹果允许从应用内跳转到系统设置,但是调试结果表明,跳不到具体的设置项,使用前应该判断当前是否能够跳转到系统设置. 代码: NSURL *url = [NSURL URLWithStrin ...

  2. iOS 从应用中跳转至系统设置页面里的多种设置页面

    我们在开发app过程中很多时候会需要设置系统权限,这时就需要在应用中跳转至系统设置页面权限设置页面,以下是自己结合网上的资料总结的一些经验: 直接从应用中跳转至系统设置中这个应用的权限设置页面 NSU ...

  3. iOS之应用内跳转系统设置相关界面

    在iOS开发中,有时会有跳转系统设置界面的需求,例如提示用户打开蓝牙或者WIFI,提醒用户打开推送或者位置权限等.在iOS6之后,第三方应用需要跳转系统设置界面,需要在URL type中添加一个pre ...

  4. iOS 应用内跳转到系统设置

    在iOS5下面版本号使用下面方法:[IOS5.1+之后不能使用此方法.iOS8的跳转方法已找到见下方,iOS7的正在摸索,欢迎大家给出观点意见] 通过URL Scheme的方式打开内置的Setting ...

  5. iOS应用内跳转到指定系统设置页

    APP的跳转: 通过[ [UIApplication sharedApplication] openURL:url]这种方法来实现的. iOS 10以后跳转设置页要用 [[UIApplication ...

  6. iOS 10 跳转系统设置

    苦心人天不负, 为了项目终于把 iOS 10 跳转系统设置的方法给搞定了, 很欣慰. http://www.cnblogs.com/lurenq/p/6189580.html iOS 10 跳转系统设 ...

  7. iOS 10跳转到其他app

    - (BOOL)jumpsToThirdAPP:(NSString *)urlStr{ if ([urlStr hasPrefix:@"mqq"] || [urlStr hasPr ...

  8. iOS 10.3 以上系统实现应用内评分及开发者回复评论

    在 iOS 10.3 之前,如果你要给一个应用评分,那么你需要打开 App Store,搜索应用,找到评论,点击撰写评论,然后评分.整个评分流程非常繁琐,还要忍受漫长的页面加载,导致很少有用户愿意主动 ...

  9. ios跳转到系统设置

    在项目中,我们经常会碰到使用位置的需求.当用户设置app不允许使用位置的时候,最好的用户体验就是直接调转到系统的位置设置界面,进行设置. 第一 跳转到自己项目(在需要调转的按钮动作中添加如下的代码,就 ...

随机推荐

  1. 【学习】DataFrame&Series类【pandas】

    参考链接:http://blog.csdn.net/yhb315279058/article/details/50226027 DataFrame类: DataFrame有四个重要的属性: index ...

  2. 《从零玩转python+人工智能-3》120,122节课深度优先疑问解答

     深度优先(从左往右): 按照这个原则来:至于使用栈,或者队列:根据它们不同的特性:最终务必保证最终结果是原继承结构的“从左往右”:所以,如果是栈,就是右侧先入栈,左侧再入(这样左侧能先出来,遵循从左 ...

  3. sybase-sql语法-replace用法

    1.去空格 update hyl_temp02 --去空格 set acc_nbr=replace(acc_nbr,' ',''); commit; 2.去回车 update hyl_temp02 - ...

  4. 通过jquery 获取用户当前所在的城市名称和IP地址

    下面这段JS代码是通过jquery 结合新浪IP地址库和QQip地址库接口获取用户当前所在的城市(省份)名称. 用户当前IP地址等数据.其中当前IP是通过 QQip地址库接口获取,其他数据都是通过 新 ...

  5. ViewParent 和 ViewManager

    ViewGroup 继承了 View  实现了两个接口  ViewParent 和 ViewManager 接口 ViewParent:定义了成为一个View的parent的一些“职能”,当paren ...

  6. SSM商城项目(八)

    1.   学习计划 1.solr集群搭建 2.使用solrj管理solr集群 3.把搜索功能切换到集群版 4.添加商品同步到索引库 2.   什么是SolrCloud SolrCloud(solr 云 ...

  7. jq 切换功能toggle

    ---恢复内容开始--- $(document).ready(function () { $(".jianjie").click(function () { $(this).tog ...

  8. ie7ajax 跨域 no transport 解决办法

    客户端js <script src="jquery-1.8.0.min.js"></script> <script src="JavaScr ...

  9. Spring MVC请求处理流程

    从web.xml中 servlet的配置开始, 根据servlet拦截的url-parttern,来进行请求转发   Spring MVC工作流程图   图一   图二    Spring工作流程描述 ...

  10. redis、mysql、mongdb的比较

    特点: 1-1 MySQL:1. 使用c和c++编写,并使用了多种编译器进行测试,保证源代码的可移植性2. 支持多种操作系统3. 为多种编程语言提供可API4. 支持多线程,充分利用CPU资源优化的S ...