亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

iOS發(fā)送短信功能的實(shí)現(xiàn)代碼

 更新時(shí)間:2017年08月17日 15:33:31   作者:鳳炎忻  
本篇文章主要介紹了iOS發(fā)送短信功能的實(shí)現(xiàn)代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

發(fā)短信的功能對(duì)于一個(gè)需要渠道擴(kuò)展的APP來說,必不可少。但是,當(dāng)?shù)谝淮慰吹竭@個(gè)需求時(shí),我卻一臉懵逼,因?yàn)橹安]有接觸過,出于對(duì)未知事物的恐懼,被分配做這個(gè)任務(wù)的時(shí)候其實(shí)我是拒絕的,但是,沒辦法誰讓我是小兵一個(gè)呢,只能硬著頭皮強(qiáng)上了。在查閱了一番資料之后,發(fā)現(xiàn)這個(gè)功能做起來其實(shí)非常簡單,不到十分鐘就可以解決。下面我們就來聊一下如何實(shí)現(xiàn)這個(gè)功能。

首先,我們來介紹一個(gè)最為簡單的方法,只需要一行代碼就可以搞定,代碼如下:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"sms://800888"]];

但是,這段代碼雖然簡單,缺陷卻也明顯,這段代碼屬于程序外部調(diào)用,也就是跳出app程序本身,利用手機(jī)短信功能發(fā)送短信,在發(fā)送短信頁面點(diǎn)擊取消按鈕時(shí),回到的是手機(jī)短信功能頁面,而不是app程序。而且,此方法也不能傳入默認(rèn)的短信文本,需要自己手動(dòng)輸入,很可能無法滿足需求。所以:

我們需要知道的一點(diǎn)是,蘋果官方在發(fā)送短信功能方面有一個(gè)框架,叫做MessageUI,此框架可以解決上述一切問題,而且輕松方便容易實(shí)現(xiàn),下面我們就來介紹一下這個(gè)框架的使用:

在吃大餐之前,讓我們先來幾道前菜:

導(dǎo)入框架:MessageUI.framework

2.導(dǎo)入頭文件:#import <MessageUI/MessageUI.h>

3.添加協(xié)議:<MFMessageComposeViewControllerDelegate>


添加完協(xié)議之后,我們首先想到的就是實(shí)現(xiàn)協(xié)議方法,可是還不能急,我們還得檢測(cè)一下設(shè)備是否可以發(fā)送短信。如下:

- (void)showSMSPicker:(id)sender
{
   /**
   您必須檢查當(dāng)前設(shè)備是否可以在嘗試創(chuàng)建一個(gè)MFMessageComposeViewController的實(shí)例之前發(fā)送短信
   。 如果設(shè)備無法發(fā)送短信,
   [[MFMessageComposeViewController alloc] init]將返回nil。 您的應(yīng)用程式用一個(gè)空視圖控制器調(diào)用
   -presentViewController時(shí)會(huì)導(dǎo)致崩潰。
   **/
  if ([MFMessageComposeViewController canSendText])
    // The device can send email.
  {
    [self displaySMSComposerSheet];
  }
  else
    // The device can not send email.
  {
    self.feedbackMsg.hidden = NO;
    self.feedbackMsg.text = @"Device not configured to send SMS.";
  }
}

- (void)displaySMSComposerSheet
{
  MFMessageComposeViewController *picker = [[MFMessageComposeViewController alloc] init];
  picker.messageComposeDelegate = self;
  
  //您可以指定一個(gè)或多個(gè)預(yù)配置的收件人。 用戶有從消息編輯器視圖中刪除或添加收件人的選項(xiàng)控制器
  //您可以指定將出現(xiàn)在消息編輯器視圖控制器中的初始消息文本。
  
  picker.recipients = @[@"Phone number here"];//發(fā)短信的手機(jī)號(hào)碼的數(shù)組,數(shù)組中是一個(gè)即單發(fā),多個(gè)即群發(fā)。
  picker.body    = @"Hello from California!"; //短信主體內(nèi)容
  
  [self presentViewController:picker animated:YES completion:NULL];
}

檢測(cè)是否可以發(fā)送短信,還是需要有一個(gè)觸發(fā)事件的,代碼如下:

