swfit实现发短信及 MouMFMessageComposeViewController详解

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(可以通过canSendSubjectcanSendAttachments方法判断是否支持)
  • 4、设置代理messageComposeDelegate(注意这里不是delegate属性,因为delegate属性已经留给UINavigationControllerMFMessageComposeViewController没有覆盖此属性而是重新定义了一个代理),实现代理方法获得发送状态。

代码实现:

 //Mark:- 发送短信
    func canSendText() -> Bool{
        return MFMessageComposeViewController.canSendText()
    }
    //用来指示一条消息能否从用户处发送
    func configuredMessageComposeViewController(phoneArray:Array) -> 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)
            }

你可能感兴趣的:(swfit实现发短信及 MouMFMessageComposeViewController详解)