美文网首页
swfit实现发短信及 MouMFMessageComposeV

swfit实现发短信及 MouMFMessageComposeV

作者: 方克己 | 来源:发表于2015-11-24 13:21 被阅读329次

    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<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)
                }
    

    相关文章

      网友评论

          本文标题:swfit实现发短信及 MouMFMessageComposeV

          本文链接:https://www.haomeiwen.com/subject/irvrhttx.html