MFMessageCompose 和 MFMailComposeViewController的使用方法

使用MFMessageComposeViewCOntroller发短信

应用想自己提供界面让用户输入短信收件人地址、短信内容、主体、附件等短信内容,则可使用MFMessageComposeViewController来发送短信,它也是一个视图控制器,继承UINavigationController.

MFMessageComposeViewController提供了如下类方法判断iOS设备是否支持发送短信.

+ canSendText:

该iOS设备是否支持发送文本短信.

+ canSendAttachments:

该iOS设备是否支持发送带附件的短信

+ canSendSubject:

该iOS设备是否支持发送带标题的短信

程序使用MFMessageComposeViewController的类方法进行判断之后,接下来就可按如下步骤发送短信.

1

创建MFMessageComposeViewController对象

2

为MFMessageComposeViewController设置recipients(接受NSArray作为属性值,用于设置多个收件人号码)、subject(设置短信主题)、body(设置短信内容)、attachments(接受NSArray作为属性值,用于设置多个附件)等属性

3

为MFMessageComposeViewController设置messageComposeDelegate,该属性值必须是一个实现MFMessageComposeViewControllerDelegate协议的对象.该协议中定义了一个必须实现的messageComposeViewComtroller:didFinishWithResult:方法,该方法负责处理短信的发送结果.

 @interface LCViewController()<MFMessageComposeViewControllerDelegate>

 @end

 @implementation LCViewController

 - (void)viewDidLoad

 {

    [super viewDidLoad];

 }

 - (IBAction)send:(id)sender

 {

    NSString* destStr = self.destField.text;

    NSString* contentStr = self.contentField.text;

    if(destStr != nil && destStr.length> && contentStr != nil && destStr.length >  )

    {

        // 如果能发送文本信息

       if([MFMessageComposeViewController canSendText])

       {

 // 创建MFMessageComposeViewController对象

 MFMessageComposeViewController *picker = [[MFMessageComposeViewController alloc] init];

 // 为MFMessageComposeViewController对象指定messageComposeDelegate

 picker.messageComposeDelegate = self;

 picker.navigationBar.tintColor = [UIColor blackColor];

 // 设置收件人,此处可通过NSArray集合指定多个收件人

 picker.recipients = [NSArray arrayWithObject:destStr];

 // 设置短信内容

 picker.body = contenStr;

 /*

   如果运营商支持,picker还支持指定subjecy(主题)和attachments(附件)

   也可用addAttachmentURL:withAlternateFilename:或addAttachmentData:typeIdentifier:filename:方法添加附件

 */

 // 显示MFMessageComposeViewController控制器

 [self persentViewController:picker animated:YES completion:nil];

 }  

 }

 }

 //  MFMessageComposeViewControllerDelegate协议中的方法,负责处理短信的发送结果

 - (void)messageComposeViewController:(MFMessageComposeViewController*)controller didFinishWithResult:(MessageComposeResult)result

 {

 switch(result)

 {

   case MessageComposeResultCancelled:

       [self showAlert:@”结果: 短信被取消发送”];

       break;

   case MessageComposeResultSent:

       [self showAlert:@”结果: 发送成功”];

       break;

   case MessageComposeResultFailed:

       [self showAlert:@”结果: 发送失败”];

         break;

    default:

       [self showAlert:@”结果: 没有发送短信”];

     break;

 }

 [self dismissViewControllerAnimated:YES completion:nil];

 }

 - (void)showAlert:(NSString *)msg

 {

 [[[UIAlertView alloc] initWithTitle:@”发送结果” message:msg delegate:nil cancelButtonTitle:@”确 定” otherButtonTitles:nil] show];

 }

 @end

创建了一个MFMessageComposeViewController对象,并为该对象设置了recipents(收件人)、body(短信内容),并将该视图控制器本身设为它的messageComposeDelegate,因此该视图控制器类实现了MFMessageComposeViewControllerDelegate协议,并实现该协议中的方法----该方法负责处理发送短信的结果。

     

使用MFMailComposeViewController发送邮件

MFMailComposeViewController与MFMessageComposeViewController的用法非常相似,只是功能不同而已------MFMailComposeViewController用于发送邮件。

MFMailComposeViewController提供了如下类方法判断iOS设备是否支持发送邮件。

+ canSendMail: 该iOS设备是否支持发送邮件.

