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

iOS开发中,有三种方式可以打电话:

(1)直接跳到拨号界面,代码如下

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

  

缺点:电话打完后,不会自动回到原应用,直接停留在通话记录页面。

(2)拨号之前会弹框询问,打完电话后能自动回到原应用。代码如下:

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

  

缺点:私有API,因此可能通不过苹果官方审核。如果是企业级应用(不需要上线appStore),可以使用这个方法。

(3)创建一个UIWebView来加载URL,拨完后能自动回到原应用。代码如下:

NSURL *url = [NSURL URLWithString:@"tel://4001656520"];// 如果需要告诉服务器一些信息,需要更改原来的网络请求!NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];//    [request setValue:@"iPhone appleWebKit" forHTTPHeaderField:@"User-Agent"];// 2. 发送请求[[[NSURLSession sharedSession] dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {dispatch_async(dispatch_get_main_queue(), ^{// 1. 实例化 UIWebView 对象UIWebView *web = [[UIWebView alloc]init];// 2. 加载网页内容[web loadData:data MIMEType:nil textEncodingName:nil baseURL:url];// 3. 将网页添加到 view 上[self.view addSubview:web];});}] resume];

推荐使用第三种方法。

有两种方式可以发短信。

(1)直接跳转到发短信界面。代码:

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

  

缺点:不能定义发送短信的内容,且发完短信后不能自动回到原应用。

(2)使用MessageUI 框架发送短信,需要包含头文件 #import <MessageUI/MessageUI.h>,代码如下:

MFMessageComposeViewController *vc = [[MFMessageComposeViewController alloc]init];
//设置短信内容
vc.body = @"吃饭了没";
//设置收件人列表
vc.recipients = @[@"10010",@"10086"];
//设置代理
vc.messageComposeDelegate = self;
//显示控制器
[self presentViewController:vc animated:YES completion:nil];

  另外实现代理函数:

/***  点击取消按钮会自动调用**/
- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result
{[controller dismissViewControllerAnimated:YES completion:nil];
}

  

建议使用第二种方法。

有两种方式可以发邮件。

(1)用自带的邮件客户端,代码如下:

NSURL *url = [NSURL URLWithString:@"mailto://10010@qq.com"];
[[UIApplication sharedApplication] openURL:url];

  

缺点:发完邮件后不会自动回到原应用

(2)类似于发短信的第二种方法,使用MessageUI,代码如下:

if(![MFMailComposeViewController canSendMail]) return;MFMailComposeViewController *vc = [[MFMailComposeViewController alloc] init];
//设置邮件主题
[vc setSubject:@"测试会议"];
//设置邮件内容
[vc setMessageBody:@"开会" isHTML:NO];
//设置收件人列表
[vc setToRecipients:@[@"test@qq.com"]];
//设置抄送人列表
[vc setCcRecipients:@[@"test1@qq.com"]];
//设置代理
vc.mailComposeDelegate = self;
//显示控制器
[self presentViewController:vc animated:YES completion:nil];

  实现代理方法:

- (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error
{[controller dismissViewControllerAnimated:YES completion:nil];
}

  推荐使用第二种方法。

参考:http://www.cnblogs.com/acBool/p/5055364.html?utm_source=tuicool&utm_medium=referral

转载于:https://www.cnblogs.com/ansyxpf/p/6169177.html

iOS开发中打电话发短信等功能的实现相关推荐

  1. 手把手教你如何在安卓平台上实现打电话发短信的功能

    首发地址 http://www.eoeandroid.com/thread-228079-1-1.html 1 案例目的 本案例通过一个简单通讯工具来巩固android的activity.Linear ...

  2. iOS开发之系统发短信功能详解

    iOS调用系统的发短信功能可以分为两种:1,程序外调用系统发短信.2,程序内调用系统发短信.第二种的好处是用户发短信之后还可以回到app.这对app来说非常重要. 程序外调用系统发短信 这个方法其实很 ...

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

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

  4. android 发送短信 广播 demo,向Android模拟器打电话发短信的简单方法

    在开发android应用程序时,有时候需要测试一下向android手机拨打电话发送短信时该应用程序的反应.譬如编写一个广播接收器,来提示用户有短信收到或者处理短信,就需要向该手机发送短信来进行测试.这 ...

  5. android虚拟机接收真实短信,向Android模拟器打电话发短信的简单方法

    在开发android应用程序时,有时候需要测试一下向android手机拨打电话发送短信时该应用程序的反应.譬如编写一个广播接收器,来提示用户有短信收到或者处理短信,就需要向该手机发送短信来进行测试.这 ...

  6. 向Android模拟器打电话发短信的简单方法

    在开发android应用程序时,有时候需要测试一下向android手机拨打电话发送短信时该应用程序的反应.譬如编写一个广播接收器,来提示用户有短信收到或者处理短信,就需要向该手机发送短信来进行测试.这 ...

  7. sim900GPRS使用C语言打电话发短信

    --------------------------------------------- 主机操作系统:Centos 6.5 交叉编译器环境:arm-linux-gcc-4.5.4 开发板平台: F ...

  8. linux 下GPRS模块使用sim900打电话发短信

    ---------------------------------------------  主机操作系统:Centos 6.7 开发板平台: FL2440  Linux内核版本: linux-3.0 ...

  9. SIM71004G模块使用Linux C语言实现打电话发短信

    为了方便查看博客,特意申请了一个公众号,附上二维码,有兴趣的朋友可以关注,和我一起讨论学习,一起享受技术,一起成长. 一.实验目的: SIM71004G模块使用Linux C语言实现打电话发短信. 二 ...

最新文章

  1. Chrome不支持showModalDialog的解决方案
  2. 主宰这个世界的10大算法
  3. ubuntu 安装eclipse neon版本
  4. 算一算是一年中的第几天
  5. 使用LogKit进行日志操作
  6. 单元格格式_单元格格式的用法你知道吗~~
  7. 内存条能4+8混插吗?_笔记本内存条双通道提升有多大?实测FORESEE,你知道好处在哪吗...
  8. 万亿级流量高可用延时服务架构设计
  9. MaxScript 扇子打开
  10. 关于NavigateUrl中绑定Eval()方法时出现服务器标记的格式不正确的解决方法
  11. 成立了汽车与智能出行事业部的阿里云,如何建立云上行业生态?
  12. 《Java并发编程实践》笔记1——并发编程基础
  13. 信号跟单时提示mt4与服务器断开,MT4平台操作中遇到的一些常见问题和解决方法 -...
  14. CorelDRAW 文字排版用了这些方法肯定有意想不到的效果呈现
  15. 【Paper】A Comprehensive Survey of Clustering Algorithms
  16. 全网最全的 Java 各类技术栈架构图汇总(建议收藏)
  17. 《少有人走的路——心智成熟的旅程》读书笔记
  18. 基于python的火车票售票系统/基于django火车票务网站/火车购票系统
  19. stm32f4xx标准外设固件库
  20. Mybatis三剑客

热门文章

  1. 【干货分享】前端面试知识点锦集02(CSS篇)——附答案
  2. ADO.Net知识总结
  3. Git 学习看这篇就够了!
  4. MS-SQL CLR 直接读写文件,飞一般的感觉!
  5. 随心篇第九期:我不愿一无所有
  6. mysql 分区表详解
  7. SQL SERVER 里的 try catch
  8. Coil - Google推荐的协程图片加载库
  9. remotepath != null 与 !TextUtils.isEmpty(remotepath) 的区别
  10. Android button 居中