IOS程序内发短信
iOS4.0新加入了MFMessageComposeViewCont
roller和MFMessageComposeViewCont
rollerDelegate,
提供了发送短信的接口,可以像发送邮件那样不用跳出程序来发送短信. 介绍可参阅Message UIFramework Reference
一些笔记:
MFMessageComposeViewCont roller
提供了操作界面
使用 前必须检查canSendText方法,若返回NO则不应将这个 controller 展现出来,而应该 提示 用户不支持发送短信功能.
界面不能自行定制
要发送的短信的内容(body)和收件人(recipients)在展现这个controller前需初始化好,展现了之后短信内容不能通过程序来进行修改.不过用户仍然可以手工修改短信内容和选择收件人
用 户点了发送或者取消,或者发送失败时,MFMessageComposeViewCont
rollerDelegate 的– messageComposeViewContro
ller:didFinishWithResult:方法都能得到通知,在这里进行相应的处理
若在iOS3.0上运行的话,会提示dyld: Symbol not found: _OBJC_CLASS_$_MFMessageComposeViewCont
roller .解决方案:
MessageUI.framework的引入类型应选择weak(在target -> Get Info -> General -> Linked Libraries ->
MessageUI.framework
-> Type 里修改)
不要在.h文件里直接import MessageUI/MFMessageComposeViewCont
roller.h,改为
import <MessageUI/MessageUI.h>
主要 代码 :
导入框架: MessageUI.framework
#import
<MessageUI/MessageUI.h>
添加协议: <MFMessageComposeViewCont rollerDelegate>
#pragma mark -
#pragma mark MFMessageComposeViewCont
roller
- ( void ) alertWithTitle:( NSString
*)
title
msg:(
NSString
*)msg {
UIAlertView
*alert = [[
UIAlertView
alloc
]
initWithTitle
:
title
message :msg
delegate
:
nil
cancelButtonTitle:@"确定“
otherButtonTitles
:
nil
];
[alert
show
];
[alert
release
];
}
- ( void )displaySMS:( NSString
*)message
{
MFMessageComposeViewCont
roller
*picker = [[
MFMessageComposeViewCont
roller
alloc
]
init
];
picker. messageComposeDelegate =
self
;
picker. navigationBar . tintColor = [ UIColor blackColor ];
picker.
body
= message;
// 默认
信息内容
// 默认收件人(可多个)
//picker.recipients = [NSArray arrayWithObject:@"12345678901", nil];
[ sel presentModalViewControll
er
:picker
animated
:
YES
];
[picker
release
];
}
- ( void )sendsms:( NSString
*)message {
Class messageClass = ( NSClassFromString ( @"MFMessageComposeViewCont
roller"
));
NSLog ( @"can send SMS [%d]" , [messageClass
canSendText
]);
if
(messageClass !=
nil
) {
if
([messageClass
canSendText
]) {
[
self
displaySMS
:message];
}
else
{
[
self
alertWithTitle
:
nil
msg
:
@"
设备没有短信功能
"
];
}
}
else
{
[
self
alertWithTitle
:
nil
msg
:
@"iOS版本过低,iOS4.0以上才支持程序内发送短信"
];
}
}
- ( void )messageComposeViewContro
ller:(
MFMessageComposeViewCont roller
*)controller
didFinishWithResult:(
MessageComposeResult
)result {
NSString *msg;
switch
(result) {
case
MessageComposeResultCanc
elled
:
msg =
@"
发送取消
"
;
break
;
case
MessageComposeResultSent
:
msg =
@"
发送成功
"
;
[ self
alertWithTitle
:
nil
msg
:msg];
break
;
case
MessageComposeResultFail
ed
:
msg =
@"
发送失败
"
;
[ self
alertWithTitle
:
nil
msg
:msg];
break
;
default
:
break
;
}
NSLog ( @"发送结果:%@" , msg);
[ self dismissModalViewControll
erAnimated
:
YES
];
iOS4.0新加入了MFMessageComposeViewCont
提供了发送短信的接口,可以像发送邮件那样不用跳出程序来发送短信. 介绍可参阅Message UIFramework Reference
一些笔记:
MFMessageComposeViewCont
提供了操作界面
使用 前必须检查canSendText方法,若返回NO则不应将这个 controller 展现出来,而应该 提示 用户不支持发送短信功能.
界面不能自行定制
要发送的短信的内容(body)和收件人(recipients)在展现这个controller前需初始化好,展现了之后短信内容不能通过程序来进行修改.不过用户仍然可以手工修改短信内容和选择收件人
用 户点了发送或者取消,或者发送失败时,MFMessageComposeViewCont
若在iOS3.0上运行的话,会提示dyld: Symbol not found: _OBJC_CLASS_$_MFMessageComposeViewCont
MessageUI.framework的引入类型应选择weak(在target -> Get Info -> General -> Linked Libraries ->
不要在.h文件里直接import MessageUI/MFMessageComposeViewCont
主要 代码 :
导入框架: MessageUI.framework
#import
添加协议: <MFMessageComposeViewCont
#pragma mark -
#pragma mark MFMessageComposeViewCont
- ( void ) alertWithTitle:( NSString
message :msg
}
- ( void )displaySMS:( NSString
picker. messageComposeDelegate =
picker. navigationBar . tintColor = [ UIColor blackColor ];
[ sel presentModalViewControll
}
- ( void )sendsms:( NSString
Class messageClass = ( NSClassFromString ( @"MFMessageComposeViewCont
NSLog ( @"can send SMS [%d]" , [messageClass
}
- ( void )messageComposeViewContro
NSString *msg;
switch
case
case
[ self
case
[ self
}
NSLog ( @"发送结果:%@" , msg);
[ self dismissModalViewControll
}
转载出处:http://blog.sina.com.cn/s/blog_677089db0100s2mv.html