文档章节

iOS跳转系统功能设置页面

zh_iOS
 zh_iOS
发布于 2016/11/08 21:03
字数 991
阅读 108
收藏 0
iOS

跳转当前app功能权限设置页面

  在App内部,通常我们会请求用户开启通知,定位,访问通讯录等权限. 如果用户拒绝了可能会导致我们的App相应的功能受到影响 .这时, 我们可以弹出一个alert或者文字提示. 告诉用户开启相关权限,用户点击确定后,直接跳转到权限设置页面,以便更好的使用app的功能 . 这里就拿 App的通知功能举例 .

   为了方便用户打开应用的通知权限,最好直接跳转到当前app申请的功能权限界面,如下图:

 

这这个界面 我们可以直接打开或者关闭 app 相应的功能权限 .. 代码实现如下 :

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
    if (buttonIndex == 0) {
       // 跳转到app权限设置功能页面
        NSURL *url = [NSURL URLWithString:@"prefs:root=你的app的BundleId"];
        if ([[UIApplication sharedApplication] canOpenURL:url])
        {
            [[UIApplication sharedApplication] openURL:url];
        }
    }
    if (buttonIndex == 1) {
    }
}

需要注意 在iOS6以后 三方应用需要跳转系统设置界面,需要在URL type中添加一个prefs值,如下图:

以上是直接打开当前app的功能权限页面,也是功能设置里最常用的 . 

跳转系统功能设置页面

1.定位功能 

   //定位服务设置界面

    NSURL *url = [NSURL URLWithString:@"prefs:root=LOCATION_SERVICES"];

    if ([[UIApplication sharedApplication] canOpenURL:url])
    {
        [[UIApplication sharedApplication] openURL:url];
    }

2.通知设置页面 


    NSURL *url = [NSURL URLWithString:@"prefs:prefs:root=NOTIFICATIONS_ID"];

    if ([[UIApplication sharedApplication] canOpenURL:url])
    {
        [[UIApplication sharedApplication] openURL:url];
    }

 .......其他功能的设置类似,只需修改参数配置即可:

参数配置 首先设置一个跳转的URL,URL里面有需要跳转页面的设置字符串@prefs:root=XXX,想跳到哪个设置界面只需要prefs:root=后面的值即可

以下是各个设置功能的参数配置:

Wi-Fi — prefs:root=WIFI
Bluetooth — prefs:root=General&path=Bluetooth
FaceTime — prefs:root=FACETIME
General — prefs:root=General
Safari — prefs:root=Safari
Keyboard — prefs:root=General&path=Keyboard
About — prefs:root=General&path=About
Accessibility — prefs:root=General&path=ACCESSIBILITY
Airplane Mode On — prefs:root=AIRPLANE_MODE
Auto-Lock — prefs:root=General&path=AUTOLOCK
Brightness — prefs:root=Brightness
Date & Time — prefs:root=General&path=DATE_AND_TIME
iCloud — prefs:root=CASTLE
iCloud Storage & Backup — prefs:root=CASTLE&path=STORAGE_AND_BACKUP
International — prefs:root=General&path=INTERNATIONAL
Location Services — prefs:root=LOCATION_SERVICES
Music — prefs:root=MUSIC
Music Equalizer — prefs:root=MUSIC&path=EQ
Music Volume Limit — prefs:root=MUSIC&path=VolumeLimit
Network — prefs:root=General&path=Network
Nike + iPod — prefs:root=NIKE_PLUS_IPOD
Notes — prefs:root=NOTES
Notification — prefs:root=NOTIFICATIONS_ID
Phone — prefs:root=Phone
Photos — prefs:root=Photos
Profile — prefs:root=General&path=ManagedConfigurationList
Reset — prefs:root=General&path=Reset
Siri — prefs:root=General&path=Assistant
Sounds — prefs:root=Sounds
Software Update — prefs:root=General&path=SOFTWARE_UPDATE_LINK
Store — prefs:root=STORE
Twitter — prefs:root=TWITTER
Usage — prefs:root=General&path=USAGE
VPN — prefs:root=General&path=Network/VPN
Wallpaper — prefs:root=Wallpaper

跳转到通知功能设置截图如下:

这里可以对所有安装的app进行通知权限的操作.

--------------------------------------------------------------

--------------------------------------------------------------

2018/07.05 更新:

