我们可以通过调用UIApplication单例对象的openURL方法进行打电话,发短信,调用其他应用等操作
在safari中打开网址
- (IBAction)openSafari:(id)sender { NSString *httpUrlStr = @"http://www.cnblogs.com/zanglitao"; [[UIApplication sharedApplication] openURL:[NSURL URLWithString:httpUrlStr]]; }
URL前缀是http://
拨打电话
- (IBAction)makeCall:(id)sender { UIDevice *device = [UIDevice currentDevice]; if ([device.model isEqualToString:@"iPhone"]) { NSString *callUrlStr = @"tel:137XXXXXXXXX"; [[UIApplication sharedApplication] openURL:[NSURL URLWithString:callUrlStr]]; } }
URL前缀是tel: 只有iPhone才支持拨打电话,可以取得当前UIDevice实例,通过比对model属性查看当前设备是否为iPhone
发短信
- (IBAction)sendSMS:(id)sender { UIDevice *device = [UIDevice currentDevice]; if ([device.model isEqualToString:@"iPhone"]) { NSString *smsUrlStr = @"sms:137XXXXXXXX"; [[UIApplication sharedApplication] openURL:[NSURL URLWithString:smsUrlStr]]; } }
URL前缀是sms
此外我们还可以通过openURL打开系统中其他应用,实现进程间通信
首先我们创建应用一,并且在应用一的plist文件中添加它的URL Scheme
设置完后我们就可以通过前缀为zltApp1://的url来打开该应用
我们再创建应用二,添加按钮用来打开应用一
- (IBAction)openApp:(id)sender { NSString *myAppUrl = @"zltApp1://info1,info2"; [[UIApplication sharedApplication] openURL:[NSURL URLWithString:myAppUrl]]; }
我们可以在前缀zltApp1://后面添加内容作为参数传递
回到应用一,我们在AppDelegate中添加以下代码
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { if ([sourceApplication isEqualToString:@"xxx"]) { //逻辑代码 } return YES; }
其中sourceApplication是应用二的bundle id,此函数会在应用二通过openURL打开应用一后被调用