iOS开发中打电话发短信等功能的实现
在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开发中打电话发短信等功能的实现相关推荐
- 手把手教你如何在安卓平台上实现打电话发短信的功能
首发地址 http://www.eoeandroid.com/thread-228079-1-1.html 1 案例目的 本案例通过一个简单通讯工具来巩固android的activity.Linear ...
- iOS开发之系统发短信功能详解
iOS调用系统的发短信功能可以分为两种:1,程序外调用系统发短信.2,程序内调用系统发短信.第二种的好处是用户发短信之后还可以回到app.这对app来说非常重要. 程序外调用系统发短信 这个方法其实很 ...
- Android studio 实现打电话发短信浏览网页功能 android开发小实验
Android studio 实现打电话发短信浏览网页功能 android开发小实验 目标: android studio 实现打电话 发短信 浏览网站的功能 先在布局里面定义几个按钮 分别为 打电话 ...
- android 发送短信 广播 demo,向Android模拟器打电话发短信的简单方法
在开发android应用程序时,有时候需要测试一下向android手机拨打电话发送短信时该应用程序的反应.譬如编写一个广播接收器,来提示用户有短信收到或者处理短信,就需要向该手机发送短信来进行测试.这 ...
- android虚拟机接收真实短信,向Android模拟器打电话发短信的简单方法
在开发android应用程序时,有时候需要测试一下向android手机拨打电话发送短信时该应用程序的反应.譬如编写一个广播接收器,来提示用户有短信收到或者处理短信,就需要向该手机发送短信来进行测试.这 ...
- 向Android模拟器打电话发短信的简单方法
在开发android应用程序时,有时候需要测试一下向android手机拨打电话发送短信时该应用程序的反应.譬如编写一个广播接收器,来提示用户有短信收到或者处理短信,就需要向该手机发送短信来进行测试.这 ...
- sim900GPRS使用C语言打电话发短信
--------------------------------------------- 主机操作系统:Centos 6.5 交叉编译器环境:arm-linux-gcc-4.5.4 开发板平台: F ...
- linux 下GPRS模块使用sim900打电话发短信
--------------------------------------------- 主机操作系统:Centos 6.7 开发板平台: FL2440 Linux内核版本: linux-3.0 ...
- SIM71004G模块使用Linux C语言实现打电话发短信
为了方便查看博客,特意申请了一个公众号,附上二维码,有兴趣的朋友可以关注,和我一起讨论学习,一起享受技术,一起成长. 一.实验目的: SIM71004G模块使用Linux C语言实现打电话发短信. 二 ...
最新文章
- Chrome不支持showModalDialog的解决方案
- 主宰这个世界的10大算法
- ubuntu 安装eclipse neon版本
- 算一算是一年中的第几天
- 使用LogKit进行日志操作
- 单元格格式_单元格格式的用法你知道吗~~
- 内存条能4+8混插吗?_笔记本内存条双通道提升有多大?实测FORESEE,你知道好处在哪吗...
- 万亿级流量高可用延时服务架构设计
- MaxScript 扇子打开
- 关于NavigateUrl中绑定Eval()方法时出现服务器标记的格式不正确的解决方法
- 成立了汽车与智能出行事业部的阿里云,如何建立云上行业生态?
- 《Java并发编程实践》笔记1——并发编程基础
- 信号跟单时提示mt4与服务器断开,MT4平台操作中遇到的一些常见问题和解决方法 -...
- CorelDRAW 文字排版用了这些方法肯定有意想不到的效果呈现
- 【Paper】A Comprehensive Survey of Clustering Algorithms
- 全网最全的 Java 各类技术栈架构图汇总(建议收藏)
- 《少有人走的路——心智成熟的旅程》读书笔记
- 基于python的火车票售票系统/基于django火车票务网站/火车购票系统
- stm32f4xx标准外设固件库
- Mybatis三剑客