设置跳转有三种方式,每一种的使用场景都不同。 并且你在写Demo测试跳转到系统中自己应用下面设置的时候,你的应用要提前至少申请了某一个权限,如(通知,定位等)。否则,会引起崩溃。
方式一:prefs:root=某项服务
方式二:prefs:root=bundleID
方式三: UIApplicationOpenSettingsURLString
本篇针对iOS7、iOS8、iOS9、iOS10,来介绍其中区别。
一、跳转方法
iOS系统版本 < 10.0
if( [[UIApplicationsharedApplication]canOpenURL:url] ) {
[[UIApplicationsharedApplication]openURL:url];
}
iOS系统版本 >= 10.0
if( [[UIApplicationsharedApplication]canOpenURL:url] ) {
[[UIApplicationsharedApplication]openURL:url options:@{}completionHandler:^(BOOL success) {
}];
}
可以看出,跳转方法非常简单。本文重点讲解url 怎么设置
二、跳转到哪里去?(系统的设置,系统中自己应用下面的设置)
version <= iOS7 , 只能跳转到 系统设置页面
NSURL *url= [NSURL URLWithString:@"prefs:root=LOCATION_SERVICES"];
跳转到: 隐私-定位服务。
方式一:prefs:root=某项服务
蜂窝网路:prefs:root=MOBILE_DATA_SETTINGS_ID
Wi-Fi: prefs:root=WIFI
音乐:prefs:root=MUSIC
这种跳转方式,都是跳转到系统的设置界面。
version >= iOS8,支持跳转到自己应用设置
方式二 : prefs:root=bundleID ,bundleID是你工程的唯一ID
局限性:只支持iOS8,iOS9系统,在iOS10系统上,不会跳转。 在iOS7系统上,仅仅只是跳转到设置应用,不推荐使用。
方式三:
NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
UIApplicationOpenSettingsURLString字段,是在iOS8上才提供的,支持iOS8,iOS9,iOS10系统,推荐使用。
version >= iOS10,支持跳转到自己应用设置,不支持跳转到系统设置
只认 NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString]; 跳转。
而 prefs:root=bundleID 和 prefs:root=服务 都将不起作用。
总结一下:
方式一:prefs:root=某项服务 适用于 小于 iOS10的系统;
方式二:prefs:root=bundleID 适用于 大于等于iOS8系统,小于iOS10的系统
方式三,UIApplicationOpenSettingsURLString 适用于 大于等于iOS8的系统
网友评论
if ([[[UIDevice currentDevice]systemVersion]floatValue] >= 8) {
UIUserNotificationSettings *notificationSettings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound categories:nil];
[[UIApplication sharedApplication] registerUserNotificationSettings:notificationSettings];
}
else {
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound];
}
第二步:在viewDidLoad里新建一个按钮,关联btnClicked方法
第三部:在方法中写跳转代码
-(void)btnClicked
{
NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
if([[UIApplication sharedApplication]canOpenURL:url]){
[[UIApplication sharedApplication]openURL:url options:@{} completionHandler:^(BOOL success) {
}];
}
}
测试环境 iOS10 + Xcode8.0
NSURL *url= [NSURL URLWithString:@"prefs:root=WIFI"];
if([[UIApplication sharedApplication]canOpenURL:url]){
[[UIApplication sharedApplication]openURL:url options:@{} completionHandler:^(BOOL success) {
}];
}
}];
第二个参数 options 是干什么的啊? 字典里都可以写一些什么啊?