之前已試過寄送信件 (Send Mail),這次則要實作傳送簡訊 (Send Message),方式幾乎一模一樣!
先在專案中加入框架:MessageUI Framework。接著引入.h檔:MessageUI/MessageUI.h。記得遵從協定MFMessageComposeViewControllerDelegate。
/**
Theme: Send Message
IDE: Xcode 5
Language: Objective C
Date: 103/05/31
Author: HappyMan
Blog: https://cg2010studio.wordpress.com/
*/
-(IBAction)messageButtonClicked:(UIButton *)button
{
MFMessageComposeViewController *mcvc = [[MFMessageComposeViewController alloc] init];
// 判斷裝置是否在可傳送訊息的狀態
if([MFMessageComposeViewController canSendText]) {
// 設定SMS訊息內容
mcvc.body = @"嗨~猜猜我是誰?我是快樂測試人!";
// 設定接傳送對象的號碼
mcvc.recipients = [NSArray arrayWithObjects:@"0912345678",nil];
// 設定代理
mcvc.messageComposeDelegate = self;
// 顯示controller的畫面
[self presentViewController:mcvc animated:YES completion:nil];
}
else {
NSLog(@"此設備無法發送簡訊⋯⋯");
}
}
#pragma mark - MFMessageComposeViewControllerDelegate
-(void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result
{
NSLog(@"%@", controller.recipients);
switch (result) {
case MessageComposeResultSent:
// 訊息傳送成功
NSLog(@"訊息傳送成功⋯⋯");
break;
case MessageComposeResultFailed:
// 訊息傳送失敗
NSLog(@"訊息傳送失敗⋯⋯");
break;
case MessageComposeResultCancelled:
// 訊息被使用者取消傳送
NSLog(@"訊息被使用者取消傳送⋯⋯");
break;
default:
break;
}
[self dismissViewControllerAnimated:YES completion:nil];
}
編譯執行後點擊按鈕,就會跳出傳送訊息的畫面!
原本想要截取使用者輸入的電話號碼,可惜Apple已防堵第三方獲取使用者資訊⋯⋯無法在傳送簡訊和寄送信件獲取任何使用者輸入的資料,這也就是為何要叫出另一個view controller,若可以自製畫面讓使用者輸入,那就好了?嘿嘿~
參考:Getting the Recepients list in MFMailComposeViewController、MFMessageComposeViewController 的基本使用方法、iOS Programming 101: How To Send SMS Text Message in iPhone Apps。

Comments on: "[iOS] 傳送簡訊 (Send Message)" (2)
功力超強…
讚讚
Apple真的超強,為了保護使用者的權益,想得很周到! 😀
讚讚