文档章节

IOS程序内发短信 MFMessageComposeViewController

 杨勇汉
发布于 2015/02/01 14:04
字数 527
阅读 16
收藏 0

文章转载地址:http://www.headsky.org/?p=63

iOS4.0新加入了MFMessageComposeViewController和MFMessageComposeViewControllerDelegate,提供了发送短信的接口,可以像发送邮件那样不用跳出程序来发送短信. 介绍可参阅Message UI
Framework Reference

一些笔记:

MFMessageComposeViewController

  • 提供了操作界面
  • 使用前必须检查canSendText方法,若返回NO则不应将这个controller展现出来,而应该提示用户不支持发送短信功能.
  • 界面不能自行定制
  • 要发送的短信的内容(body)和收件人(recipients)在展现这个controller前需初始化好,展现了之后短信内容不能通过程序来进行修改.不过用户仍然可以手工修改短信内容和选择收件人
  • 用户点了发送或者取消,或者发送失败时,MFMessageComposeViewControllerDelegate 的– messageComposeViewController:didFinishWithResult:方法都能得到通知,在这里进行相应的处理

若在iOS3.0上运行的话,会提示dyld: Symbol not found: _OBJC_CLASS_$_MFMessageComposeViewController .解决方案:

  1. MessageUI.framework的引入类型应选择weak(在target -> Get Info -> General -> Linked Libraries -> MessageUI.framework -> Type 里修改)
  2. 不要在.h文件里直接import MessageUI/MFMessageComposeViewController.h,改为import <MessageUI/MessageUI.h>

#pragma mark -
#pragma mark SMS

-(IBAction)showSMSPicker:(id)sender {
   //    The MFMessageComposeViewController class is only available in iPhone OS 4.0 or later.
   //    So, we must verify the existence of the above class and log an error message for devices
   //        running earlier versions of the iPhone OS. Set feedbackMsg if device doesn’t support
   //        MFMessageComposeViewController API.
   Class messageClass = (NSClassFromString(@”MFMessageComposeViewController”));

   if (messageClass != nil) {
       // Check whether the current device is configured for sending SMS messages
       if ([messageClass canSendText]) {
           [self displaySMSComposerSheet];
       }
       else {
           [UIAlertView quickAlertWithTitle:@"设备没有短信功能" messageTitle:nil dismissTitle:@"关闭"];
       }
   }
   else {
       [UIAlertView quickAlertWithTitle:@"iOS版本过低,iOS4.0以上才支持程序内发送短信" messageTitle:nil dismissTitle:@"关闭"];
   }
}

-(void)displaySMSComposerSheet
{
   MFMessageComposeViewController *picker = [[MFMessageComposeViewController alloc] init];
   picker.messageComposeDelegate = self;

   NSMutableString* absUrl = [[NSMutableString alloc] initWithString:web.request.URL.absoluteString];
   [absUrl replaceOccurrencesOfString:@"http://i.aizheke.com" withString:@"http://m.aizheke.com" options:NSCaseInsensitiveSearch range:NSMakeRange(0, [absUrl length])];

   picker.body=[NSString stringWithFormat:@"我在爱折客上看到:%@ 可能对你有用,推荐给你!link:%@"
                                       ,[web stringByEvaluatingJavaScriptFromString:@"document.title"]
                                       ,absUrl];
   [absUrl release];
   [self presentModalViewController:picker animated:YES];
   [picker release];
}

- (void)messageComposeViewController:(MFMessageComposeViewController *)controller
                didFinishWithResult:(MessageComposeResult)result {

   switch (result)
   {
       case MessageComposeResultCancelled:
           LOG_EXPR(@”Result: SMS sending canceled”);
           break;
       case MessageComposeResultSent:
           LOG_EXPR(@”Result: SMS sent”);
           break;
       case MessageComposeResultFailed:
           [UIAlertView quickAlertWithTitle:@"短信发送失败" messageTitle:nil dismissTitle:@"关闭"];
           break;
       default:
           LOG_EXPR(@”Result: SMS not sent”);
           break;
   }
   [self dismissModalViewControllerAnimated:YES];
}


本文转载自:http://blog.csdn.net/rhljiayou/article/details/7929813

粉丝 2
博文 69
码字总数 0
作品 0
东城
私信 提问
iOS—打电话、发短信

电话、短信是手机的基础功能,iOS中提供了接口,让我们调用。这篇文章简单的介绍一下iOS的打电话、发短信在程序中怎么调用。 1、打电话 [cpp] view plaincopyprint? [[UIApplication sharedA...

-Man
2015/11/19
58
0
IOS 开发,调用打电话,发短信,打开网址

IOS 开发,调用打电话,发短信,打开网址 1、调用 自带mail [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"mailto://admin@hzlzh.com"]]; 2、调用 电话phone [[UIApp......

卢西安
2012/12/30
2K
2
IOS程序内发短信 MFMessageComposeViewController

文章转载地址:http://www.headsky.org/?p=63 iOS4.0新加入了MFMessageComposeViewController和MFMessageComposeViewControllerDelegate,提供了发送短信的接口,可以像发送邮件那样不用跳出程...

长平狐
2013/12/25
482
0
Ionic系列——调用系统电话

1、需求描述 在ionic项目用调用手机的打电话功能。开始还想找cordova和ng-cordova的插件那,现在H5实现起来特别方便。 2、准备 在cordova中所有的URL Schemes 都是服从于白名单的,所以要现在...

龙马行空
2015/08/14
4.9K
0
iOS 7 或存安全隐患 Siri 可绕过锁屏密码

网易科技讯 北京时间9月25日消息,据国外媒体报道,一家名为ACB Cases的网站刚刚刊登一片博文,表示iOS 7存在巨大的安全隐患,用户可以通过Siri语音助手绕过锁屏密码,实现查看Facebook,拨打...

oschina
2013/09/25
2.2K
7

没有更多内容

加载失败,请刷新页面

加载更多

64.监控平台介绍 安装zabbix 忘记admin密码

19.1 Linux监控平台介绍 19.2 zabbix监控介绍 19.3/19.4/19.6 安装zabbix 19.5 忘记Admin密码如何做 19.1 Linux监控平台介绍: 常见开源监控软件 ~1.cacti、nagios、zabbix、smokeping、ope...

oschina130111
今天
13
0
当餐饮遇上大数据,嗯真香!

之前去开了一场会,主题是「餐饮领袖新零售峰会」。认真听完了餐饮前辈和新秀们的分享,觉得获益匪浅,把脑子里的核心纪要整理了一下,今天和大家做一个简单的分享,欢迎感兴趣的小伙伴一起交...

数澜科技
今天
7
0
DNS-over-HTTPS 的下一代是 DNS ON BLOCKCHAIN

本文作者:PETER LAI ,是 Diode 的区块链工程师。在进入软件开发领域之前,他主要是在做工商管理相关工作。Peter Lai 也是一位活跃的开源贡献者。目前,他正在与 Diode 团队一起开发基于区块...

红薯
今天
10
0
CC攻击带来的危害我们该如何防御?

随着网络的发展带给我们很多的便利,但是同时也带给我们一些网站安全问题,网络攻击就是常见的网站安全问题。其中作为站长最常见的就是CC攻击,CC攻击是网络攻击方式的一种,是一种比较常见的...

云漫网络Ruan
今天
12
0
实验分析性专业硕士提纲撰写要点

为什么您需要研究论文的提纲? 首先当您进行研究时,您需要聚集许多信息和想法,研究论文提纲可以较好地组织你的想法, 了解您研究资料的流畅度和程度。确保你写作时不会错过任何重要资料以此...

论文辅导员
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部