电话、短信是手机的基础功能,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.

2、发短信

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

 [[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>

#import <MessageUI/MessageUI.h>

@interface DemoViewController : UIViewController <MFMessageComposeViewControllerDelegate>

@end

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

- (void)showMessageView
{ if( [MFMessageComposeViewController canSendText] ){ MFMessageComposeViewController * controller = [[MFMessageComposeViewController alloc]init]; //autorelease]; controller.recipients = [NSArray arrayWithObject:@"10010"];
controller.body = @"测试发短信";
controller.messageComposeDelegate = self; [self presentModalViewController:controller animated:YES]; [[[[controller viewControllers] lastObject] navigationItem] setTitle:@"测试短信"];//修改短信界面标题
}else{ [self alertWithTitle:@"提示信息" msg:@"设备没有短信功能"];
}
} //MFMessageComposeViewControllerDelegate - (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result{ [controller dismissModalViewControllerAnimated:NO];//关键的一句 不能为YES switch ( result ) { case MessageComposeResultCancelled: [self alertWithTitle:@"提示信息" msg:@"发送取消"];
break;
case MessageComposeResultFailed:// send failed
[self alertWithTitle:@"提示信息" msg:@"发送成功"];
break;
case MessageComposeResultSent:
[self alertWithTitle:@"提示信息" msg:@"发送失败"];
break;
default:
break;
}
} - (void) alertWithTitle:(NSString *)title msg:(NSString *)msg { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title
message:msg
delegate:self
cancelButtonTitle:nil
otherButtonTitles:@"确定", nil]; [alert show]; }

最新文章

  1. .Net 零星小知识
  2. Javascript闭包——懂不懂由你,反正我是懂了
  3. pandas 时间序列resample
  4. (转)深入浅出 iOS 之生命周期
  5. ResultSet结果集判断是否为空
  6. 作为平台的Windows PowerShell(一)
  7. Maven配置jar(war)包自动打包上传Maven服务器的配置
  8. MultiWii MWC的软件和调试方法
  9. poj1936---subsequence(判断子串)
  10. win7使用的一些误区以及困惑
  11. org.apache.hadoop.ipc.Client: Retrying connect to server异常的解决
  12. diff命令参数
  13. Android笔记: 日期格式化
  14. 201521123012 《Java程序设计》第十三周学习总结
  15. SQL ServerAlways Encrypted Data
  16. mysqldumpslow简单使用方法-mysqldumpslow详细用法
  17. 使用python实现深度神经网络 1(转)
  18. android app rate on google play and amazon
  19. sqoop1 与sqoop2的对比
  20. 来自阿里的 json 解析方案 fastjson

热门文章

  1. Visual Studio一些插件
  2. Jquery选择器大全、属性操作、css操作、文档、事件等
  3. centos6中office及中文输入法安装 (转载)
  4. Log4j日志等级
  5. bzoj 2784: [JLOI2012]时间流逝【树形期望dp】
  6. [App Store Connect帮助]七、在 App Store 上发行(1)App 发行流程概述
  7. Luogu P1273 有限电视网【树形Dp/树形背包】
  8. __new__问题
  9. jQuery查找
  10. _bzoj1013 [JSOI2008]球形空间产生器sphere【高斯消元】