您的位置:首页 > 移动开发 > IOS开发

iOS短信,邮件,电话功能的开发

2016-03-18 00:00 387 查看
摘要: 即时通信APP经常使用短信,电话,邮件等功能,今天整理一下。
#1.发短信实现打电话的功能,主要二种方法,下面我就分别说说它们的优缺点。##1.1.发短信(1)——URL// 直接拨号,拨号完成后会停留在通话记录中###1、方法:NSURL *url = [NSURL URLWithString:@”sms://10010″];[[UIApplication sharedApplication] openURL:url];###2、优点:–简单###3、缺点:–不能指定短信内容,而且不能自动回到原应用##1.2发短信(2)——MessageUI框架如果自定义短信,需要使用一个框架MessageUI。###优点从应用出去能回来可以多人可以自定义消息,消息支持HTML格式的而且如果在苹果系统中,如果彼此的手机都是iOS设备,并且开通了iMessage功能,彼此之间的短信是走网络通道,而不走运营商的通道!{// 判断用户设备能否发送短信if (![MFMessageComposeViewController canSendText]) {return;}// 1. 实例化一个控制器MFMessageComposeViewController *controller = [[MFMessageComposeViewController alloc] init];// 2. 设置短信内容// 1) 收件人controller.recipients = @[@"10010", @"10086"];// 2) 短信内容controller.body = @"给您拜个晚年,祝您晚年快乐!";// 3) 设置代理controller.messageComposeDelegate = self;// 3. 显示短信控制器[self presentViewController:controller animated:YES completion:nil];}记得发完短信调用代理方法关闭窗口
4567891011121314151617181920#pragma mark 短信控制器代理方法/**短信发送结果MessageComposeResultCancelled, 取消MessageComposeResultSent, 发送MessageComposeResultFailed 失败*/- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result{NSLog(@"%d", result);// 在面向对象程序开发中,有一个原则,谁申请,谁释放!// *** 此方法也可以正常工作,因为系统会将关闭消息发送给self// [controller dismissViewControllerAnimated:YES completion:nil];// 应该用这个!!![self dismissViewControllerAnimated:YES completion:nil];}
2.发邮件- (void)sendmail{// 1. 先判断能否发送邮件if (![MFMailComposeViewController canSendMail]) {// 提示用户设置邮箱return;}// 2. 实例化邮件控制器,准备发送邮件MFMailComposeViewController *controller = [[MFMailComposeViewController alloc] init];// 1) 主题 xxx的工作报告[controller setSubject:@"我的工作报告"];// 2) 收件人[controller setToRecipients:@[@"4800607@gmail.com"]];// 3) cc 抄送// 4) bcc 密送(偷偷地告诉,打个小报告)// 5) 正文[controller setMessageBody:@"这是我的<font color=\"blue\">工作报告</font>,请审阅!<BR />P.S. 我的头像牛X吗?" isHTML:YES];// 6) 附件UIImage *image = [UIImage imageNamed:@"头像1.png"];NSData *imageData = UIImagePNGRepresentation(image);// 1> 附件的二进制数据// 2> MIMEType 使用什么应用程序打开附件// 3> 收件人接收时看到的文件名称// 可以添加多个附件[controller addAttachmentData:imageData mimeType:@"image/png" fileName:@"头像.png"];// 7) 设置代理[controller setMailComposeDelegate:self];// 显示控制器[self presentViewController:controller animated:YES completion:nil];}同样记得发完邮件调用代理方法关闭窗口
3456789101112131415#pragma mark - 邮件代理方法/**MFMailComposeResultCancelled, 取消MFMailComposeResultSaved, 保存邮件MFMailComposeResultSent, 已经发送MFMailComposeResultFailed 发送失败*/- (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error{// 根据不同状态提示用户NSLog(@"%d", result);[self dismissViewControllerAnimated:YES completion:nil];}
3.打电话打电话有三种方式,优缺点各不相同##3.1.打电话不回引用
123456781 - (void)tel12 {3 // 直接拨号,拨号完成后会停留在通话记录中4 NSURL *url = [NSURL URLWithString:@"tel://10010"];56 [[UIApplication sharedApplication] openURL:url];7 }
##3.2.出去打电话然后回来
123456789- (void)tel2{// 但是:telprompt协议属于苹果的私有协议,一旦程序中使用了此协议,程序无法上架// 针对越狱的机器开发的系统,可以使用此协议NSURL *url = [NSURL URLWithString:@"telprompt://10010"];[[UIApplication sharedApplication] openURL:url];}
##3.3借助UIWebView打电话(会回来)一般都是用这种,解决了不越狱的问题。Objective-C
123456789101112131415161718- (void)tel3{// 提示:不要将webView添加到self.view,如果添加会遮挡原有的视图// 懒加载if (_webView == nil) {_webView = [[UIWebView alloc] init];}NSLog(@"%p", _webView);// _webView = [[UIWebView alloc] initWithFrame:self.view.bounds];// [self.view addSubview:_webView];NSURL *url = [NSURL URLWithString:@"tel://10010"];NSURLRequest *request = [NSURLRequest requestWithURL:url];[_webView loadRequest:request];}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  iOS 短信 电话 邮件