iOS中如何切换到发短信、打电话、发邮件
我们在做APP的时候,难免会遇到需要调用短信,电话等程序的时候.如美团.
当然,这些都只是一些简单的方法就可以实现,但是时间久了也会淡忘,所以想写这边博客.一是为了再捡起来复习一下,另一个相当于留个备份,以后忘了,自己也可以捡起来看看.
首先,说说如何调用浏览器打开网页.
当然这个就很简单了,只需要短短两句话就可以实现
NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"];
//
[[UIApplication sharedApplication] openURL:url];
发邮件
在我们书写这个之前,必须先导入MessageUI.framework库.并且引入两个头文件
并且引入头文件
#import <MessageUI/MFMailComposeViewController.h>
签订协议
MFMailComposeViewControllerDelegate
实际代码如下
Class mailClass = (NSClassFromString(@"MFMailComposeViewController"));
if (mailClass == nil) { // 首先判断是否支持
NSLog(@"设备不支持邮件发送功能");
}
//苹果系统提供了写邮件界面的接口,MFMailComposeViewController是用来显示界面的
//判断用户是否设置邮件账户
if (![MFMailComposeViewController canSendMail]) {
NSLog(@"该用户没有设置邮箱账户");
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"发送结果" message:@"该用户没有设置邮箱账户" delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];
[alertView show];
return;
}
//MFMailComposeViewController 继承于 UINavigationController
MFMailComposeViewController *controller = [[MFMailComposeViewController alloc] init];
//邮件主题
[controller setSubject:@"我的硬件调研"];
//发送邮件给.....
[controller setToRecipients:@[@"910809513@qq.com"]];
//抄送:比如邮件要发给技术部,同时想发给保卫部、财务部,你就在抄送地址里填上保卫部、财务部他们就会一起收到。叫抄送
//密送:比如邮件要发给技术部,但你同时想给总经理也发一封,但不想让技术部知道,你就在暗送地址填上总经理,他就会收到而技术部不会知道
//举个例子
// 如果:A 发送邮件给B1、B2、B3,抄送给C1、C2、C3,密送给D1、D2、D3。
// 那么:
// A知道自己发送邮件给了B1、B2、B3,并且抄送给了C1、C2、C3,密送给了D1、D2、D3。
// B1知道这封是A发送给B1、B2、B3的邮件,并且抄送给了C1、C2、C3,但不知道密送给了D1、D2、D3。
// C1知道这封是A发送给B1、B2、B3的邮件,并且抄送给了C1、C2、C3,但不知道密送给了D1、D2、D3。
// D1知道这封是A发送给B1、B2、B3的邮件,并且抄送给了C1、C2、C3,而且密送给了自己,但不知道密送给了D2、D3。
//抄送
[controller setCcRecipients:@[@"13086069062@qq.com"]];
//密送
[controller setBccRecipients:@[@"877083696@qq.com"]];
//邮件的主要内容
[controller setMessageBody:@"编辑" isHTML:YES];
controller.mailComposeDelegate = self;
[self presentViewController:controller animated:YES completion:nil];
邮件发送的代理方法
-(void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error
{
NSString *str = nil;
if (result == MFMailComposeResultFailed) {
str = @"发送失败";
}else if (result == MFMailComposeResultCancelled){
str = @"发送取消";
}else if (result == MFMailComposeResultSent)
{
str = @"发送成功";
}else
{
str = @"发送保存";
}
[self dismissViewControllerAnimated:YES completion:nil];
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"发送结果" message:str delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];
[alertView show];
}
发短信
//1.引入MessageUI框架
//2.导入MessageUI/MFMessageComposeViewController.h头文件
//3.签协议MFMessageComposeViewControllerDelegate
//4.判断用户设备能否发送短信 如果不能,就返回 如果能,就实例化一个短信编辑控制器
//5.签订代理
//6.模态到短信编辑控制器视图,编辑短信,发送
//7.用代理方法监听发送,如果发送完成就回收编辑控制器视图,提示发送结果
//功能:
//1. 发完信息后能回引
//2. 可以一次多人发送
//3.消息可以自定义 支持html格式
//手机上信息设置中打开iMessage功能,对方也是iphone手机,信息不走运营商通道,而是网络通道
代码如下:
//判断用户设备能否发送信息 不能就返回
if (![MFMessageComposeViewController canSendText]) {
return;
}
//实例化一个控制器
MFMessageComposeViewController *messageController = [[MFMessageComposeViewController alloc] init];
//设置短信内容
//收件人
//messageController.recipients = @[@"1800000000"];
//短信内容
//messageController.body = @"叫你一声二大爷,可否";
messageController.messageComposeDelegate = self;
//模态出编辑短信控制器
[self presentViewController:messageController animated:YES completion:nil];
接着是代理.
//在发送完成后调用代理方法关闭窗口
-(void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result
{
NSString *str = @"result";
//发送的三种结果 成功 失败 取消
if (result == MessageComposeResultSent) {
str = @"发送成功";
}else if (result == MessageComposeResultFailed)
{
str = @"发送失败";
}else
{
str = @"发送已取消";
}
//将控制器模态回去
[self dismissViewControllerAnimated:YES completion:nil];
//提示发送结果
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"发送结果" message:str delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];
[alertView show];
}
打电话
打电话有以下三种方式
//1.打完电话不回引用 就是会停留在通话记录中,不回回到你的应用中
// NSURL *url = [NSURL URLWithString:@"tel://10086"];
//
// [[UIApplication sharedApplication] openURL:url];
// NSLog(@"打了");
//2.用telprompt协议, 能回引用,挂了电话后会回到你的应用中,但是这个协议属于苹果的私有协议,如果在程序中使用了该协议,应用是没办法上线的,针对越狱的机器的开发系统,可以引用此协议
// NSURL *url = [NSURL URLWithString:@"telprompt://10086"];
// [[UIApplication sharedApplication] openURL:url];
//3.用webView 能回引用,并且是合法的,推荐使用
//self.webView = [[UIWebView alloc] initWithFrame:self.view.bounds];
//懒加载 也称延迟加载, 既在需要的时候才去加载(重写get方法),(占内存小)
//懒加载的作用
if (self.webView == nil) {
self.webView = [[UIWebView alloc] init];
}
NSLog(@"%p", self.webView);
NSURL *url = [NSURL URLWithString:@"tel://10086"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[self.webView loadRequest:request];
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"提示信息" message:@"通话结束" delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];
[alertView show];
iOS中如何切换到发短信、打电话、发邮件的更多相关文章
- IOS,发短信,发邮件,打电话
今天把APP里常用小功能 例如发短信.发邮件.打电话.全部拿出来简单说说它们的实现思路. 1.发短信实现打电话的功能,主要二种方法,下面我就分别说说它们的优缺点.1.1.发短信(1)——URL // ...
- iOS打电话、发短信、发邮件功能开发
本文转载至 http://www.lvtao.net/ios/506.html 今天把APP里常用小功能 例如发短信.发邮件.打电话.全部拿出来简单说说它们的实现思路. 1.发短信实现打电话的功能,主 ...
- iOS- 如何将应用集成发短信、发邮件、打电话
今天把APP里常用小功能 例如发短信.发邮件.打电话. 全部拿出来简单说说它们的实现思路. 1.发短信 实现打电话的功能,主要二种方法,下面我就分别说说它们的优缺点. 1.1.发短信(1)——URL ...
- iOS10打电话、发短信、发邮件等小功能
注意:iOS10.0以后,使用openURL会有延迟,需要使用 openURL: options: completionHandler: 一.概要 本文中主要就是介绍在iOS中实现打电话.发短信.发邮 ...
- iOS中多种方式实现打电话、发短信、写邮件
一.打电话 打电话--方法1 NSURL *URL = [NSURL URLWithString:@"tel://10010"]; [[UIApplication sharedAp ...
- iOS打电话,发短信,发邮件,打开网址
//调用自带mail [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"mailto://admin@hzl ...
- iOS openURL方法实现打电话、发短信、发邮件、打开其他App
UIApplication有个功能十分强大的openURL:方法 - (BOOL)openURL:(NSURL*)url; 通过这个方法,我们可以实现: 先获取 UIApplication UIApp ...
- ios-王云鹤 调用ios系统功能---------------打电话、发短信、发邮件
--------------------------------------菜鸟总结,欢迎读者雅正------------------------------------------------- 先 ...
- iOS 打电话、发短信、发邮件功能
打电话 方法1 最简单最直接的方式:直接跳到拨号界面 NSURL *url = [NSURL URLWithString:@"tel://10010"]; [[UIApplicat ...
- 移动设备wap手机网页html5通过特殊链接:打电话,发短信,发邮件详细教程
如果需要在移动浏览器中实现拨打电话,调用sms发短信,发送email等功能,移动手机WEB页面(HTML5)Javascript提供的接口是一个好办法. 采用url href链接的方式,实现在Safa ...
随机推荐
- vue 2.0版本----》常用代码说明
------------------------------------------代码不显示-------------------------------------------- [v-cloak ...
- log4j.properties 详解与配置步骤
一.log4j.properties 的使用详解 1.输出级别的种类 ERROR.WARN.INFO.DEBUGERROR 为严重错误 主要是程序的错误WARN 为一般警告,比如session丢失IN ...
- MySQL Innodb数据库性能实践——热点数据性能
摘要: 对于大部分的应用来说,都存在热点数据的访问,即:某些数据在一定时间内的访问频率要远远高于其它数据. 常见的热点数据有“最新的新闻”.“最热门的新闻”.“下载量最大”的电影等. 为了了解MySQ ...
- 利用百度云免费备份SQL数据库
我们开发了一个会员管理系统,随着使用的人越来越多,异地备份数据库就显得十分重要,万一硬盘出问题了怎么办呢.所以就着手做这个工作. 首先呢,找到了几个专门用来提供备份数据库的网站,一年好几百,好贵.放弃 ...
- 11、java中的模板方法设计模式
/* 需求:获取一段程序运行的时间. 原理:获取程序开始和结束的时间并相减即可. 获取时间:System.currentTimeMillis(); 当代码完成优化后,就可以解决这类问题. 这种方式,模 ...
- 【python】15个最受欢迎的Python开源框架
Django: Python Web应用开发框架 Django 应该是最出名的Python框架,GAE甚至Erlang都有框架受它影响.Django是走大而全的方向,它最出名的是其全自动化的管理后台: ...
- sql server2008 检查是否需要挂起计算机重新启动。挂起重新启动会导致安装程序失败。
解决方法: 1.如果重新启动后,一样无效, 2.那么就进入注册表编辑器,通过修改注册表的方法来解决.除了删除SQL安装时遗留下的LJ文件,还必须进行以下操作: 在"开始"-&quo ...
- Dephi 和 Pascal 的关系
Pascal是一个有影响的面向对象和面向过程编程语言,由尼古拉斯·沃斯在1968年9月设计,在1970年发行,作为一个小型的和高效的语言,意图鼓励使用结构化编程和数据结构进行良好的编程实践. Delp ...
- du 使用详解 linux查看目录大小 linux统计目录大小并排序 查看目录下所有一级子目录文件夹大小 du -h --max-depth=1 |grep [
常用命令 du -h --max-depth=1 |grep [TG] |sort #查找上G和T的目录并排序 du -sh #统计当前目录的大小,以直观方式展现 du -h --max-d ...
- (C#) 使用Nullable类型
有个case,对一个double数设置初始值,然后,在程序运行中,为double赋值.(注意,也可能没有赋值). 这个时候,可以用Nullable 来设置初始值,在程序的最后做个判断. 参考: