电话、短信是手机的基础功能,iOS中提供了接口,让我们调用。这篇文章简单的介绍一下iOS的打电话、发短信在程序中怎么调用。

1、打电话

 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://10010"]];//打电话

使用openURL这个API打电话结束后,返回的是系统的拨打电话界面,如何才能返回自己的应用呢?有两种方法与大家分享。

第一种是用UIWebView加载电话,这种是合法的,可以上App Store的。

代码如下:

    UIWebView*callWebview =[[UIWebView alloc] init];
NSURL *telURL =[NSURL URLWithString:@"tel:10010"];
[callWebview loadRequest:[NSURLRequest requestWithURL:telURL]];
//记得添加到view上
[self.view addSubview:callWebview];

第二种是私有方法,不能上App Store的(自己没试过)。

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

上面的代码只是把第一个方法中的tel为telprompt.

1,这种方法,拨打完电话回不到原来的应用,会停留在通讯录里,而且是直接拨打,不弹出提示
NSMutableString *
str=[[NSMutableString alloc] initWithFormat:@"tel:%@",@"186xxxx6979"];
    //           
NSLog(@"str======%@",str);
[[UIApplication
sharedApplication] openURL:[NSURL URLWithString:str]];
    
2,这种方法,打完电话后还会回到原来的程序,也会弹出提示,推荐这种
NSMutableString *
str=[[NSMutableString alloc] initWithFormat:@"tel:%@",@"186xxxx6979"];
    UIWebView *
callWebview = [[UIWebView alloc] init];
    [callWebview loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:str]]];
    [self.view addSubview:callWebview];
    [callWebview release];
    [str release];

3,这种方法也会回去到原来的程序里(注意这里的telprompt),也会弹出提示
NSMutableString *
str=[[NSMutableString alloc] initWithFormat:@"telprompt://%@",@"186xxxx6979"];
    //           
NSLog(@"str======%@",str);
 
  [[UIApplication sharedApplication] openURL:[NSURL URLWithString:str]]

电话、短信是手机的基础功能,iOS中提供了接口,让我们调用。这篇文章简单的介绍一下iOS的打电话、发短信在程序中怎么调用。

2、发短信

iOS中可以使用两种方式发送短信,最简单是使用openURL:

  1. [[UIApplication sharedApplication]openURL:[NSURL URLWithString:@"sms://10010"]];//发短信

上面方式无法指定短信内容,iOS4.0新加入了MFMessageComposeViewController和MFMessageComposeViewControllerDelegate,提供了发送短信的接口,可以像发送邮件那样不用跳出程序来发送短信. 介绍可参阅Message UIFramework Reference

MFMessageComposeViewController提供了操作界面使用前必须检查canSendText方法,若返回NO则不应将这个controller展现出来,而应该提示用户不支持发送短信功能.

messageComposeDelegate :代理,处理发送结果

recipients  :收信人<列表,支持群发>

body :短信内容

Frameworks中要引入MessageUI.framework

#import <MessageUI/MessageUI.h>
添加协议:<MFMessageComposeViewControllerDelegate>

  1. #import <MessageUI/MessageUI.h>
  2. @interface DemoViewController : UIViewController <MFMessageComposeViewControllerDelegate>
  3. @end

调用MFMessageComposeViewController,同时实现协议MFMessageComposeViewControllerDelegate。

  1. - (void)showMessageView
  2. {
  3. if( [MFMessageComposeViewController canSendText] ){
  4. MFMessageComposeViewController * controller = [[MFMessageComposeViewController alloc]init]; //autorelease];
  5. controller.recipients = [NSArray arrayWithObject:@"10010"];
  6. controller.body = @"测试发短信";
  7. controller.messageComposeDelegate = self;
  8. [self presentModalViewController:controller animated:YES];
  9. [[[[controller viewControllers] lastObject] navigationItem] setTitle:@"测试短信"];//修改短信界面标题
  10. }else{
  11. [self alertWithTitle:@"提示信息" msg:@"设备没有短信功能"];
  12. }
  13. }
  14. //MFMessageComposeViewControllerDelegate
  15. - (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result{
  16. [controller dismissModalViewControllerAnimated:NO];//关键的一句   不能为YES
  17. switch ( result ) {
  18. case MessageComposeResultCancelled:
  19. [self alertWithTitle:@"提示信息" msg:@"发送取消"];
  20. break;
  21. case MessageComposeResultFailed:// send failed
  22. [self alertWithTitle:@"提示信息" msg:@"发送成功"];
  23. break;
  24. case MessageComposeResultSent:
  25. [self alertWithTitle:@"提示信息" msg:@"发送失败"];
  26. break;
  27. default:
  28. break;
  29. }
  30. }
  31. - (void) alertWithTitle:(NSString *)title msg:(NSString *)msg {
  32. UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title
  33. message:msg
  34. delegate:self
  35. cancelButtonTitle:nil
  36. otherButtonTitles:@"确定", nil];
  37. [alert show];
  38. }

