运用openURL方法 实现 程序间跳转 , 拨打电话 , 发送邮件等功能。
程序间跳转
核心代码
//需要跳转至App的 Scheme
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"iMeituan://"]];
//判断是否可以打开URL
if ([[UIApplication sharedApplication] canOpenURL:url]) {
//打开URL
[[UIApplication sharedApplication] openURL:url options:@{} completionHandler:^(BOOL success) {
if (success) {
NSLog(@"调用成功");
}else{
NSLog(@"调用失败");
}
}];
}else{
NSLog(@"打开失败");
}
URL
统一资源定位符(可以没有路径但是必须要有协议头)
Scheme
协议头,用来决定查找资源的方式
options
参数 具体含义 有待研究。
调用时传的参数 不管是什么 接收方 里面的参数都是
{UIApplicationOpenURLOptionsOpenInPlaceKey = 0;
UIApplicationOpenURLOptionsSourceApplicationKey = @"com.Demo.openURLTest"(Bundle ID)}
知乎上有一篇帖子 , 列举了一些 常用的软件Scheme地址
额外配置
- 在“Info.plist”中将要使用的URL Schemes列为 Http访问白名单
LSApplicationQueriesSchemes
Http访问白名单
- 将Build Settings 下的 Enable Bitcode,把它设置成 NO
其他
- 拨打电话
//tel: 为拨打电话的 协议头
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://8004664411"]];
- 发送邮件
//mailto: 为发送邮件的 协议头
[[UIApplication sharedApplication]openURL:[NSURL URLWithString:@"mailto://devprograms@apple.com"]];
- 发短信
//sms: 为发送短信的 协议头
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"sms://10086"]];
- 调用浏览器
//正常输入网址就好
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.baidu.com"]];
发送邮件 和 短信 通常并不会使用openURL 的方式来调用。
网友评论
NSString *phone = @"8004664411";
NSString *tel = [NSString stringWithFormat:@"tel://%@",phone];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:tel]];