iOS 系统应用调用: 电话、短信息、邮件

我们在很多的App上面都会发现,你可以直接通过某个按钮拨打特定的电话号码,或者给某个人发送信息,本节就给大家讲解一下如何实现这些功能。

一、打电话

在程序内调用系统打电话,我们可以通过UIWebView实现

  • 创建一个webView
 
 
  1. //通过UIWebView实现
  2. UIWebView *phoneWV = [[UIWebView alloc] initWithFrame:CGRectZero];
  3. [self.view addSubview:phoneWV];
  • 读入电话号码
 
 
  1. //读入电话号码
  2. NSString *urlStr = [NSString stringWithFormat:@"tel://%@",self.myText.text];//self.myText.text是你要读入的电话号码,tel:不可省略,否则程序会出错
  3. NSURL *url = [NSURL URLWithString:urlStr];
  4. NSURLRequest *request = [NSURLRequest requestWithURL:url];
  • 加载请求
 
 
  1. //加载请求
  2. [phoneWV loadRequest:request];

二、发短信

我们利用MFMessageComposeViewController,可以在不跳出程序的情况下发送我们的信息。

  • 引入头文件,并添加代理接口
 
 
  1. #import <MessageUI/MessageUI.h>
  2. @interface ViewController ()<MFMessgeComposeViewControllerDelegate>
  3. @end
  • 在设备支持的环境下,发送短信
 
 
  1. //如果设备支持发送短信,返回yes。
  2. if( [MFMessageComposeViewController canSendText] ){
  3. // MFMessageComposeViewController提供了操作界面,这里我们创建一个相应的控制器
  4. MFMessageComposeViewController * controller = [[MFMessageComposeViewController alloc]init];
  5. controller.recipients = [NSArray arrayWithObject:self.myText.text];
  6. controller.body = @"测试发短信";
  7. controller.messageComposeDelegate = self;
  8. //显示发送信息界面的控制器
  9. [self presentViewController:controller animated:YES completion:nil];
  10. }else{
  11. NSLog(@"设备不具备短信功能");
  12. }
  • 通过实现相应的代理方法返回程序
 
 
  1. /*短信发送完成后返回app*/
  2. - (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result{
  3. [controller dismissViewControllerAnimated:YES completion:nil];
  4. if (result == MessageComposeResultSent) {
  5. NSLog(@"发送成功");
  6. }
  7. }

三、发送邮件

与发送短信类似,我们需要利用MFMailComposeViewController,可以在不跳出程序的情况下发送我们的邮件。

  • 引入头文件,并添加代理接口
 
 
  1. #import <MessageUI/MFMailComposeViewController.h>
  2. @interface ViewController ()<MFMailComposeViewControllerDelegate>
  3. @end
  • 在设备支持的环境下,发送邮件
 
 
  1. //如果设备支持发送邮件,返回yes。
  2. if ([MFMailComposeViewController canSendMail]) {
  3. MFMailComposeViewController* controller = [[MFMailComposeViewController alloc] init];
  4. controller.mailComposeDelegate = self;
  5. [controller setToRecipients:[NSArray arrayWithObjects:self.myText.text, nil]];//self.myText.text为邮件地址
  6. //要发送的邮件主题
  7. [controller setSubject:@"邮件测试"];
  8. //要发送邮件的内容
  9. [controller setMessageBody:@"Hello " isHTML:NO];
  10. [self presentViewController:controller animated:YES completion:nil];
  11. }else{
  12. NSLog(@"设备不具备发送邮件功能");
  13. }
  • 通过实现相应的代理方法返回程序
 
 
  1. - (void)mailComposeController:(MFMailComposeViewController*)controller
  2. didFinishWithResult:(MFMailComposeResult)result
  3. error:(NSError*)error;
  4. {
  5. if (result == MFMailComposeResultSent) {
  6. NSLog(@"邮件发送成功");
  7. }
  8. [self dismissViewControllerAnimated:YES completion:nil];
  9. }

四、示例代码

  • 在故事板中加入三个按钮以及一个textField控件,并与viewController建立关联

QQ20160310-0

 
 
  1. @property (weak, nonatomic) IBOutlet UITextField *myText;
  2. //打电话
  3. - (IBAction)clickBtn:(id)sender ;
  4. //发短信
  5. - (IBAction)clickSmsBtn:(id)sender;
  6. //发邮件
  7. - (IBAction)clickEmailBtn:(id)sender;
  • 引入相应的头文件并添加代理接口
 
 
  1. #import <MessageUI/MessageUI.h>
  2. #import <MessageUI/MFMailComposeViewController.h>
  3. @interface ViewController ()<MFMessageComposeViewControllerDelegate,MFMailComposeViewControllerDelegate>
  4. @end
  • 在相应按钮的点击方法中实现相关的功能,并实现相应的代理方法
 
 
  1. //打电话
  2. - (IBAction)clickBtn:(id)sender {
  3. //通过UIWebView实现
  4. UIWebView *phoneWV = [[UIWebView alloc] initWithFrame:CGRectZero];
  5. [self.view addSubview:phoneWV];
  6. //读入电话号码
  7. NSString *urlStr = [NSString stringWithFormat:@"tel:%@",self.myText.text];
  8. NSURL *url = [NSURL URLWithString:urlStr];
  9. NSURLRequest *request = [NSURLRequest requestWithURL:url];
  10. //加载请求
  11. [phoneWV loadRequest:request];
  12. }
  13. //发短信
  14. - (IBAction)clickSmsBtn:(id)sender {
  15. if( [MFMessageComposeViewController canSendText] ){
  16. MFMessageComposeViewController * controller = [[MFMessageComposeViewController alloc]init];;
  17. controller.recipients = [NSArray arrayWithObject:self.myText.text];
  18. controller.body = @"测试发短信";
  19. controller.messageComposeDelegate = self;
  20. [self presentViewController:controller animated:YES completion:nil];
  21. }else{
  22. NSLog(@"设备不具备短信功能");
  23. }
  24. }
  25. /*短信发送完成后返回app*/
  26. - (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result{
  27. [controller dismissViewControllerAnimated:YES completion:nil];
  28. if (result == MessageComposeResultSent) {
  29. NSLog(@"发送成功");
  30. }
  31. }
  32. //发邮件
  33. - (IBAction)clickEmailBtn:(id)sender {
  34. if ([MFMailComposeViewController canSendMail]) {
  35. MFMailComposeViewController* controller = [[MFMailComposeViewController alloc] init];
  36. controller.mailComposeDelegate = self;
  37. [controller setToRecipients:[NSArray arrayWithObjects:self.myText.text, nil]];
  38. [controller setSubject:@"邮件测试"];
  39. [controller setMessageBody:@"Hello " isHTML:NO];
  40. [self presentViewController:controller animated:YES completion:nil];
  41. }else{
  42. NSLog(@"设备不具备发送邮件功能");
  43. }
  44. }
  45. - (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error
  46. {
  47. if (result == MFMailComposeResultSent) {
  48. NSLog(@"邮件发送成功");
  49. }
  50. [self dismissViewControllerAnimated:YES completion:nil];
  51. }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值