iOS短信,郵件,電話功能的開發


#1.發短信
實現打電話的功能,主要二種方法,下面我就分別說說它們的優缺點。web

##1.1.發短信(1)——URL
// 直接撥號,撥號完成後會停留在通話記錄中網絡

###一、方法:
NSURL *url = [NSURL URLWithString:@」sms://10010″];框架

[[UIApplication sharedApplication] openURL:url];url

###二、優勢:
–簡單spa

###三、缺點:
–不能指定短信內容,並且不能自動回到原應用代理

##1.2發短信(2)——MessageUI框架
若是自定義短信,須要使用一個框架MessageUI。code

###優勢orm

  1. 從應用出去能回來對象

  2. 能夠多人ip

  3. 能夠自定義消息,消息支持HTML格式的

並且若是在蘋果系統中,若是彼此的手機都是iOS設備,而且開通了iMessage功能,彼此之間的短信

是走網絡通道,而不走運營商的通道!

{

// 判斷用戶設備可否發送短信

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];

}

記得發完短信調用代理方法關閉窗口

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

#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:@[@"4800607@gmail.com"]];

 

// 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];

}

一樣記得發完郵件調用代理方法關閉窗口

3

4

5

6

7

8

9

10

11

12

13

14

15

#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

2

3

4

5

6

7

8

1 - (void)tel1

2 {

3 // 直接撥號,撥號完成後會停留在通話記錄中

4 NSURL *url = [NSURL URLWithString:@"tel://10010"];

5

6 [[UIApplication sharedApplication] openURL:url];

7 }

 

##3.2.出去打電話而後回來

1

2

3

4

5

6

7

8

9

- (void)tel2

{

// 可是:telprompt協議屬於蘋果的私有協議,一旦程序中使用了此協議,程序沒法上架

// 針對越獄的機器開發的系統,可使用此協議

NSURL *url = [NSURL URLWithString:@"telprompt://10010"];

 

[[UIApplication sharedApplication] openURL:url];

}

 

##3.3藉助UIWebView打電話(會回來)
通常都是用這種,解決了不越獄的問題。

Objective-C

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

- (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];

}

相關文章
相關標籤/搜索