程序使用MFMailComposeViewController的类方法进行判断之后,接下来就可按如下步骤发送邮件.

  1. 创建MFMailComposeViewController对象
  2. 为MFMailComposeViewController设置toRecipients: (接受NSArray作为属性值,用于设置多个收件人地址)、ccRecipients:(接受NSArray作为属性值,用于设置多个抄送人地址)、bccRecipients:(接收NSArray作为属性值,用于设置多个密送人地址)、subject(设置邮件主题),还可通过setMessageBody:isHTML:方法设置邮件正文,通过addAttachmentData:mimeType:filename:方法添加附件.
  3. 为MFMailComposeViewController设置mailComposeDelegate,该属性值必须是一个实现MFMailComposeViewControllerDelegate协议的对象.该协议中定义了一个必须实现的mailComposeController:didFinishWithResult:error:方法,该方法负责处理邮件的发送结果.

 @interface LCViewController()<MFMailComposeViewControllerDelegate>

 @end

 @implementation LCViewController

 -(void)viewDidLoad

 {

    [super viewDidLoad];

 }

 -(IBAction)sendMail:(id)sender

 {

   // 获取界面上用户输入的内容

   NSString* toStr = self.toField.text;// 收件人地址

   NSString* ccStr = self.ccField.text;// 抄送人地址

   NSString* bccStr = self.bccField.text;// 密送人地址

   NSString* subjectStr = self.subjectField.text;// 邮件主题

 NSString* contentStr = self.contentField.text;// 邮件正文

 if(toStr != nil && toStr.length > 

 && subjectStr != nil && subjectStr.length > 

 && contentStr != nil && contentStr.length > )

 {

   // 如果能发送邮件

   if([MFMailComposeViewController canSendMail])

 {

   // 创建MFMailComposeViewController对象

  MFMailComposeViewController *picker = [[MFMailComposeViewController alloc]  init];

 // 为 MFMailComposeViewController对象指定mailComposeDelegate

 picker.mailComposeDelegate = self;

 picker.navigationBar.tintColor = [UIColor blackColor];

 // 设置收件人,此处可通过NSArray集合指定多个收件人

 picker.toRecipients = [NSArray arrayWithObject:toStr];

 if(ccStr != nil && ccStr.length > )

 {

   // 设置抄送人,此处可通过NSArray集合指定多个抄送人

  picker.ccRecipients = [NSArray arrayWithObject:ccStr];

 }

 if(bccStr != nil && bccStr.length > )

 {

   // 设置密送人,此处可用过NSArray集合指定多个密送人

   picker.bccRecipients = [NSArray arrayWithObject:bccStr];

 }

 // 设置邮件主题

 picker.subject = subjectStr;

 // 设置邮件正文

 [picker setMessageBody:contentStr isHTML:NO];

 // 显示MFMailComposeViewController控制器

 [self persentViewController:picker animated:YES completion:nil];

 }

 }

 }

 -(IBAction)finishEdit:(id)sender

 {

   [sender resignFirstResponder];

 }

 -(void)mailComposeController:(MFMailComposeViewController*)controller

   didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error

 {

   switch(result)

   {

 case  MFMailComposeResultCancelled:

      [self showAlert:@”结果: 邮件被取消发送”];

      break;

 case  MFMailComposeResultSent:

     [self showAlert:@”结果: 发送成功”];

     break;

 case  MFMailComposeResultFailed:

     [self showAlert:@”结果: 发送失败”];

     break;

 case  MFMailComposeResultSaved:

     [self showAlert:@”结果: 邮件被保存了”];

     break;

 }

 [self dismissViewControllerAnimated:YES completion:nil];

 }

 -(void)showAlert:(NSString *)msg

 {

   [ [ [ UIAlertView alloc] initWithTitle:@”发送结果”  message:msg delegate:nil cancelButtonTitle:@”确定” otherButtonTitles:nil] show];

 }

 @end

// 上面程序中的粗体字代码创建了一个MFMailComposeViewController对象,并为该对象设置了toRecipients(收件人地址)、ccRecipients(抄送人地址)、bccRecipients(密送人地址),还调用了setMessageBody:contentStr isHTML:方法设置邮件正文,并将该视图控制器本身设为它的mailComposeDelegate,因此该视图控制器类实现MFMailComposeViewControllerDelegate协议,并实现了该协议中的方法----该方法负责处理发送邮件的结果。

// 编译、运行该程序(必须在真机中运行,模拟器不支持),在程序界面中输入收件人地址、抄送地址、密送人地址、邮件主题、邮件正文,然后单击“发送”按钮,将可以看到如下图所示的界面

