您的当前位置:首页正文

华山论剑之App打开设置页面和其他应用程序

来源:图艺博知识网

前言


这两天开始做新的项目了,在项目出现了打开系统的设置中的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 SchemesDocument 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.plistURL 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传送门.

Top