我们在做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中如何切换到发短信、打电话、发邮件的更多相关文章

  1. IOS,发短信,发邮件,打电话

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

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

    本文转载至 http://www.lvtao.net/ios/506.html 今天把APP里常用小功能 例如发短信.发邮件.打电话.全部拿出来简单说说它们的实现思路. 1.发短信实现打电话的功能,主 ...

  3. iOS- 如何将应用集成发短信、发邮件、打电话

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

  4. iOS10打电话、发短信、发邮件等小功能

    注意:iOS10.0以后,使用openURL会有延迟,需要使用 openURL: options: completionHandler: 一.概要 本文中主要就是介绍在iOS中实现打电话.发短信.发邮 ...

  5. iOS中多种方式实现打电话、发短信、写邮件

    一.打电话 打电话--方法1 NSURL *URL = [NSURL URLWithString:@"tel://10010"]; [[UIApplication sharedAp ...

  6. iOS打电话,发短信,发邮件,打开网址

    //调用自带mail [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"mailto://admin@hzl ...

  7. iOS openURL方法实现打电话、发短信、发邮件、打开其他App

    UIApplication有个功能十分强大的openURL:方法 - (BOOL)openURL:(NSURL*)url; 通过这个方法,我们可以实现: 先获取 UIApplication UIApp ...

  8. ios-王云鹤 调用ios系统功能---------------打电话、发短信、发邮件

    --------------------------------------菜鸟总结,欢迎读者雅正------------------------------------------------- 先 ...

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

    打电话 方法1 最简单最直接的方式:直接跳到拨号界面 NSURL *url = [NSURL URLWithString:@"tel://10010"]; [[UIApplicat ...

  10. 移动设备wap手机网页html5通过特殊链接:打电话,发短信,发邮件详细教程

    如果需要在移动浏览器中实现拨打电话,调用sms发短信,发送email等功能,移动手机WEB页面(HTML5)Javascript提供的接口是一个好办法. 采用url href链接的方式,实现在Safa ...

随机推荐

  1. hosts立即生效的方法

     做web开发和测试的,难免需要经常修改hosts来指定某个域名访问某个特定的IP:在windows中,每次修改了C:\windows\system32\drivers\etc\hosts,都需要重启 ...

  2. GitLab常见使用方法

    1.GitLab配置 git config --global user.name "xxx" -- 配置用户名,上传本地 repository 到服务器上的时候,在 Github ...

  3. WPF ListBox

    记录一些ListBox的用法 设置ListBox选中项的背景颜色 如何为标准的ListBox添加ItemClick事件 连续选择同一项时SelectionChanged 事件不响应的问题 1.设置Li ...

  4. MethodInvoker 创建委托

    if (this.InvokeRequired) this.Invoke(new MethodInvoker(() => { this.Close(); })); else this.Close ...

  5. Java中的队列Queue,优先级队列PriorityQueue

    队列Queue 在java5中新增加了java.util.Queue接口,用以支持队列的常见操作.该接口扩展了java.util.Collection接口. Queue使用时要尽量避免Collecti ...

  6. spread 程序调试时,未激活的提示解决

    场景:程序调试运行,打开含spread组件的窗体时如下: 解决: 将spread组件拖到某一个窗体后,会在properties中出现license文件.再运行,OK! 注意: license文件一定是 ...

  7. [经验交流] 为 mesos framework 分配资源

    前段时间我在办公网搭建了一套mesos平台,用于docker 集群相关的调研和测试,mesos + marathon + docker 架构运行正常.但是在启用了chronos后,marathon无法 ...

  8. [转载]ARM协处理器CP15寄存器详解

    用于系统存储管理的协处理器CP15  原地址:http://blog.csdn.net/gameit/article/details/13169405 MCR{cond}     coproc,opc ...

  9. [Mongodb] Tarball二进制包安装过程

    一.缘由: 用在线安装的方式安装mongodb,诚然很方便.但文件过于分散,如果在单机多实例的情况下,就不方便管理. 对于数据库的管理,我习惯将所有数据(配置)文件放在一个地方,方便查找区分. 二.解 ...

  10. ACM入门

    1.给n个数字,将它们重新排序得到一个最大的数字 例子 4123 124 56 90--------------90561241235123 124 56 90 9------------990561 ...