iOS-----MFMessageCompose 和 MFMailComposeViewController的使用方法的更多相关文章

  1. IOS发送Email的两种方法

    IOS系统框架提供的两种发送Email的方法:openURL 和 MFMailComposeViewController.借助这两个方法,我们可以轻松的在应用里加入如用户反馈这类需要发送邮件的功能. ...

  2. iOS开发 GET、POST请求方法(NSURLSession篇)

    NSURLConnection,在iOS9被宣布弃用,本文不使用NSURLConnection进行网络编程,有兴趣的童鞋可以参考: [iOS开发 GET.POST请求方法(NSURLConnectio ...

  3. iOS开发 GET、POST请求方法(NSURLConnection篇)

    Web Service使用的主要协议是HTTP协议,即超文本传输协议. HTTP/1.1协议共定义了8种请求方法(OPTIONS.HEAD.GET.POST.PUT.DELETE.TRACE.CONN ...

  4. IOS中图片拉伸技巧与方法总结(转载)

    以下内容转载自:http://my.oschina.net/u/2340880/blog/403996 IOS中图片拉伸技巧与方法总结 一.了解几个图像拉伸的函数和方法 1.直接拉伸法 简单暴力,却是 ...

  5. iOS——浅谈iOS中三种生成随机数方法

    ios 有如下三种随机数方法:

  6. iOS项目的完整重命名方法图文教程

    原文链接:http://www.cocoachina.com/ios/20150104/10824.html iOS项目的完整重命名方法图文教程 前言:在iOS开发中,有时候想改一下项目的名字,都会遇 ...

  7. iOS开发中的Html解析方法

    iOS开发中的Html解析方法 本文作者为大家介绍了在iOS开发中的Html解析方法,并同时提供了Demo代码的下载链接,Demo 解析了某个网站(具体可在代码中查看)的html网页,提取了图片以及标 ...

  8. IOS发送Email的两种方法-备

    1.openURL 使用openURL调用系统邮箱客户端是我们在IOS3.0以下实现发邮件功能的主要手段.我们可以通过设置url里的相关参数来指定邮件的内容,不过其缺点很明显,这样的过程会导致程序暂时 ...

  9. iOS开发 GET、POST请求方法:NSURLSession篇

    NSURLConnection,在iOS 9被宣布弃用,本文不使用NSURLConnection进行网络编程,有兴趣的童鞋可以参考: iOS开发 GET.POST请求方法(NSURLConnectio ...

随机推荐

  1. 移动 H5(PC Web)前端性能优化指南

    原文地址https://zhuanlan.zhihu.com/p/25176904?utm_source=wechat_session&utm_medium=social&utm_me ...

  2. Java多线程(三)

    本文主要接着前面多线程的两篇文章总结Java多线程中的线程安全问题. 一.一个典型的Java线程安全例子 1 public class ThreadTest { 2 3 public static v ...

  3. Mysql 数据库系列

    阅读目录 第一篇:  数据库初识 第二篇:  库操作 第三篇:  存储引擎 第四篇:  表操作 第五篇:  数据操作 第六篇:  索引原理与慢查询优化 第七篇:  数据备份 pymysql模块 第八篇 ...

  4. web前端几个小知识点笔记

    1.css实现宽度是百分比的盒子为正方形 <div style="width:50%;padding-bottom:50%;height:0px;background:#ccc;&qu ...

  5. Hadoop mapreduce自定义分区HashPartitioner

    本文发表于本人博客. 在上一篇文章我写了个简单的WordCount程序,也大致了解了下关于mapreduce运行原来,其中说到还可以自定义分区.排序.分组这些,那今天我就接上一次的代码继续完善实现自定 ...

  6. 34sqlite

    sqlite,本地数据库.主要运用在小型的程序,传送方便(如发送附带数据库的程序,但MySQL有点大,或许没安装). 如何创建本地数据库? 1.新建一个.txt的文本文件. 2.直接将后缀名有.txt ...

  7. SQLServer中char、varchar、nchar、nvarchar比较

    转自:http://www.cnblogs.com/bluesky_blog/archive/2009/07/31/1535722.html 对于程序中的string型字段,SQLServer中有ch ...

  8. 一次频繁Full GC问题排查过程分享

    问题描述 应用收到频繁Full GC告警 问题排查 登录到对应机器上去,查看GC日志,发现YGC一分钟已经达到了15次,比Full GC还要频繁一些,其中Full GC平均10分钟超过了4次,如下图 ...

  9. Javaworkers团队最终项目总结

    Javaworkers团队最终项目总结 小组成员 20145205武钰 20145222黄亚奇 20145235李涛 20145103冯文华 团队项目总结 案例提出及工程用时 本次项目由十一到十六周共 ...

  10. Kali2018.1

    目录 制作U盘启动盘 安装 Kali Linux 之后的事 更新源 配置 Zsh 配置 Vim 修改 Firefox 语言为中文 安装 Gnome 扩展 美化 安装 Google 拼音输入法 安装常用 ...