iOS发送短信功能的实现代码

  

发短信的功能对于一个需要渠道扩展的应用来说,必不可少。但是,当第一次看到这个需求时,我却一脸懵逼,因为之前并没有接触过,出于对未知事物的恐惧,被分配做这个任务的时候其实我是拒绝的,但是,没办法谁让我是小兵一个呢,只能硬着头皮强上了。在查阅了一番资料之后,发现这个功能做起来其实非常简单,不到十分钟就可以解决。下面我们就来聊一下如何实现这个功能。

  

首先,我们来介绍一个最为简单的方法,只需要一行代码就可以搞的定,代码如下:

        [[UIApplication sharedApplication] openURL:(NSURL URLWithString: @“短信://800888”]],      

但是,这段代码虽然简单,缺陷却也明显,这段代码属于程序外部调用,也就是跳出应用程序本身,利用手机短信功能发送短信,在发送短信页面点击取消按钮时,回到的是手机短信功能页面,而不是应用程序,而且,此方法也不能传入默认的短信文本,需要自己手动输入,很可能无法满足需求,所以:

  

我们需要知道的一点是,苹果官方在发送短信功能方面有一个框架,叫做MessageUI,此框架可以解决上述一切问题,而且轻松方便容易实现,下面我们就来介绍一下这个框架的使用:

  

在吃大餐之前,让我们先来几道前菜:

  

导入框架:MessageUI.framework

  

 iOS发送短信功能的实现代码

  

2。导入头文件:#进口& lt; MessageUI/MessageUI.h>

  

3。添加协议:& lt; MFMessageComposeViewControllerDelegate>

  

 iOS发送短信功能的实现代码”> <br/>
  </p>
  <p>添加完协议之后,我们首先想到的就是实现协议方法,可是还不能急,我们还得检测一下设备是否可以发送短信。如下:</p>
  
  <pre类=   - (void) showSMSPicker:发送者(id)   {/* *   您必须检查当前设备是否可以在尝试创建一个MFMessageComposeViewController的实例之前发送短信   。如果设备无法发送短信,   [[MFMessageComposeViewController alloc] init)将返回零。您的应用程式用一个空视图控制器调用   -presentViewController时会导致崩溃。   * */如果([MFMessageComposeViewController canSendText])//设备可以发送电子邮件。   {   (自我displaySMSComposerSheet);   }   其他的//设备不能发送电子邮件。   {   self.feedbackMsg。隐藏=没有;   self.feedbackMsg。文本=@“设备配置为发送SMS。”;   }   }      - (void) displaySMSComposerSheet   {   MFMessageComposeViewController *选择=[[MFMessageComposeViewController alloc] init);   选择器。messageComposeDelegate=自我;//您可以指定一个或多个预配置的收件人。用户有从消息编辑器视图中删除或添加收件人的选项控制器//您可以指定将出现在消息编辑器视图控制器中的初始消息文本。      选择器。收件人=@[@“电话号码”);//发短信的手机号码的数组,数组中是一个即单发,多个即群发。   选择器。来自加州的身体=@“你好!”;//短信主体内容      【自我presentViewController:选择动画:是的完成:零);   }      之前      

检测是否可以发送短信,还是需要有一个触发事件的,代码如下:

        - (void) viewDidLoad {   (超级viewDidLoad);//做任何额外的设置加载视图后,通常从笔尖。      UIButton *按钮=[[UIButton alloc] initWithFrame: CGRectMake (140, 100, 100, 100)];   按钮。写成backgroundColor=[用户界面颜色blackColor];   (按钮setTitle: @”发送短信“forState: UIControlStateNormal);   [按钮setTitleColor:[用户界面颜色whiteColor] forState: UIControlStateNormal);   【按钮addTarget:自我行动:@ selector (showSMSPicker:) forControlEvents: UIControlEventTouchUpInside);   (自我。视图addSubview:按钮);      UILabel * feedbackMsg=[[UILabel alloc] initWithFrame: CGRectMake(300, -20年self.view.frame.size.width 30)];   feedbackMsg。textAlignment=NSTextAlignmentCenter;   (自我。视图addSubview feedbackMsg):;   自我。feedbackMsg=feedbackMsg;   }      之前      

嗯,到了实现协议方法的时候了:

     //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//messageComposeViewController: didFinishWithResult://驳斥了复合界面,当用户点击取消或发送的消息。//继续更新反馈消息字段的结果//操作。//当用户点击取消或发送时,关闭消息组合界面。//收到更新反馈消息字段的结果操作。//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - (void) messageComposeViewController: (MFMessageComposeViewController *)控制器   didFinishWithResult:(MessageComposeResult)的结果   {   self.feedbackMsg。隐藏=没有;//通知用户与界面相关的错误//通知用户与界面相关的错误   开关(结果)   {   案例MessageComposeResultCancelled://取消   self.feedbackMsg。文本=@“结果:短信发送取消”;   打破;   案例MessageComposeResultSent://发送   self.feedbackMsg。文本=@”结果:短信发送”;   打破;   案例MessageComposeResultFailed://失败   self.feedbackMsg。文本=@“结果:短信发送失败”;   打破;   默认值://默认   self.feedbackMsg。文本=@“结果:短信没有发送”;   打破;   }      (自我dismissViewControllerAnimated:是的完成:零);   }   

iOS发送短信功能的实现代码