你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS- 如何將應用集成發短信、發郵件、打電話

iOS- 如何將應用集成發短信、發郵件、打電話

編輯:IOS開發綜合
今天把APP裡常用小功能 例如發短信、發郵件、打電話。   全部拿出來簡單說說它們的實現思路。       1.發短信                                 實現打電話的功能,主要二種方法,下面我就分別說說它們的優缺點。   1.1.發短信(1)——URL                                      // 直接撥號,撥號完成後會停留在通話記錄中   1、方法: NSURL *url = [NSURL URLWithString:@"sms://10010"];   [[UIApplication sharedApplication] openURL:url];   2、優點: –簡單 3、缺點: –不能指定短信內容,而且不能自動回到原應用   1.2發短信(2)——MessageUI框架                                如果自定義短信,需要使用一個框架MessageUI。   優點    1. 從應用出去能回來    2. 可以多人    3. 可以自定義消息,消息支持HTML格式的       而且如果在蘋果系統中,如果彼此的手機都是iOS設備,並且開通了iMessage功能,彼此之間的短信    是走網絡通道,而不走運營商的通道!   復制代碼 - (void)msg2 {     // 判斷用戶設備能否發送短信     if (![MFMessageComposeViewController canSendText]) {         return;     }          // 1. 實例化一個控制器     MFMessageComposeViewController *controller = [[MFMessageComposeViewController alloc] init];          // 2. 設置短信內容     // 1) 收件人     controller.recipients = @[@"10010", @"10086"];          // 2) 短信內容     controller.body = @"給您拜個晚年,祝您晚年快樂!";          // 3) 設置代理     controller.messageComposeDelegate = self;       // 3. 顯示短信控制器     [self presentViewController:controller animated:YES completion:nil]; } 復制代碼     記得發完短信記得調用代理方法關閉窗口   復制代碼 #pragma mark 短信控制器代理方法 /**  短信發送結果    MessageComposeResultCancelled,     取消  MessageComposeResultSent,          發送  MessageComposeResultFailed         失敗  */ - (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result {     NSLog(@"%d", result);          // 在面向對象程序開發中,有一個原則,誰申請,誰釋放!     // *** 此方法也可以正常工作,因為系統會將關閉消息發送給self //    [controller dismissViewControllerAnimated:YES completion:nil];          // 應該用這個!!!     [self dismissViewControllerAnimated:YES completion:nil]; } 復制代碼     2.發郵件                                  復制代碼 - (void)sendmail {     // 1. 先判斷能否發送郵件     if (![MFMailComposeViewController canSendMail]) {         // 提示用戶設置郵箱         return;     }          // 2. 實例化郵件控制器,准備發送郵件     MFMailComposeViewController *controller = [[MFMailComposeViewController alloc] init];          // 1) 主題 xxx的工作報告     [controller setSubject:@"我的工作報告"];     // 2) 收件人     [controller setToRecipients:@[@"[email protected]"]];          // 3) cc 抄送     // 4) bcc 密送(偷偷地告訴,打個小報告)     // 5) 正文     [controller setMessageBody:@"這是我的<font color=\"blue\">工作報告</font>,請審閱!<BR />P.S. 我的頭像牛X嗎?" isHTML:YES];          // 6) 附件     UIImage *image = [UIImage imageNamed:@"頭像1.png"];     NSData *imageData = UIImagePNGRepresentation(image);     // 1> 附件的二進制數據     // 2> MIMEType 使用什麼應用程序打開附件     // 3> 收件人接收時看到的文件名稱     // 可以添加多個附件     [controller addAttachmentData:imageData mimeType:@"image/png" fileName:@"頭像.png"];          // 7) 設置代理     [controller setMailComposeDelegate:self];          // 顯示控制器     [self presentViewController:controller animated:YES completion:nil]; } 復制代碼     同樣要記得發完郵件記得調用代理方法關閉窗口   復制代碼 #pragma mark - 郵件代理方法 /**  MFMailComposeResultCancelled,      取消  MFMailComposeResultSaved,          保存郵件  MFMailComposeResultSent,           已經發送  MFMailComposeResultFailed          發送失敗  */ - (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error {     // 根據不同狀態提示用戶     NSLog(@"%d", result);          [self dismissViewControllerAnimated:YES completion:nil]; } 復制代碼     3.打電話                                   打電話有三種方式可以實現,優缺點也各不同   3.1.打電話不回引用                                        復制代碼 1 - (void)tel1 2 { 3     // 直接撥號,撥號完成後會停留在通話記錄中 4     NSURL *url = [NSURL URLWithString:@"tel://10010"]; 5      6     [[UIApplication sharedApplication] openURL:url]; 7 } 復制代碼 3.2.出去打電話然後回來                                      復制代碼 - (void)tel2 {     // 但是:telprompt協議屬於蘋果的私有協議,一旦程序中使用了此協議,程序無法上架     // 針對越獄的機器開發的系統,可以使用此協議     NSURL *url = [NSURL URLWithString:@"telprompt://10010"];          [[UIApplication sharedApplication] openURL:url]; } 復制代碼     3.3借助UIWebView打電話(會回來)                               一般都是用這種,解決了不越獄的問題。   復制代碼 - (void)tel3 {     // 提示:不要將webView添加到self.view,如果添加會遮擋原有的視圖     // 懶加載     if (_webView == nil) {         _webView = [[UIWebView alloc] init];     }     NSLog(@"%p", _webView);      //    _webView = [[UIWebView alloc] initWithFrame:self.view.bounds]; //    [self.view addSubview:_webView];          NSURL *url = [NSURL URLWithString:@"tel://10010"];     NSURLRequest *request = [NSURLRequest requestWithURL:url];          [_webView loadRequest:request]; }                                       
  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved