应用内跳转~~~~

来源:互联网 发布:程序员用茶轴还是红轴 编辑:程序博客网 时间:2024/05/17 08:32

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=[NSURLURLWithString:@"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; }


0 0