前言
这两天开始做新的项目了,在项目出现了打开系统的设置中的WiFi页面和其他应用的这两个需求.然后度娘了一下,整理整理发出来.方便以后的工作使用.
App打开设置页面
在iOS5.1之前,我们如果需要打开系统设置页面的某个页面,如打开WiFi设置页面,我们只需要使用如下代码即可.
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=WIFI"]];
但是在iOS5.1之后,如果直接这么调用的话是无效果的,那么我们该怎么办呢?这时候我们只需要修改一下程序中的info.plist文件即可.步骤如下.
在info.plist文件中添加一个数组类型的URL types字段.
在URL types数组中创建一个新的item在该item中有URL Schemes和Document Role两个字段,其实Document Role的值设置为Editor,URL Schemes是一个数组类型,给它添加一个item,值设置为prefs.
整体设置图片如下所示.
这样,我们就可以在程序中直接跳转到系统的设置页面了.(由于模拟器没有WiFi所以只能跳转到设置界面了.)
下面是我整理的一些设置跳转的URL字符串,请自行使用.不过多解释了.
通用->关于本机
prefs:root=General&path=About
通用->辅助功能
prefs:root=General&path=About
飞行模式开关
prefs:root=AIRPLANE_MODE
自动锁屏
prefs:root=General&path=AUTOLOCK
亮度
prefs:root=Brightness
蓝牙
prefs:root=General&path=Bluetooth
日期与时间
prefs:root=General&path=DATE_AND_TIME
FaceTime
prefs:root=FACETIME
通用
prefs:root=General
键盘
prefs:root=General&path=Keyboard
iCloud
prefs:root=CASTLE
iCloud->存储空间
prefs:root=CASTLE&path=STORAGE_AND_BACKUP
通用->地区与语言
prefs:root=General&path=INTERNATIONAL
音乐
prefs:root=MUSIC
通知
prefs:root=NOTIFICATIONS_ID
照片
prefs:root=Photos
电话
prefs:root=Phone
通用->还原
prefs:root=General&path=Reset
Safari浏览器
prefs:root=Safari
通用->Siri
prefs:root=General&path=Assistant
Sounds
prefs:root=Sounds
开发者
prefs:root=LOCATION_SERVICES
苹果商店
prefs:root=STORE
通用->设备管理
prefs:root=General&path=USAGE
VPN
prefs:root=General&path=Network/VPN
墙纸
prefs:root=Wallpaper
WiFi
prefs:root=WIFI
通过App打开另外一个应用程序
上面我们看到了通过一个App打开系统设置界面的相关操作,那么如果通过当前App打开另外的一个应用程序呢?我们就那上面的那个程序当测试程序,让另外的一个程序打开它.这时候我们需要接着配置info.plist中URL types,我们新增一个item,然后URL Schemes选项如图填写testApp(类似于标识符).
当我们然后我们需要在这个被调起程序的AppDelegate.m文件中重写**-(BOOL)application:(UIApplication )application handleOpenURL:(NSURL )url这个方法.整体代码如下所示.
-(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{
if([[url scheme] isEqualToString:@"textApp"]){
[application setApplicationIconBadgeNumber:10];
return YES;
}
return NO;
}
然后我们在另外的一个程序中合适的地方写如下的代码,调起我们的测试程序.注意:标识符URL的字符串要写成@"testApp:",而不是@"testApp"!带有冒号.
- (IBAction)openOtherApp:(id)sender {
NSURL *url = [NSURL URLWithString:@"testApp:"];
[[UIApplication sharedApplication] openURL:url];
}
这样,我们就完成了我们的跳转了.效果如下所示.
结束
关于程序之间的通讯就说到这了,如果再有什么问题,可以联系我,骚栋24小时在线,谢谢.最后附上两者的演示Demo传送门.