zoukankan      html  css  js  c++  java
  • iOS 打电话、发短信、发邮件功能

    打电话

    方法1

         最简单最直接的方式:直接跳到拨号界面

         NSURL *url = [NSURL URLWithString:@"tel://10010"];

         [[UIApplication sharedApplication] openURL:url];

         缺点:电话打完后,不会自动回到原应用,直接停留在通话记录界面

    方法2

          拨号之前会弹框询问用户是否拨号,拨完后能自动回到原应用

          NSURL *url = [NSURL URLWithString:@"telprompt://10010"];

          [[UIApplication sharedApplication] openURL:url];

          缺点:因为是私有API,所以可能不会被审核通过

     方法3

          创建一个UIWebView来加载URL,拨完后能自动回到原应用

          if (_webView == nil) {

                 _webView = [[UIWebView alloc] initWithFrame:CGRectZero];

           }

           [_webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"tel://10010"]]];

     

    发短信

    方法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", @"02010010"];

          // 设置代理

          vc.messageComposeDelegate = self;

          // 显示控制器

          [self presentViewController:vc animated:YES completion:nil];

          代理方法,当短信界面关闭的时候调用,发完后会自动回到原应用

          - (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result

          {

                 // 关闭短信界面

                [controller dismissViewControllerAnimated:YES completion:nil];

                if (result == MessageComposeResultCancelled) {

                 NSLog(@"取消发送");

                 } else if (result == MessageComposeResultSent) {

                 NSLog(@"已经发出");

                } else {

                 NSLog(@"发送失败");

                }

         }

    发邮件

    方法1

          用自带的邮件客户端,发完邮件后不会自动回到原应用

          NSURL *url = [NSURL URLWithString:@"mailto://10010@qq.com"];

          [[UIApplication sharedApplication] openURL:url];

     

    方法2

          跟发短信的第2种方法差不多,只不过控制器类名叫做:MFMailComposeViewController

          假设发送的邮件内容如右图所示,代码实现看备注

          邮件发送后的代理方法回调,发完后会自动回到原应用

          - (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error

         {

                // 关闭邮件界面

               [controller dismissViewControllerAnimated:YES completion:nil];

                if (result == MFMailComposeResultCancelled) {

                      NSLog(@"取消发送");  

               } else if (result == MFMailComposeResultSent) { 

                     NSLog(@"已经发出");

               } else {

                   NSLog(@"发送失败");

              }

           }

     

     

     

     

  • 相关阅读:
    [leetcode-135-Candy]
    [leetcode-151-Reverse Words in a String]
    [leetcode-139-Word Break]
    [leetcode-129-Sum Root to Leaf Numbers]
    [leetcode-143-Reorder List]
    [leetcode-141-Linked List Cycle]
    oracle 环境变量(中文显示乱码)
    Oracle 自增长id
    Spring.net 事件的注入
    Spirng.net 替换任意方法
  • 原文地址:https://www.cnblogs.com/sunyaxue/p/4829058.html
Copyright © 2011-2022 走看看