iPhone发短信 MFMessageComposeViewController

IOS程序内发短信

iOS4.0新加入了MFMessageComposeViewCont roller和MFMessageComposeViewCont rollerDelegate,
提供了发送短信的接口,可以像发送邮件那样不用跳出程序来发送短信. 介绍可参阅Message UIFramework Reference
一些笔记:

MFMessageComposeViewController

提供了操作界面
使用 前必须检查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>
添加协议:
<MFMessageComposeViewControllerDelegate>



#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:( MFMessageComposeViewController   *)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 ]; 

}

转载出处:http://blog.sina.com.cn/s/blog_677089db0100s2mv.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值