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:@你是土豪么,么么哒];
|