- (void)viewDidLoad {
  [super viewDidLoad];
  // Do any additional setup after loading the view, typically from a nib.
  
  UIButton * button = [[UIButton alloc]initWithFrame:CGRectMake(140, 100, 100, 100)];
  button.backgroundColor = [UIColor blackColor];
  [button setTitle:@"發(fā)送短信" forState:UIControlStateNormal];
  [button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
  [button addTarget:self action:@selector(showSMSPicker:) forControlEvents:UIControlEventTouchUpInside];
  [self.view addSubview:button];
  
  UILabel * feedbackMsg = [[UILabel alloc]initWithFrame:CGRectMake(10, 300, self.view.frame.size.width -20, 30)];
  feedbackMsg.textAlignment = NSTextAlignmentCenter;
  [self.view addSubview:feedbackMsg];
  self.feedbackMsg = feedbackMsg;
}

嗯,到了實(shí)現(xiàn)協(xié)議方法的時(shí)候了:

// -------------------------------------------------------------------------------
// messageComposeViewController:didFinishWithResult:
// Dismisses the message composition interface when users tap Cancel or Send.
// Proceeds to update the feedback message field with the result of the
// operation.
// 當(dāng)用戶點(diǎn)擊取消或發(fā)送時(shí),關(guān)閉消息組合界面。
// 收到更新反饋消息字段的結(jié)果操作。
// -------------------------------------------------------------------------------
- (void)messageComposeViewController:(MFMessageComposeViewController *)controller 
       didFinishWithResult:(MessageComposeResult)result
{
  self.feedbackMsg.hidden = NO;
  // Notifies users about errors associated with the interface
  // 通知用戶與界面相關(guān)的錯(cuò)誤
  switch (result)
  {
    case MessageComposeResultCancelled: //取消
      self.feedbackMsg.text = @"Result: SMS sending canceled";
      break;
    case MessageComposeResultSent: //發(fā)送
      self.feedbackMsg.text = @"Result: SMS sent";
      break;
    case MessageComposeResultFailed: //失敗
      self.feedbackMsg.text = @"Result: SMS sending failed";
      break;
    default: //默認(rèn)
      self.feedbackMsg.text = @"Result: SMS not sent";
      break;
  }
  
  [self dismissViewControllerAnimated:YES completion:NULL];
}

Demo運(yùn)行結(jié)果如下:



至此,我們的發(fā)送短信功能就實(shí)現(xiàn)了,是不是很簡單!但是,當(dāng)年也是慫過啊,所以,特寫此文,以紀(jì)念當(dāng)年慫過的日子。

參考文章

官方文檔

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 使用Reachability類判斷iOS設(shè)備的當(dāng)前網(wǎng)絡(luò)連接類型

    使用Reachability類判斷iOS設(shè)備的當(dāng)前網(wǎng)絡(luò)連接類型

    這篇文章主要介紹了使用Reachability類判斷iOS設(shè)備的當(dāng)前網(wǎng)絡(luò)連接類型,這里開發(fā)語言為傳統(tǒng)的Objectice-C,需要的朋友可以參考下
    2016-02-02
  • IOS 開發(fā)自定義條形ProgressView的實(shí)例

    IOS 開發(fā)自定義條形ProgressView的實(shí)例

    這篇文章主要介紹了IOS 開發(fā)自定義條形ProgressView的實(shí)例的相關(guān)資料,希望開發(fā)自己的條形進(jìn)度條的朋友可以參考下
    2016-10-10
  • iOS指紋登錄(TouchID)集成方案詳解

    iOS指紋登錄(TouchID)集成方案詳解

    這篇文章主要為大家詳細(xì)介紹了iOS指紋登錄TouchID的集成方案,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • iOS實(shí)現(xiàn)不規(guī)則Button點(diǎn)擊效果實(shí)例代碼

    iOS實(shí)現(xiàn)不規(guī)則Button點(diǎn)擊效果實(shí)例代碼

    這篇文章主要給大家介紹了關(guān)于iOS實(shí)現(xiàn)不規(guī)則Button點(diǎn)擊的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)各位iOS開發(fā)者們具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • 詳談iPhoneX截圖如何帶

    詳談iPhoneX截圖如何帶

    下面小編就為大家分享一篇詳談iPhoneX截圖如何帶"劉海"和圓角,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • iOS如何用100行代碼實(shí)現(xiàn)簡單的抽屜效果

    iOS如何用100行代碼實(shí)現(xiàn)簡單的抽屜效果

    最近在網(wǎng)上看到一些抽屜效果,看起來很酷!很眩!但是,下不下來看代碼, 所以決定還是自己寫吧!!這篇文章通過近100行的代碼就實(shí)現(xiàn)了簡單的抽屜效果,有需要的朋友們可以參考借鑒,下面來一起看看吧。
    2016-10-10
  • IOS安裝包比Android容量大的原因

    IOS安裝包比Android容量大的原因

    這篇文章主要介紹了為什么IOS安裝包比Android容量大的原因,如果你是一個(gè)IOS或者安卓開發(fā)者,學(xué)習(xí)下相關(guān)知識(shí)吧。
    2018-02-02
  • iOS WKWebview 白屏檢測(cè)實(shí)現(xiàn)的示例

    iOS WKWebview 白屏檢測(cè)實(shí)現(xiàn)的示例

    這篇文章主要介紹了iOS WKWebview 白屏檢測(cè)實(shí)現(xiàn)的示例,幫助大家更好的進(jìn)行ios開發(fā),感興趣的朋友可以了解下
    2020-10-10
  • Flutter?模型動(dòng)態(tài)化賦值研究分析

    Flutter?模型動(dòng)態(tài)化賦值研究分析

    這篇文章主要為大家介紹了Flutter?模型動(dòng)態(tài)化賦值研究分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • iOS開發(fā)frame和bounds使用示例詳解

    iOS開發(fā)frame和bounds使用示例詳解

    這篇文章主要為大家介紹了iOS開發(fā)frame和bounds使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09

最新評(píng)論