MFMessageComposeViewController在iOS程序內實現短信發送

一、用iOS URL Scheme實現

代碼:
NSString *stringURL = @"sms:+12345678901"; // phone number
NSURL *url = [NSURL URLWithString:stringURL];
[[UIApplication sharedApplication] openURL:url];

但是 URL Scheme不支持 message body,如果要加入body的話就要用MFMessageComposeViewController了。

二、MFMessageComposeViewController實現

1.在.h文件中,導入框架<MessageUI/MessageUI.h>,並添加協議<MFMessageComposeViewControllerDelegate>
代碼:

-(void)sendSMSBtnClick:(UIButton *)sender{    

    //必須要檢測設備是否能發送短信

    if( [MFMessageComposeViewController canSendText] )

    {

        MFMessageComposeViewController * controller = [[MFMessageComposeViewController alloc] init]; //autorelease];

        controller.recipients = [NSArray arrayWithObject:@"186********",nil];//收件人可以是多個

        controller.body = @"信息內容";

        controller.messageComposeDelegate = self;

        [self presentModalViewController:controller animated:YES];

//        [[[[controller viewControllers] lastObject] navigationItem] setTitle:@"SomethingElse"];//修改短信界面標題

        [controller release];

    }

    else

    {

        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示信息"

                                                        message:@"該設備不支持短信功能"

                                                       delegate:self

                                              cancelButtonTitle:nil

                                              otherButtonTitles:@"確定", nil];

        [alert show];

        [alert release];

    }   

}

//MFMessageComposeViewControllerDelegate

- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result

{

    [controller dismissModalViewControllerAnimated:NO];//關鍵的一句   不能爲YES

    switch ( result ) {

        case MessageComposeResultCancelled:

            NSLog(@"Result: SMS sending canceled");

            break;

        case MessageComposeResultSent:

            NSLog(@"Result: SMS sent");

            break;

        case MessageComposeResultFailed:

            [[UIAlertView alloc]initWithTitle:@"短信發送失敗" message:@"短信發送失敗" delegate:nil cancelButtonTitle:YES otherButtonTitles:nil, nil];

            break;

        default:

            break;

    }

    [self dismissModalViewControllerAnimated:YES];

}

此方法雖然提供了操作界面,但是短信內容和收件人在不能在界面自行定義

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章