iOS 8之后应用允许内部跳转到设置界面,但是iOS10之后,只能跳转到
NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
用户第一眼看到这个界面是懵逼的。反正我是懵逼的。
所以在进行跳转之前 最好是对本级操作系统进行判断,能跳转的跳不能的话直接给用户提示就行了。
-(void)openSetting:(NSString *)url{
float system = [[UIDevice currentDevice] systemVersion].floatValue;
NSURL *URL = [NSURL URLWithString:url];
if (system < 10.0) {
if( [[UIApplication sharedApplication]canOpenURL:URL] ) {
[[UIApplication sharedApplication]openURL:URL];
}
}else{
[[UIApplication sharedApplication]openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString] options:@{}completionHandler:^(BOOL success) {
}];
}
}
然后就是这个URL的问题了:
定位:"prefs:root=LOCATION_SERVICES"
其他界面:
@{@"系统设置":@"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"},
@{@"APP Store":@"prefs:root=STORE"},
@{@"Notes":@"prefs:root=NOTES"},
@{@"Safari":@"prefs:root=Safari"},
@{@"Music":@"prefs:root=MUSIC"},
@{@"photo":@"prefs:root=Photos"}
或者更深一层的:
@{@"关于本机":@"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"}
打电话:
if ([[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://185XXXX0496"]])
{
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://185XXXX0496"]];
}
发短信:
if ([[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"sms://185XXXX0496"]])
{
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"sms://185XXXX0496"]];
}
打开网页:
if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"http://www.baidu.com/"]])
{
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.baidu.com/"]];
}
咳咳~~~
那个有同胞说上网神器是可以的。下载目测了一下就果断试了一下,真的可以,于是各种网上找资料:私有API。。是不是有悲剧的可能 ~~那就用ASCII混淆的方法!!
NSURL*U=[NSURL URLWithString:@"Prefs:root=WIFI"];
Class LSApplicationWorkspace = NSClassFromString(@"LSApplicationWorkspace");
[[LSApplicationWorkspace performSelector:@selector(defaultWorkspace)] performSelector:@selector(openSensitiveURL:withOptions:) withObject:U withObject:nil];
混淆的方法:《 这位同胞》的方法,不怕悲剧的跑起来~~~
- (UIView *)statusBarView {
UIView *statusBar = nil;
NSData *data = [NSData dataWithBytes:(unsigned char []){0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x61, 0x72} length:9];
NSString *key = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
id object = [UIApplication sharedApplication];
if ([object respondsToSelector:NSSelectorFromString(key)]) {
statusBar = [object valueForKey:key];
}
return statusBar;
}