iOS APP跳转设置界面以及设置中的其他界面

 

1、跳转设置总页面(iOS10+以及之前的都可以用:ios10+ 是跳转到了应用到设置界面)

[[UIApplication sharedApplication]openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString] ];

iOS10之前到在文章最后边;iOS10之后的方法

MobileCoreServices.framework里的私有API


在iOS10之后,苹果对APP权限问题更加重视!这个时候要实现跳转,就需要使用“ MobileCoreServices.framework ”里的私有API了。(我自己目前只找到这个办法...)

其主要是使用了这个方法:

- (BOOL)openSensitiveURL:(id)arg1 withOptions:(id)arg2;


MobileCoreServices.frameworkAPI里面的查看“LSApplicationWorkspace.h”的URL地址:https
//github.com/JaviSoto/iOS10-Runtime-Headers/blob/master/Frameworks/MobileCoreServices.framework/LSApplicationWorkspace.h

下载好“iOS10-Runtime-Headers”整个文件,还有其他功能自己可以慢慢使用!! 
“iOS10-Runtime”的地址:https : //github.com/JaviSoto/iOS10-Runtime-Headers


使用时,只需要往工程里拖入“MobileCoreServices.framework”就行了!


拖入私有API成功后!多出的链接库


iOS10的系统URL方案改成了首字母大写,使用小写的方式会无法打开。

 

网上说法:
要先在info.plist的LSApplicationQueriesSchemes项中添加一个Prefs的URL方案。


的plist文件设置【一】

的plist文件设置【二】


求最后⭐️发现不用设置的plist文件也。实现了跳转。
(可能是之前配置了“URL类型”的原因吧!???还希望懂的朋友指点一下!???)


之前配置的“URL类型”

 

在“ - (IBAction)buttonTouch:(UIButton *)sender {} ”里面加上:

//注意⭐️首字母改成了 ⭐️大写,prefs->Prefs
NSURL*right_url=[NSURL URLWithString:@"Prefs:root=Bluetooth"];
Class LSApplicationWorkspace = NSClassFromString(@"LSApplicationWorkspace");

[[LSApplicationWorkspace performSelector:@selector(defaultWorkspace)] performSelector:@selector(openSensitiveURL:withOptions:) withObject:right_url withObject:nil];


环境:iPhone5s(iOS8.1)

效果:
iOS8对私有API并无任何反应


iOS8对私有API无反应


环境:iPhone6s(iOS10.0.1)

效果:
卡顿是因为自己打了断点,不要误解了是使用了私有API的问题〜??


iOS10以上成功跳转


⚠️:由于使用私有API的APP无法通过App Store审核。可以尝试把私有类名和选择器字符串混淆一下,绕过审核!!!!!

如下是用⭐ ㄧ ️️️⭐::

- (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; }


当然不建议使用私有API !!由于其不可靠性,也许某天苹果就可能直接把它移除了。

但是在iOS10以上,我找不到其他方法跳转了!希望有知道的朋友指点一下!文章有什么纰漏之处,还望指出!

 


最后示范一下iPhone6s(iOS10.0.1)对各种方法 的响应:


iOS10对各方法打断点

