iOS打电话、发短信、发邮件功能

今天把APP里常用小功能 例如发短信、发邮件、打电话。
全部拿出来简单说说它们的实现思路。
 
1.发短信
实现打电话的功能,主要二种方法,下面我就分别说说它们的优缺点。
1.1.发短信(1)——URL 
// 直接拨号,拨号完成后会停留在通话记录中
1、方法:

NSURL *url = [NSURL URLWithString:@"sms://10010"];
[[UIApplication sharedApplication] openURL:url];

2、优点:
–简单
3、缺点:
–不能指定短信内容,而且不能自动回到原应用
1.2发短信(2)——MessageUI框架 

如果自定义短信,需要使用一个框架MessageUI。

优点
 1. 从应用出去能回来
 2. 可以多人
 3. 可以自定义消息,消息支持HTML格式的

而且如果在苹果系统中,如果彼此的手机都是iOS设备,并且开通了iMessage功能,彼此之间的短信是走网络通道,而不走运营商的通道!

- (void)msg2
{// 判断用户设备能否发送短信if (![MFMessageComposeViewController canSendText]) {return;}// 1. 实例化一个控制器MFMessageComposeViewController *controller = [[MFMessageComposeViewController alloc] init];// 2. 设置短信内容// 1) 收件人controller.recipients = @[@"10010", @"10086"];// 2) 短信内容controller.body = @"给您拜个晚年,祝您晚年快乐!";// 3) 设置代理controller.messageComposeDelegate = self;// 3. 显示短信控制器[self presentViewController:controller animated:YES completion:nil];
}

记得发完短信记得调用代理方法关闭窗口

#pragma mark 短信控制器代理方法
/**短信发送结果MessageComposeResultCancelled,     取消MessageComposeResultSent,          发送MessageComposeResultFailed         失败*/
- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result
{NSLog(@"%d", result);// 在面向对象程序开发中,有一个原则,谁申请,谁释放!// *** 此方法也可以正常工作,因为系统会将关闭消息发送给self
//    [controller dismissViewControllerAnimated:YES completion:nil];// 应该用这个!!![self dismissViewControllerAnimated:YES completion:nil];
}

2.发邮件

- (void)sendmail
{// 1. 先判断能否发送邮件if (![MFMailComposeViewController canSendMail]) {// 提示用户设置邮箱return;}// 2. 实例化邮件控制器,准备发送邮件MFMailComposeViewController *controller = [[MFMailComposeViewController alloc] init];// 1) 主题 xxx的工作报告[controller setSubject:@"我的工作报告"];// 2) 收件人[controller setToRecipients:@[@"4800607@gmail.com"]];// 3) cc 抄送// 4) bcc 密送(偷偷地告诉,打个小报告)// 5) 正文[controller setMessageBody:@"这是我的<font color=\"blue\">工作报告</font>,请审阅!<BR />P.S. 我的头像牛X吗?" isHTML:YES];// 6) 附件UIImage *image = [UIImage imageNamed:@"头像1.png"];NSData *imageData = UIImagePNGRepresentation(image);// 1> 附件的二进制数据// 2> MIMEType 使用什么应用程序打开附件// 3> 收件人接收时看到的文件名称// 可以添加多个附件[controller addAttachmentData:imageData mimeType:@"image/png" fileName:@"头像.png"];// 7) 设置代理[controller setMailComposeDelegate:self];// 显示控制器[self presentViewController:controller animated:YES completion:nil];
}

同样要记得发完邮件记得调用代理方法关闭窗口

