iOS中发送短信/发送邮件的实现 韩俊强的博客
需要引入框架:
MessageUI.framework
布局如下:
短信和邮件:
#import "ViewController.h" #import <MessageUI/MessageUI.h> @interface ViewController ()<MFMessageComposeViewControllerDelegate,MFMailComposeViewControllerDelegate>//遵循协议 @end @implementation ViewController
短信功能:
//短信功能
- (IBAction)messageButtonAction:(UIButton *)sender {
#pragma mark 程序外发送短信
/*
//定义打开短信的url, 关键字: sms:
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"sms://%@",@"10086"]];
//判断程序是否可以调用打开短信功能
if ([[UIApplication sharedApplication] canOpenURL:url]) {
[[UIApplication sharedApplication] openURL:url];
}else{
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"提示" message:@"您的设备不支持此短信功能" delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];
[alert show];
}
*/
/*
用openURL来打开程序中的短信功能, 需要用到关键字: "sms:", 后面加上要发送的电话就可以了;
缺点:1.这个方法会跳出我们正在运行的程序,打开系统的短信界面, 但当用户关闭短信后, 无法回到程序.
2.这个方法我们只能定义要发送的手机号, 无法编辑发送的短信内容;
*/
}
#pragma mark 程序内发送短信
/*
为了弥补上述的两个方法的不足,需要另一种使用短信功能的方法:程序内使用短信功能.
*/
//1.添加短信所需要的框架: MessageUI.framework
//2.引入头文件,实现如下代码
//3.判断是否可以发短信
- (IBAction)messageButtonAction:(UIButton *)sender {
#pragma mark 程序外发送短信
BOOL canSendMessage = [MFMessageComposeViewController canSendText];
if (canSendMessage) {
//创建短信视图控制器
MFMessageComposeViewController *messageVC = [[MFMessageComposeViewController alloc]init];
//设置代理
messageVC.messageComposeDelegate = self;
//设置短信内容
messageVC.body = @"来一条信息";
//设置电话, 是一个数组, 可以设置多个电话, 实现群发功能
messageVC.recipients = @[@"10086",@"10010"];
//打开短信功能, 通过这个方法会在程序内打开一个短信界面;
[self presentViewController:messageVC animated:YES completion:nil];
}else{
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"提示" message:@"您的设备不支持此短信功能" delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];
[alert show];
}
}
信息的代理方法:
- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result{
//MessageComposeResult 的枚举值:
// MessageComposeResultCancelled, //取消发送短信功能
// MessageComposeResultSent, //发送短信
// MessageComposeResultFailed //发送失败
if (result == MessageComposeResultCancelled || result == MessageComposeResultSent) {
[self dismissViewControllerAnimated:YES completion:nil];
}
}
邮件功能:
//邮件功能
- (IBAction)mailButtonAction:(UIButton *)sender {
#pragma mark 程序外发送邮件
/*
//打开系统邮件页面, mailto:
NSURL *mailURL = [NSURL URLWithString:[NSString stringWithFormat:@"mailto:%@",@"13683799303@163.com"]];
//cc:抄送对象 subject:主题 body:内容
//NSURL *mailURL2 = [NSURL URLWithString:[NSString stringWithFormat:@"mailto:%@?cc = %@&subject = %@&body = %@",@"13683799303@163.com",@"13683799303@26.com",@"邮件",@"你好啊!"]];
if ([[UIApplication sharedApplication] canOpenURL:mailURL]) {
[[UIApplication sharedApplication] openURL:mailURL];
}else{
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"提示" message:@"您的设备不支持邮件功能" delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];
[alert show];
}
*/
/*
此方法来发送邮件同上述短信一样,也会跳出程序,调用系统的邮件界面;
*/
#pragma mark 程序内发送邮件
//判断是否可以发送邮件
BOOL canSendMail = [MFMailComposeViewController canSendMail];
if (canSendMail) {
//创建邮件视图控制器
MFMailComposeViewController *mailVC = [[MFMailComposeViewController alloc]init];
//设置接收邮件人, 数组,可以实现群发
[mailVC setToRecipients:@[@"13683799303@163.com",@"135895587@qq.com"]];
//设置抄送对象,
[mailVC setCcRecipients:@[@"13683799303@163.com",@"135895587@qq.com"]];
//设置密送
[mailVC setBccRecipients:@[@"13683799303@163.com"]];
//设置内容
[mailVC setMessageBody:@"很高兴认识你" isHTML:NO];
//设置代理
mailVC.mailComposeDelegate = self;
//打开邮件功能
[self presentViewController:mailVC animated:YES completion:nil];
}else{
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"提示" message:@"您的设备不支持邮件功能" delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];
[alert show];
}
}
邮件代理的方法:
- (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error{
// MFMailComposeResultCancelled, 取消发送
// MFMailComposeResultSaved, 保存
// MFMailComposeResultSent, 发送
// MFMailComposeResultFailed 发送失败
switch (result) {
case MFMailComposeResultCancelled:
NSLog(@"取消发送");
break;
case MFMailComposeResultSaved:
NSLog(@"保存");
break;
case MFMailComposeResultSent:
NSLog(@"发送成功");
break;
case MFMailComposeResultFailed:
NSLog(@"失败");
break;
default:
break;
}
[self dismissViewControllerAnimated:YES completion:nil];
}
最终效果:(由于模拟器没法演示发送短信,所以会出现下面的现象)
每日更新关注:http://weibo.com/hanjunqiang
新浪微博
iOS中发送短信/发送邮件的实现 韩俊强的博客的更多相关文章
- iOS中 支付宝钱包详解/第三方支付 韩俊强的博客
每日更新关注:http://weibo.com/hanjunqiang 新浪微博! iOS开发者交流QQ群: 446310206 一.在app中成功完成支付宝支付的过程 1.申请支付宝钱包.参考网址 ...
- iOS中 支付宝钱包具体解释/第三方支付 韩俊强的博客
每日更新关注:http://weibo.com/hanjunqiang 新浪微博! iOS开发人员交流QQ群: 446310206 一.在app中成功完毕支付宝支付的过程 1.申请支付宝钱包.參考网 ...
- iOS中 项目开发易错知识点总结 韩俊强的博客
每日更新关注:http://weibo.com/hanjunqiang 新浪微博! 点击return取消textView 的响应者 - (BOOL)textFieldShouldReturn:(UI ...
- HTML5中 HTML列表/块/布局 韩俊强的博客
从简单到复杂HTML5详解:每日更新关注:http://weibo.com/hanjunqiang 新浪微博! 1.HTML列表 1.有序 2.无序 3.有序star属性 4.有序无序列表 代码: ...
- iOS中 HTTP/Socket/TCP/IP通信协议具体解释 韩俊强的博客
简介: // OSI(开放式系统互联), 由ISO(国际化标准组织)制定 // 1. 应用层 // 2. 表示层 // 3. 会话层 // 4. 传输层 // 5. 网络层 // 6. 数据链接层 / ...
- iOS中 扫描二维码/生成二维码详解 韩俊强的博客
最近大家总是问我有没有关于二维码的demo,为了满足大家的需求,特此研究了一番,希望能帮到大家! 每日更新关注:http://weibo.com/hanjunqiang 新浪微博 指示根视图: se ...
- iOS中 HTTP/Socket/TCP/IP通信协议详解 韩俊强的博客
每日更新关注:http://weibo.com/hanjunqiang 新浪微博 简单介绍: // OSI(开放式系统互联), 由ISO(国际化标准组织)制定 // 1. 应用层 // 2. 表示层 ...
- iOS中 扫描二维码/生成二维码具体解释 韩俊强的博客
近期大家总是问我有没有关于二维码的demo,为了满足大家的需求,特此研究了一番,希望能帮到大家! 每日更新关注:http://weibo.com/hanjunqiang 新浪微博 指示根视图: se ...
- iOS中 Realm的学习与使用 韩俊强的博客
每日更新关注:http://weibo.com/hanjunqiang 新浪微博! 有问题或技术交流可以咨询!欢迎加入! 这篇直接搬了一份官方文档过来看的 由于之前没用markdown搞的乱七八糟的 ...
随机推荐
- PTA 邻接表存储图的广度优先遍历(20 分)
6-2 邻接表存储图的广度优先遍历(20 分) 试实现邻接表存储图的广度优先遍历. 函数接口定义: void BFS ( LGraph Graph, Vertex S, void (*Visit)(V ...
- Cisco banner 登陆消息提示设置命令详解
从法律角度来看,登陆消息非常重要.当入侵者进入网络而没有受到适当的警告时,他们有可能赢得官司.在放置登陆消息之前应让律师检查下,永远不要使用"欢迎"等问候语,以免被误解为邀请大家使 ...
- mouseover,mouseout和mouseenter,mouseleave的区别及适用情况
在做类似于百度地图右下角,不同地图切换UI时,遇到了问题. 就是鼠标滑过的时候出现一个层,当鼠标滑到当前层的话mouseover和mouseout在低版本的浏览器会出现闪动的现象,最简单的那就是把mo ...
- 如何成为快手尬舞王?HUAWEI HiAI了解一下!
左手!右手!抱一抱!扭一扭! 快手短视频,红遍东西南北中, 给大家的生活增添了不少乐趣. 有了人体姿态识别的魔法表情, 不会跳舞的也都可以跟着跳一跳. 从村口朴实的阿姨,到写字楼里端庄的白领, 在人体 ...
- 在移动端画出真正的1px边框
一.问题 写H5的样式时候,设置元素的边框为1px,不幸的事情在IOS设备上发生了,设计师会说,咦,边框怎么那么大,这是2px了吧?改成1px.我明明设置成1px了啊. 二.为什么边框变粗了? ...
- Linux系统上的命令使用方法
许多windows非常熟悉ipconfig命令行工具,它被用来获取网络接口配置信息并对此进行修改.Linux系统拥有一个类似的工具,也就是ifconfig(interfaces config).通常需 ...
- 在Linux系统上获取命令帮助信息和划分man文档
使用历史命令history 打完以后前面会有顺序号的比如1 cd2 ls3 pwd如果需要重新执行cd命令则可以执行 !3 命令 命令补全功能 比如你要执行history命令 可以打上histo+键 ...
- JQuery 分页显示jquery-pager-1.0.js
原版是jquery-pager-1.0.js,经过变更修改加上按照项目中的一些需要修改过来. //初始化分页控件 PagerOptions为配置参数 url为要提交的url地址,如果不需要提交则可以为 ...
- Android项目实战(四十五):Usb转串口通讯(CH34xUARTDriver)
需求为:手机usb接口插入一个硬件,从硬件上获取数据 例如:手机usb插入硬件A,A通过蓝牙通讯获取设备a.b的数据,作为中转站(可以做些数据处理)将数据(设备a.b产生的)传给手机程序. 设备A也可 ...
- jQuery 遍历 – 祖先
祖先是父.祖父或曾祖父等等. 通过 jQuery,您能够向上遍历 DOM 树,以查找元素的祖先. 向上遍历 DOM 树 这些 jQuery 方法很有用,它们用于向上遍历 DOM 树: parent() ...