iOS开发中跳到系统设置里的各种设置界面如何实现
程序员文章站
2022-05-27 09:02:32
ios开发中跳到设置里的各种设置界面如何实现。在ios开发中,有时会有跳转系统设置界面的需求,例如提示用户打开蓝牙或者wifi,提醒用户打开推送或者位置权限等。在ios6之后,第三方应用需要跳转系统...
ios开发中跳到设置里的各种设置界面如何实现。在ios开发中,有时会有跳转系统设置界面的需求,例如提示用户打开蓝牙或者wifi,提醒用户打开推送或者位置权限等。在ios6之后,第三方应用需要跳转系统设置界面,需要在url type中添加一个prefs值,如下图:
需要设置prefs
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的系统。