今天要实现一个功能,向通讯录中的联系人发送短信,在短信中附带 app 的下载地址,来推广 app。需要在 app 中调用系统的短信界面。如何在 app 中获取手机通讯的联系人,这个功能在下一篇文章中会分享给大家。下面就说下怎么调用系统的短信。
第一步:需要在项目中添加需要使用的库。
第二步:在使用到短信的类的.m 文件中 添加头文件 #import <MessageUI/MessageUI.h>
第三步:遵守协议 MFMessageComposeViewControllerDelegate
第四步:实现代理方法
#pragma mark - MFMessageComposeViewControllerDelegate
- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result
{
[self dismissViewControllerAnimated:YES completion:nil];
switch (result) {
case MessageComposeResultSent:
//短信发送成功
NSLog(@"短信发送成功");
break;
case MessageComposeResultFailed:
//短信发送失败
NSLog(@"短信发送失败");
break;
case MessageComposeResultCancelled:
//用户取消发送
NSLog(@"用户取消发送");
break;
default:
break;
}
}
第五步:自己定义一个发短信的方法
// 发送短信 需要注意的是: phones 是一个数组,数组中只有一个元素的时候是发送给一个人,当数组中有多个元素的时候是群发的功能
-(void)showMessageView:(NSArray *)phones body:(NSString *)body
{
if( [MFMessageComposeViewController canSendText] )
{
MFMessageComposeViewController * controller = [[MFMessageComposeViewController alloc] init];
controller.recipients = phones;
controller.navigationBar.tintColor = [UIColor whiteColor];
controller.body = body;
controller.messageComposeDelegate = self;
//之所以用 modal 的方式显示系统短信界面,是因为系统短信界面本身就是带有导航控制器的,如果你用导航控制器 push 系统短信界面会导致程序奔溃
[self presentViewController:controller animated:YES completion:nil];
}else{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示信息"
message:@"该设备不支持短信功能"
delegate:nil
cancelButtonTitle:@"确定"
otherButtonTitles:nil, nil];
[alert show];
}
}
第六步:在你需要调用方法的地方调用即可