iOS开发之调用系统打电话发短信接口以及程序内发短信
在本篇博客开头呢,先说一下写本篇的博客的原因吧。目前在做一个小项目,要用到在本应用程序内发验证码给其他用户,怎么在应用内发送短信的具体细节想不大起来了,于是就百度了一下,发现也有关于这方面的博客,点进去看了看,个人感到有点小失望,写的太不详细,只是简单的代码罗列,而且代码也没注释,大概是因为太简单了吧。今天在做完项目的发短信功能后感觉有必要把这部分内容整理一下,做个纪念也是好的不是吗。废话少说,切入今天的正题。下面的发短信,打电话当然需要真机测试了。
一、调用系统功能
在iOS中打开系统本身的打电话和发短信功能还是比较简单的,之前在SSO中也提了一嘴,iOS中可以由一个应用打开另一个应用,只需要一行代码,打电话,发短信,发email,开网页也是一样的 ,只是用的协议不一样。
1.打电话
这个还是比较简单的,下面是打电话的代码:%@的内容是手机号self.myApplication是Application的单例。
2.发短信
发送短信只是和打电话用的协议不一样改一下协议就可以打电话了
3、发email
也是换一下协议即可
4.打开网址
二、在本应用中打开
上面的方法都是打开相应的应用程序,然后做相应的事情,那么我们如何在本应用中就可以给我们的用户发送短信呢?下面就让我们来实现这个功能
1.引入我们要用的framework(其实在应用程序内发送短信和ImagePickerViewController的用法极为的相似,没有什么困难的地方),我们需要引入MessageUI.framework,入下图
2.在pch文件导入相应头文件
3.下面是实现发送短信的核心代码
(1)判断设备是否有发送短信的功能代码如下:
1 //发送短信的方法 2 -(void)sendMessage 3 { 4 //用于判断是否有发送短信的功能(模拟器上就没有短信功能) 5 Class messageClass = (NSClassFromString(@"MFMessageComposeViewController")); 6 7 //判断是否有短信功能 8 if (messageClass != nil) { 9 //有发送功能要做的事情 10 } 11 else 12 { 13 14 UIAlertView *alterView = [[UIAlertView alloc] initWithTitle:@"提示" message:@"iOS版本过低(iOS4.0以后)" delegate:nil cancelButtonTitle:@"取消" otherButtonTitles:nil]; 15 16 [alterView show]; 17 } 18 19 20 }
(2).如果有发送短信功能的话,就得判断iOS版本释放支持"MFMessageComposeViewController". iOS4.0之后支持
1 //有短信功能 2 if ([messageClass canSendText]) { 3 //发送短信 4 } 5 else 6 { 7 UIAlertView *alterView = [[UIAlertView alloc] initWithTitle:@"提示" message:@"该设备没有发送短信的功能~" delegate:nil cancelButtonTitle:@"取消" otherButtonTitles:nil]; 8 9 [alterView show]; 10 } 11
(3)、经过各种验证后确定设备可以使用MFMessageComposeViewController,我们就开始用了
1 //实例化MFMessageComposeViewController,并设置委托 2 MFMessageComposeViewController *messageController = [[MFMessageComposeViewController alloc] init]; 3 messageController.delegate = self; 4 5 6 //拼接并设置短信内容 7 NSString *messageContent = [NSString stringWithFormat:@"亲爱的,这个是专属属你我应用的邀请码:%@",self.authCodeLabel.text]; 8 messageController.body = messageContent; 9 10 //设置发送给谁 11 messageController.recipients = @[self.phoneNumberTextField.text]; 12 13 //推到发送试图控制器 14 [self presentViewController:messageController animated:YES completion:^{ 15 16 }];
(4),差点给忘了,实现相应的委托回调协议是少不了的~要实现MFMessageComposeViewControllerDelegate,UINavigationControllerDelegate这两个协议。发送后的回调如下:
1 //发送短信后回调的方法 2 -(void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result 3 { 4 NSString *tipContent; 5 switch (result) { 6 case MessageComposeResultCancelled: 7 tipContent = @"发送短信已"; 8 break; 9 10 case MessageComposeResultFailed: 11 tipContent = @"发送短信失败"; 12 break; 13 14 case MessageComposeResultSent: 15 tipContent = @"发送成功"; 16 break; 17 18 default: 19 break; 20 } 21 22 UIAlertView *alterView = [[UIAlertView alloc] initWithTitle:@"提示" message:tipContent delegate:nil cancelButtonTitle:@"取消" otherButtonTitles:nil]; 23 [alterView show]; 24 }
到此就可以发送短信了,本篇博客先就到这儿吧~
作者:青玉伏案
出处:http://www.cnblogs.com/ludashi/
本文版权归作者和共博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
如果文中有什么错误,欢迎指出。以免更多的人被误导。
收简历:坐标美团(北京总部),长期招聘FE/iOS/Android靠谱工程师,入职后,可内部联系楼主,有小礼品赠送,有意者可邮箱投递简历:zeluli@foxmail.com
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?