打电话,发短信,发邮件,app跳转
1.打电话
- (IBAction)callPhone1:(id)sender { NSURL *url = [NSURL URLWithString:@"tel://18500441739"]; [[UIApplication sharedApplication] openURL:url]; }
- (IBAction)callPhone2:(id)sender { NSURL *url = [NSURL URLWithString:@"telprompt://18500441739"];
[[UIApplication sharedApplication] openURL:url]; }
- (IBAction)callPhone3:(id)sender { if (_webView == nil) { _webView = [[UIWebView alloc] initWithFrame:CGRectZero]; } [_webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"tel://18500441739"]]]; }
推荐使用第三种,第一个为私有API,第二个无法回到原来app
2.发短信
- (IBAction)sendMsg:(id)sender { NSURL *url = [NSURL URLWithString:@"sms://18500441739"]; [[UIApplication sharedApplication] openURL:url]; }
- (IBAction)sendWithMsg:(id)sender { /* 必须要导入<MessageUI/MessageUI.h> */ MFMessageComposeViewController *vc = [[MFMessageComposeViewController alloc] init]; /* 消息内容 */ vc.body = @"吃饭了没?"; /* 收到消息的人列表 */ vc.recipients = @[@"18500441739",@"15342777049"]; /* MFMessageComposeViewControllerDelegate */ vc.messageComposeDelegate = self; [self presentViewController:vc animated:YES completion:nil]; }
建议使用第二种,第二个可以预编辑文字和发送列表发送完了以后会有代理方法调用
#pragma mark - MFMessageComposeViewControllerDelegate -(void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result{ [controller dismissViewControllerAnimated:YES completion:nil]; if (result == MessageComposeResultCancelled) { NSLog(@"取消发送"); }else if (result == MessageComposeResultFailed){ NSLog(@"发送失败"); }else if(result == MessageComposeResultSent){ NSLog(@"发送成功"); }else{ NSLog(@"未知情况"); } }
3.发送邮件
- (IBAction)sendEmail:(id)sender { NSURL *url = [NSURL URLWithString:@"mailto://aaaa61134@qq.com"]; [[UIApplication sharedApplication] openURL:url]; }
- (IBAction)sendEmailWithMsg:(id)sender { NSLog(@"%@",[self class]); if (![MFMailComposeViewController canSendMail]) { NSLog(@"yes"); return; } MFMailComposeViewController *vc = [[MFMailComposeViewController alloc] init]; /* 收件人列表 */ [vc setToRecipients:@[@"2542461134@qq.com",@"22422061134"]]; /* 抄送人列表 */ [vc setCcRecipients:@[@"12763456@qq.com"]]; /* 密送人列表 */ [vc setBccRecipients:@[@"233r@qq.com",@"2525234@163.com"]]; /* 设置代理 MFMailComposeViewControllerDelegate*/ [vc setMailComposeDelegate:self]; /* 发送主题 */ [vc setSubject:@"会议"]; /* 发送内容,是否为HTML文档 */ [vc setMessageBody:@"测试发邮件功能" isHTML:NO]; /* 添加附件 */ UIImage *image = [UIImage imageNamed:@"IMG_0993"]; NSData *data = UIImagePNGRepresentation(image); [vc addAttachmentData:data mimeType:@"image/png" fileName:@"首页.png"]; /* 跳转页面 */ [self presentViewController:vc animated:YES completion:nil]; }
推荐 第二种方法,第二种方法也有代理方法的调用
#pragma mark - MFMailComposeViewControllerDelegate -(void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error{ [controller dismissViewControllerAnimated:YES completion:nil]; if (result == MFMailComposeResultCancelled) { NSLog(@"取消发送"); }else if (result == MFMailComposeResultSent){ NSLog(@"发送成功"); }else if (result == MFMailComposeResultSaved){ NSLog(@"保存邮件"); }else if (result == MFMailComposeResultFailed){ NSLog(@"发送失败"); }else{ NSLog(@"发送异常"); } }
4.跳转其他app
a.跳转浏览器
/* 跳入浏览器 */ - (IBAction)intoBorwer:(UIButton *)sender { /* 如果想打开一些常见文件,比如html、txt、PDF、PPT等,都可以使用UIWebView打开 只需要告诉UIWebView文件的URL即可 至于打开一个远程的共享资源,比如http协议的,也可以调用系统自带的Safari浏览器 */ NSLog(@"%@",sender.titleLabel.text); NSString *urlStr = [NSString stringWithFormat:@"http://%@",sender.titleLabel.text]; NSURL *url = [NSURL URLWithString:urlStr]; [[UIApplication sharedApplication] openURL:url]; }
b.跳转到其他app
/* 跳入到其他的程序 */ - (IBAction)intoOtherApp:(id)sender { /* 在要跳入的app中设置 URL Types 1.打开原文件 2.选择Info.Plist文件 3.添加URL types 4.点开URL types 将URL identifier的值设为 ios.defaults.com 5.在URL types中添加URL Schemes,并将其值设为 who 6.访问的url为 who://ios.defaults.com */ NSURL *url = [NSURL URLWithString:@"yds://ios.hgl.org"]; [[UIApplication sharedApplication] openURL:url]; }