#pragma mark - 邮件代理方法
/**MFMailComposeResultCancelled,      取消MFMailComposeResultSaved,          保存邮件MFMailComposeResultSent,           已经发送MFMailComposeResultFailed          发送失败*/
- (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error
{// 根据不同状态提示用户NSLog(@"%d", result);[self dismissViewControllerAnimated:YES completion:nil];
}

3.打电话
打电话有三种方式可以实现,优缺点也各不同
3.1.打电话不回引用

- (void)tel1
{// 直接拨号,拨号完成后会停留在通话记录中NSURL *url = [NSURL URLWithString:@"tel://10010"];[[UIApplication sharedApplication] openURL:url];
}

3.2.出去打电话然后回来

- (void)tel2
{// 但是:telprompt协议属于苹果的私有协议,一旦程序中使用了此协议,程序无法上架// 针对越狱的机器开发的系统,可以使用此协议NSURL *url = [NSURL URLWithString:@"telprompt://10010"];[[UIApplication sharedApplication] openURL:url];
}

3.3借助UIWebView打电话(会回来)
一般都是用这种,解决了不越狱的问题。

- (void)tel3
{// 提示:不要将webView添加到self.view,如果添加会遮挡原有的视图// 懒加载if (_webView == nil) {_webView = [[UIWebView alloc] init];}NSLog(@"%p", _webView);//    _webView = [[UIWebView alloc] initWithFrame:self.view.bounds];
//    [self.view addSubview:_webView];NSURL *url = [NSURL URLWithString:@"tel://10010"];NSURLRequest *request = [NSURLRequest requestWithURL:url];[_webView loadRequest:request];
}

iOS打电话、发短信、发邮件功能相关推荐

  1. Android studio 实现打电话发短信浏览网页功能 android开发小实验

    Android studio 实现打电话发短信浏览网页功能 android开发小实验 目标: android studio 实现打电话 发短信 浏览网站的功能 先在布局里面定义几个按钮 分别为 打电话 ...

  2. 免费发短信 KC2007 新鲜功能预报

    免费发短信 KC2007 新鲜功能预报 据悉,经过KC团队四个多月的辛勤工作,KC2007 beta1即将登场!此次版本在原有KC2005 SP3的基础上进行了全方位的提升与优化,该版本的面市,标志着 ...

  3. iOS打电话发短信发邮件总结

    今天把APP里常用小功能 例如发短信.发邮件.打电话. 全部拿出来简单说说它们的实现思路. 1.发短信 实现打电话的功能,主要二种方法,下面我就分别说说它们的优缺点. 1.1.发短信(1)--URL ...

  4. web网页实现打电话,发短信,发邮件等:万能的a标签

    a标签等href属性中等URL可以是浏览器支持等任何协议 不废话,直接上代码 <a href="tel:10086">打电话10086</a> <a ...

  5. iOS之中打电话/发短息/发邮件/吊起QQ聊天的方法总结

    打电话的三种方法: 1,这种方法,拨打完电话回不到原来的应用,会停留在通讯录里,而且是直接拨打,不弹出提示 NSMutableString  * str=[[ NSMutableString   al ...

  6. viber免费打电话,发短信。五个月用户超千万:简单、免费爆炸式传播

    免费通话应用Viber从去年12月发布到现在已经有了1000万用户.它比Skype更像是真正的电话. 文|CBN记者 朱小坤 在苹果App Store里猛砸钱可能对推进应用排名没什么作用.以色列人Ta ...

  7. nodeJs实现发短信验证码功能

    最近做项目遇到需要做短信验证码的功能,今天给大家讲一下如何用nodeJs实现发短信验证码的功能 第一步:我们需要去注册一个聚合数据的账号密码,聚合数据有免费的接口可以用. 完成注册之后搜索 短信API ...

  8. 猫猫学iOS(四十五)之常用的小功能比如打电话、打开网址、发邮件、发短信打开其他应用。...

    猫猫分享,必须精品 原创文章,欢迎转载.转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243?viewmode=contents 简介 iOS中的很多小功能都 ...

  9. iOS开发中打电话发短信等功能的实现

    在APP开发中,可能会涉及到打电话.发短信.发邮件等功能.比如说,通常一个产品的"关于"页面,会有开发者的联系方式,理想情况下,当用户点击该电话号码时,能够自动的帮用户拨出去,就涉 ...

最新文章

  1. 安装apache的时候80端口被PID为4的系统进程所占用
  2. XSuperTooltip - Office 2007 Super Tooltip class
  3. .net session 有效时间_Python中requests模拟登录的三种方式(携带cookie/session进行请求网站)...
  4. 他们的背后,是我们!
  5. namenode和datanode工作机制_Hadoop的namenode的管理机制,工作机制和datanode的工作原理...
  6. JavaScript入门(part10)--作用域
  7. Android开发之获取通知栏的内容
  8. 操作系统上机题目(多进程1)
  9. 工作66:storage区别
  10. Redis:06---数据库管理
  11. red6.4 mysql_rhel6.4 yum本地yum源配置
  12. 电脑没有音频设备怎么办
  13. iOS9 未受信任的企业级开发者
  14. Android新手入门 FAQ
  15. 分布式系统三大指标:可扩展性、一致性、持久性
  16. Oracle 锁表查询
  17. 《MLB棒球创造营》:走近棒球运动·奥克兰运动家队
  18. 硕士阶段人工智能有哪些比较好的发论文的方向?
  19. 2.3.2 合并(拼接)字符串
  20. SQL service基础(九)用户定义数据类型和用户定义函数的概念、创建及使用方法

热门文章

  1. Spring Boot 集成 Redis 缓存
  2. ASP.NET用户个性化设置Profile——配置
  3. Project 2013 任务开始时间以及工期 不能自动更新
  4. 运维 -- 虚拟机给磁盘扩容
  5. 清华邓志东:城市智能路网新基建催生路端世界级企业
  6. 新手如何建设属于自己的网站
  7. volumio怎么连接屏幕_Volumio兼容性比较好的无线网卡
  8. Linux系统的基本操作(一)
  9. c语言五个水手分椰子答案,水手分椰子——迭代法、递归解题
  10. 字符串转换成数组 的方法