文档章节

iOS跳转系统功能设置页面

zh_iOS
 zh_iOS
发布于 2016/11/08 21:03
字数 991
阅读 94
收藏 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
粉丝 26
博文 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
Vue开发微信H5 微信分享签名失败问题解决方案

关于Vue中路由使用history模式,开发微信H5页面分享时在安卓上签名有效成功,但是在IOS设备上一直报错签名失效问题 问题描述:在Vue开发过程中,路由使用History模式下,在使用微信分享时,在...

golddemon
08/08
0
0
react native 集成人脸识别 --ios

上一篇介绍了 android 端的集成 这篇介绍下ios的集成. 整体思路和android类似:ios原生这边集成sdk后,写个ios和RN的交互类,暴露给RN ,RN再调用 跳转人脸识别页。成功,或失败 内部sdk中有...

JsLin_
07/24
0
0
iOS与JS交互之WKWebView-协议拦截

级别:★★☆☆☆ 标签:「iOS与JS交互」「WKWebView与JS交互」「WKWebView拦截协议」 作者: Xs·H 审校: QiShare团队 先解释下标题:“iOS与JS交互”。iOS指原生代码(文章只有示例),J...

QiShare
09/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Mac OS X下Maven的安装与配置

Mac OS X 安装Maven: 下载 Maven, 并解压到某个目录。例如/Users/robbie/apache-maven-3.3.3 打开Terminal,输入以下命令,设置Maven classpath $ vi ~/.bash_profile 添加下列两行代码,之后...

TonyStarkSir
今天
3
0
关于编程,你的练习是不是有效的?

最近由于工作及Solution项目的影响,我在重新学习DDD和领域建模的一些知识。然后,我突然就想到了这个问题,以及我是怎么做的? 对于我来说,提升技能的项目会有四种: 纯兴趣驱动的项目。即...

问题终结者
今天
4
0
打开eclipse出现an error has occurred see the log file

解决方法: 1,打开eclipse安装目录下的eclipse.ini文件; 2,打开的文本文件最后添加一行 --add-modules=ALL-SYSTEM 3,保存重新打开Eclipse。...

任梁荣
昨天
4
0
搞定Northwind示例数据库,无论哪个版本的SQLServer都受用

Northwind数据库 从这里可以找到突破口: http://social.msdn.microsoft.com/Forums/zh-CN/Vsexpressvb/thread/8490a1c6-9018-40c9-aafb-df9f79d29cde 下面是MSDN: http://msdn2.microsoft......

QQZZFT
昨天
1
0
mysql主从同步,安装配置操作

准备 两台mysql服务,我这里准备了如下: 主库:192.168.176.128 从库:192.168.176.131 如何在Linux上安装mysql服务,请看https://blog.csdn.net/qq_18860653/article/details/80250499 操作...

小致dad
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部