iOS调用系统的发短信功能可以分为两种:1,程序外调用系统发短信。2,程序内调用系统发短信。第二种的好处是用户发短信之后还可以回到app。这对app来说非常重要。
程序外调用系统发短信
这个方法其实很简单,直接调用openURL即可:
?
1 | [[UIApplication sharedApplication]openURL:[NSURL URLWithString:@sms://13888888888]]; |
程序内调用系统发短信
1)导入MessageUI.framework,并引入头文件:
?
1 | #import <messageui messageui.h=""></messageui> |
2)实现代理方法MFMessageComposeViewControllerDelegate
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | -(void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result { [self dismissViewControllerAnimated:YES completion:nil]; switch (result) { case MessageComposeResultSent: //信息传送成功
break; case MessageComposeResultFailed: //信息传送失败
break; case MessageComposeResultCancelled: //信息被用户取消传送
break; default: break; } } |
3)发送短信
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | -(void)showMessageView:(NSArray *)phones title:(NSString *)title body:(NSString *)body { if( [MFMessageComposeViewController canSendText] ) { MFMessageComposeViewController * controller = [[MFMessageComposeViewController alloc] init]; controller.recipients = phones; controller.navigationBar.tintColor = [UIColor redColor]; controller.body = body; controller.messageComposeDelegate = self; [self presentViewController:controller animated:YES completion:nil]; [[[[controller viewControllers] lastObject] navigationItem] setTitle:title];//修改短信界面标题 } else { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@提示信息 message:@该设备不支持短信功能 delegate:nil cancelButtonTitle:@确定 otherButtonTitles:nil, nil]; [alert show]; } } |
参数phones:发短信的手机号码的数组,数组中是一个即单发,多个即群发。
4)调用发短信的方法
?
1 | [self showMessageView:[NSArray arrayWithObjects:@13888888888,@13999999999, nil] title:@test body:@你是土豪么,么么哒]; |