欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

iOS开发中跳到系统设置里的各种设置界面如何实现

程序员文章站 2023-02-02 10:06:46
ios开发中跳到设置里的各种设置界面如何实现。在ios开发中,有时会有跳转系统设置界面的需求,例如提示用户打开蓝牙或者wifi,提醒用户打开推送或者位置权限等。在ios6之后,第三方应用需要跳转系统...

ios开发中跳到设置里的各种设置界面如何实现。在ios开发中,有时会有跳转系统设置界面的需求,例如提示用户打开蓝牙或者wifi,提醒用户打开推送或者位置权限等。在ios6之后,第三方应用需要跳转系统设置界面,需要在url type中添加一个prefs值,如下图:
需要设置prefs

iOS开发中跳到系统设置里的各种设置界面如何实现
qjifmvb.png!web.png

设置跳转有三种方式,每一种的使用场景都不同。 并且你在跳转到系统中自己应用下面设置的时候,你的应用要提前至少申请了某一个权限,如通知,定位等。否则,会引起崩溃。

方式一: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的系统。