参考:

http://developer.apple.com/library/ios/#documentation/MessageUI/Reference/MFMessageComposeViewController_class/Reference/Reference.html

iOS学习笔记(十四)——打电话、发短信的更多相关文章

  1. iOS学习笔记28-系统服务(一)短信和邮件

    一.系统应用 在开发某些应用时,我们可能希望能够调用iOS系统内置的电话.短信.邮件.浏览器应用,或者直接调用安装的第三方应用,这个要怎么实现呢? 这里统一使用UIApplication的一个对象方法 ...

  2. iOS开发之调用系统打电话发短信接口以及程序内发短信

    在本篇博客开头呢,先说一下写本篇的博客的原因吧.目前在做一个小项目,要用到在本应用程序内发验证码给其他用户,怎么在应用内发送短信的具体细节想不大起来了,于是就百度了一下,发现也有关于这方面的博客,点进 ...

  3. python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例

    python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例 新浪爱彩双色球开奖数据URL:http://zst.aicai.com/ssq/openInfo/ 最终输出结果格 ...

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

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

  5. zabbix学习笔记:zabbix监控之短信报警

    zabbix学习笔记:zabbix监控之短信报警 zabbix的报警方式有多种,除了常见的邮件报警外,特殊情况下还需要设置短信报警和微信报警等额外方式.本篇文章向大家介绍短信报警. 短信报警设置 短信 ...

  6. iOS开发中打电话发短信等功能的实现

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

  7. iOS - 打电话, 发短信

    电话.短信是手机的基础功能,iOS中提供了接口,让我们调用.这篇文章简单的介绍一下iOS的打电话.发短信在程序中怎么调用. 1.打电话 [[UIApplication sharedApplicatio ...

  8. Java学习笔记十四:如何定义Java中的类以及使用对象的属性

    如何定义Java中的类以及使用对象的属性 一:类的重要性: 所有Java程序都以类class为组织单元: 二:什么是类: 类是模子,确定对象将会拥有的特征(属性)和行为(方法): 三:类的组成: 属性 ...

  9. ios打电话发短信接口

    电话.短信是手机的基础功能,iOS中提供了接口,让我们调用.这篇文章简单的介绍一下iOS的打电话.发短信在程序中怎么调用. 1.打电话 [[UIApplication sharedApplicatio ...

  10. 打电话,发短信,发邮件,app跳转

    1.打电话 - (IBAction)callPhone1:(id)sender { NSURL *url = [NSURL URLWithString:@"tel://18500441739 ...

随机推荐

  1. android:TextAppearance.Material.Widget.Button.Inverse找不到或者报错问题

    前两天将android sdk升到android6.0后出现Error retrieving parent for Item - AppCompact-v7 23 或者无法解析 android:Tex ...

  2. 14.5.2.2 autocommit, Commit, and Rollback

    14.5.2.2 autocommit, Commit, and Rollback 在InnoDB,所有的用户活动发生在一个事务里, 如果自动提交模式是启用的, 每个SQL语句形成一个单独的事务.默认 ...

  3. 【HDOJ】2579 Dating with girls(2)

    简单BFS. /* 2579 */ #include <iostream> #include <queue> #include <cstdio> #include ...

  4. stat~~~访问文件状态的利器

    Name stat, fstat, lstat - get file status Synopsis #include <sys/types.h>#include <sys/stat ...

  5. 【转】 Android的NDK开发(1)————Android JNI简介与调用流程

    原文网址:http://blog.csdn.net/conowen/article/details/7521340 ****************************************** ...

  6. 【转】Java 枚举7常见种用法

    原文网址:http://softbeta.iteye.com/blog/1185573 Java 枚举7常见种用法 博客分类: java java枚举enmu  原创地址:http://blog.li ...

  7. AndroidStudio SVN检出

    版本管理是每个项目的必经之路,很多的ADT都会集成版本管理插件.AS也同样可以集成GITHUB和SVN插件.github对项目有一定的限制,而SVN就比较开放了,所以我们在用AS开发的时候一般用SVN ...

  8. 【有源汇上下界费用流】BZOJ 3876 [Ahoi2014]支线剧情

    题目链接: http://www.lydsy.com:808/JudgeOnline/problem.php?id=3876 题目大意: 给定一张拓扑图(有向无环图),每条边有边权,每次只能从第一个点 ...

  9. Linux 守护进程的启动方法

    守护进程”(daemon)就是一直在后台运行的进程(daemon). 本文介绍如何将一个 Web 应用,启动为守护进程. 一.问题的由来 Web应用写好后,下一件事就是启动,让它一直在后台运行. 这并 ...

  10. windows路由命令route

    route print 查看当前的路由信息 route add 10.0.0.0 mask 255.0.0.0 10.1.1.1 增加一条到10.0.0.0/8网络的路由,网关是10.1.1.1 ro ...