通过prefs跳转的方式在iOS10以后不能用了,会报

-canOpenURL: failed for URL: "prefs:prefs:root=NOTIFICATIONS_ID" - error: "The operation couldn’t be completed. (OSStatus error -10814.)"

这个错误 。

需要将 prefs 改为 App-Prefs才行 。如 : 

// 跳转到通知

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:NSStringFormat(@"App-Prefs:root=%@",@"NOTIFICATIONS_ID")]];

在iOS 8 之后系统提供了  UIApplicationOpenSettingsURLString 这个key  。通过

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

这个方法可以方便的跳转到当前App的权限设置页面 。

跳转到权限页面的场景一般都是:我们申请了权限但是用户没有同意,点击提示后跳转页面 。为了让用户方便打开权限,所以直接跳转到当前App申请的权限页面即可 。其他有特殊需要可以参考上面的跳转到对应权限页面 。

© 著作权归作者所有

共有 人打赏支持
zh_iOS
粉丝 27
博文 74
码字总数 34182
作品 0
石景山
程序员
私信 提问
加载中

评论(1)

小码爱大牛
小码爱大牛
你好,我是深圳一家以家居安防为核心的智能家居公司的HR在招聘一位会ffmpeg的Android开发工程师和一位iOS开工程师。不知道您自己或者身边同事朋友有没有在看工作机会的呢?如果感兴趣可以发简历到3288771685@qq.com或者加起QQ。
RN与原生交互(一)——基本页面跳转

React Native(以下简称RN)开发app过程中大部分都可以在JS端完成,但是也有一些功能是需要原生端来完成的。这时RN与原生端就不可避免的需要进行交互,比如页面跳转和数据传递。本篇文章主要以...

不變旋律
06/13
0
0
React Navigation

https://reactnavigation.org/docs/intro/nesting 官网 http://blog.csdn.net/u013718120/article/details/72357698 http://www.jianshu.com/p/2f575cc35780 这里只是基本用法,高级详情用法......

Chason-洪
2017/11/15
0
0
iOS检测是否开启定位、是否允许消息通知

iOS 判断是否开启定位 iOS 判断是否允许消息通知 iOS 跳转系统设置打开定位页面

Virgo_only
2016/08/26
33
0
开发者福利:iOS开发学习资源、解决方案大放送

百度iOS入门教程http://wenku.baidu.com/course/view/1ce3571252d380eb62946d8c M了个J博客 http://www.cnblogs.com/mjios/tag/objective-c/ iOS应用源码保护:http://www.ijiami.cn/ios Co......

拉偶有所依
2014/12/09
797
9
ReactNative IOS模块

[背景] 目前已经开发好相同功能的android版本,本人不会ios开发,无从下手 [需求] 1、语音录制模块 功能需求:语音(开始、停止、试听)、压缩后上传到指定服务器 接收标准: a、IOS端原生模...

孟凯
2016/05/22
1
0

没有更多内容

加载失败,请刷新页面

加载更多

微服务分布式事务实现

https://www.processon.com/view/link/5b2144d7e4b001a14d3d2d30

WALK_MAN
今天
2
0
《大漠烟尘》读书笔记及读后感文章3700字

《大漠烟尘》读书笔记及读后感文章3700字: 在这个浮躁的社会里,你有多久没有好好读完一本书了? 我们总觉得自己和别人不一样,所以当看到别人身上的问题时,很少有“反求诸己”,反思自己。...

原创小博客
今天
3
0
大数据教程(9.5)用MR实现sql中的jion逻辑

上一篇博客讲解了使用jar -jar的方式来运行提交MR程序,以及通过修改YarnRunner的源码来实现MR的windows开发环境提交到集群的方式。本篇博主将分享sql中常见的join操作。 一、需求 订单数据表...

em_aaron
今天
3
0
十万个为什么之什么是resultful规范

起源 越来越多的人开始意识到,网站即软件,而且是一种新型的软件。这种"互联网软件"采用客户端/服务器模式,建立在分布式体系上,通过互联网通信,具有高延时(high latency)、高并发等特点...

尾生
今天
3
0
Terraform配置文件(Terraform configuration)

Terraform配置文件 翻译自Terraform Configuration Terraform用文本文件来描述设备、设置变量。这些文件被称为Terraform配置文件,以.tf结尾。这一部分将讲述Terraform配置文件的加载与格式。...

buddie
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部