1.不响应

   [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=MUSIC"] ];


2.不满足

  [[UIApplication sharedApplication] canOpenURL:url]

条件,故不会进入if条件语句里

3.对私有API才响应了。


当然也可以来来回回切换~~好无聊???

 

 

iOS10 之前到版本

2、定位服务

定位服务有很多APP都有,如果用户关闭了定位,那么,我们在APP里面可以提示用户打开定位服务。点击到设置界面设置,直接跳到定位服务设置界面。代码如下:

//定位服务设置界面
NSURL *url = [NSURL URLWithString:@"prefs:root=LOCATION_SERVICES"];
if ([[UIApplication sharedApplication] canOpenURL:url])
{
    [[UIApplication sharedApplication] openURL:url];
}
 
3、参数配置

URL计划就是实现跳转URL协议的名称(可以多个)。
而APP的跳转就需要设置“URL Schemes”来实现:

 
 

添加“URL类型”,设置其“URL方案”
 
 


其中之后URL对象,会根据URL方案内容来创建!

 


看到这几个例子,大家有没有发现,想跳到哪个设置界面只需要prefs:root=后面的值即可!是的,就是这样的。
 prefs:root=General&path=About
  prefs:root=General&path=ACCESSIBILITY
 prefs:root=AIRPLANE_MODE  prefs:root=General&path=AUTOLOCK  prefs:root=General&path=USAGE/CELLULAR_USAGE  prefs:root=Brightness //打开Brightness(亮度)设置界面  prefs:root=Bluetooth //打开蓝牙设置  prefs:root=General&path=DATE_AND_TIME //日期与时间设置  prefs:root=FACETIME //打开FaceTime设置  prefs:root=General //打开通用设置  prefs:root=General&path=Keyboard //打开键盘设置  prefs:root=CASTLE //打开iClound设置  prefs:root=CASTLE&path=STORAGE_AND_BACKUP //打开iCloud下的储存空间  prefs:root=General&path=INTERNATIONAL //打开通用下的语言和地区设置  prefs:root=LOCATION_SERVICES //打开隐私下的定位服务  prefs:root=ACCOUNT_SETTINGS  prefs:root=MUSIC //打开设置下的音乐  prefs:root=MUSIC&path=EQ //打开音乐下的均衡器  prefs:root=MUSIC&path=VolumeLimit //打开音乐下的音量  prefs:root=General&path=Network //打开通用下的网络  prefs:root=NIKE_PLUS_IPOD  prefs:root=NOTES //打开设置下的备忘录设置  prefs:root=NOTIFICATIONS_ID //打开设置下的通知设置  prefs:root=Phone //打开电话设置  prefs:root=Photos //打开设置下照片和相机设置  prefs:root=General&path=ManagedConfigurationList //打开通用下的描述文件  prefs:root=General&path=Reset //打开通用下的还原设置  prefs:root=Sounds&path=Ringtone  prefs:root=Safari //打开设置下的safari设置  prefs:root=General&path=Assistant //打开siri不成功  prefs:root=Sounds //打开设置下的声音设置  prefs:root=General&path=SOFTWARE_UPDATE_LINK //打开通用下的软件更新  prefs:root=STORE //打开通用下的iTounes Store和App Store设置  prefs:root=TWITTER //打开设置下的twitter设置  prefs:root=FACEBOOK //打开设置下的Facebook设置  prefs:root=General&path=USAGE //打开通用下的用量  prefs:root=VIDEO  prefs:root=General&path=Network/VPN //打开通用下的vpn设置  prefs:root=Wallpaper //打开设置下的墙纸设置  prefs:root=WIFI //打开wifi设置  prefs:root=INTERNET_TETHERING

蜂窝数据 — prefs:root=MOBILE_DATA_SETTINGS_ID

 

FaceTime

//FaceTime设置界面
NSURL *url = [NSURL URLWithString:@"prefs:root=FACETIME"];
if ([[UIApplication sharedApplication] canOpenURL:url])
{
    [[UIApplication sharedApplication] openURL:url];
}

音乐

//音乐设置界面
NSURL *url = [NSURL URLWithString:@"prefs:root=MUSIC"];
if ([[UIApplication sharedApplication] canOpenURL:url])
{
    [[UIApplication sharedApplication] openURL:url];
}

墙纸设置界面

//墙纸设置界面
NSURL *url = [NSURL URLWithString:@"prefs:root=Wallpaper"];
if ([[UIApplication sharedApplication] canOpenURL:url])
{
    [[UIApplication sharedApplication] openURL:url];
}

蓝牙设置界面

//蓝牙设置界面
NSURL *url = [NSURL URLWithString:@"prefs:root=Bluetooth"];
if ([[UIApplication sharedApplication] canOpenURL:url])
{
   [[UIApplication sharedApplication] openURL:url];
}

iCloud设置界面

//iCloud设置界面
NSURL *url = [NSURL URLWithString:@"prefs:root=CASTLE"];
if ([[UIApplication sharedApplication] canOpenURL:url]
{
   [[UIApplication sharedApplication] openURL:url];
}

 

大家可以根据自己的需求,跳到不同的设置界面。如果你喜欢这篇文章的话,欢迎分享给更多的朋友,也可以收藏起来,以备不时之需

转载于:https://www.cnblogs.com/xujiahui/p/6911481.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值