MouMFMessageComposeViewController属性及代理方法解释和使用
环境配置
注意:MessageUI.framework使用之前加入此库**
* 属性方法解释说明
- 1.canSendText()-> bool 是否支持短信功能(类方法)
- 2.canSendSubject() 是否支持设置主题
- 3.canSendAttachments() 是否支持附件
- 4.recipients: [String] ? 收件人数组 (例:["186xxxx5666","176xxxx5656"] )
- 5.body (String) 短信内容
- 6.attachments:[[NSObject : AnyObject]]{get} 获得附件
- 7.func addAttachmentURL(attachmentURL:NSURL, withAlternateFilename alternateFilename:String?) ->Bool 添加附件地址
- 8.func addAttachmentData(attachmentData:NSData, typeIdentifier uti:String, filename:String) ->Bool 添加data类型附件
- 9.messageComposeDelegate 设置代理 (MFMessageComposeViewControllerDelegate)
- 10.isSupportedAttachmentUTI(uti:String) 是否接受具有指定的 UTI,作为附件的文件。
- 11.disableUserAttachments() 禁用邮件视图中的成分相机/附件按钮。
* MFMessageComposeViewControllerDelegate 代理方法
- (void)messageComposeViewController: (MFMessageComposeViewController *)controller
didFinishWithResult:(MessageComposeResult)result {
switch (result)
{
case MessageComposeResultCancelled:
LOG_EXPR(@”Result: SMS sending取消”);
break;
case MessageComposeResultSent:
LOG_EXPR(@”Result: SMS 发送成功”);
break;
case MessageComposeResultFailed:
[UIAlertView quickAlertWithTitle:@"短信发送失败" messageTitle:nil dismissTitle:@"关闭"];
break;
default:
LOG_EXPR(@”Result: SMS not sent”);
break;
}
使用步骤
在MessageUI.framework中主要有两个控制器类分别用于发送短信(MFMessageComposeViewController)和邮件(MFMailComposeViewController),它们均继承于UINavigationController。由于两个类使用方法十分类似,这里主要介绍一下MFMessageComposeViewController使用步骤:
- 1、创建
MFMessageComposeViewController
对象。 - 2、设置收件人
recipients
、信息正文body
,如果运行商支持主题和附件 - 3、的话可以设置主题
subject
、附件attachments
(可以通过canSendSubject
、canSendAttachments
方法判断是否支持) - 4、设置代理
messageComposeDelegate
(注意这里不是delegate属性,因为delegate
属性已经留给UINavigationController
,MFMessageComposeViewController
没有覆盖此属性而是重新定义了一个代理),实现代理方法获得发送状态。
代码实现:
//Mark:- 发送短信
func canSendText() -> Bool{
return MFMessageComposeViewController.canSendText()
}
//用来指示一条消息能否从用户处发送
func configuredMessageComposeViewController(phoneArray:Array<String>) -> MFMessageComposeViewController{
let messageComposeVC = MFMessageComposeViewController()
messageComposeVC.messageComposeDelegate = self
messageComposeVC.body = HTTPREQUEST_NULLKEY
messageComposeVC.recipients = phoneArray
return messageComposeVC
}
func messageComposeViewController(controller: MFMessageComposeViewController, didFinishWithResult result: MessageComposeResult) {
controller.dismissViewControllerAnimated(true, completion: nil)
}
if self.canSendText(){
let messageVC = self.configuredMessageComposeViewController(["18611024550"])
presentViewController(messageVC, animated: true, completion: nil)
} else {
MBProgressHUD.MBProgressHUDText("手机没有短信功能", showHUDView: self.view, delegate: self)
}