• iOS 电话/短信/邮件/UIApplication


     1,打电话的三种方式:
    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,拨完后能⾃自动回到原应⽤用
    _webView = [[UIWebView alloc] initWithFrame:CGRectZero];

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

    需要注意的是:这个webView千万不要添加到界⾯面上来,不然会挡住其他界⾯面 
    ———————————————————————————

    2发短信的两种方式:

    1⃣️
    • 直接跳到发短信界⾯面,但是不能指定短信内容,⽽而且不能⾃自动回到原应⽤用
     NSURL *url = [NSURL URLWithString:@"sms://10010"];
    [[UIApplication sharedApplication] openURL:url]; 
     
    2⃣️

    • 如果想指定短信内容,那就得使⽤用MessageUI框架• 包含主头⽂文件
    #import <MessageUI/MessageUI.h>

    • 显⽰示发短信的控制器

      1  MFMessageComposeViewController *vc = [[MFMessageComposeViewController alloc] init];
      2 
      3         // 设置短信内容
      4 
      5         vc.body = @"吃饭了没?";
      6 
      7         // 设置收件人列表
      8 
      9         vc.recipients = @[@"10010", @"02010010"];
     10 
     11         // 设置代理
     12 
     13         vc.messageComposeDelegate = self;
     14 
     15         
     16 
     17         // 显示控制器
     18 
     19         [self presentViewController:vc animated:YES completion:nil]; 
     20 
     21  实现代理方法:
     22 
     23 • 代理⽅方法,当短信界⾯面关闭的时候调⽤用,发完后会⾃自动回到原应⽤用
     24 
     25 - (void)messageComposeViewController:(MFMessageComposeViewController *)controllerdidFinishWithResult:(MessageComposeResult)result
     26 { // 关闭短信界⾯面
     27 
     28  *  点击取消按钮会自动调用
     29 
     30  */
     31 
     32  
     33 [controller dismissViewControllerAnimated:YES completion:nil];
     34 if (result == MessageComposeResultCancelled) {NSLog(@"取消发送");
     35 
     36 } else if (result == MessageComposeResultSent) {NSLog(@"已经发出");
     37 
     38 } else {NSLog(@"发送失败"); 
     39 }
     40 } 
     41 --------------------------------
     42 3,发邮件
     43  
     44 
     45 • 跟发短信的第2种⽅方法差不多,只不过控制器类名叫做:MFMailComposeViewController
     46 • 假设发送的邮件内容如右图所⽰示,代码实现看备注 
     47 
     48 // 不能发邮件
     49 
     50 //        if (![MFMailComposeViewController canSendMail]) return;
     51 
     52         
     53 
     54         MFMailComposeViewController *vc = [[MFMailComposeViewController alloc] init];
     55 
     56         
     57 
     58         // 设置邮件主题
     59 
     60         [vc setSubject:@"会议"];
     61 
     62         // 设置邮件内容
     63 
     64         [vc setMessageBody:@"今天下午开会吧" isHTML:NO];
     65 
     66         // 设置收件人列表
     67 
     68         [vc setToRecipients:@[@"643055866@qq.com"]];
     69 
     70         // 设置抄送人列表
     71 
     72         [vc setCcRecipients:@[@"1234@qq.com"]];
     73 
     74         // 设置密送人列表
     75 
     76         [vc setBccRecipients:@[@"56789@qq.com"]];
     77 
     78         
     79 
     80         // 添加附件(一张图片)
     81 
     82         UIImage *image = [UIImage imageNamed:@"lufy.png"];
     83 
     84         NSData *data = UIImagePNGRepresentation(image);
     85 
     86         [vc addAttachmentData:data mimeType:@"image/png" fileName:@"lufy.png"];
     87 
     88         
     89 
     90         // 设置代理
     91 
     92         vc.mailComposeDelegate = self;
     93 
     94         // 显示控制器
     95 
     96         [self presentViewController:vc animated:YES completion:nil];
     97 
     98     };
     99 
    100     
    101 
    102  
    103  • 邮件发送后的代理⽅方法回调,发完后会⾃自动回到原应⽤用
    104 
    105 /**
    106 
    107  *  点击取消按钮会自动调用
    108 
    109  */
    110 
    111  
    112 
    113 - (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error
    114 
    115 {
    116 
    117     [controller dismissViewControllerAnimated:YES completion:nil];
    118 
    119 if (result == MFMailComposeResultCancelled) {NSLog(@"取消发送");
    120 
    121 } else if (result == MFMailComposeResultSent) {NSLog(@"已经发出");
    122 
    123 } else {NSLog(@"发送失败");
    124 
    125  
    126 
    127 }
     

    --------------------- 

    4,打开其他文件:

    打开其他常见⽂文件

    • 如果想打开⼀一些常见⽂文件,⽐比如html、txt、PDF、PPT等,都可以使⽤用UIWebView打开

    • 只需要告诉UIWebView⽂文件的URL即可
    • ⾄至于打开⼀一个远程的共享资源,⽐比如http协议的,也可以调⽤用系统⾃自带的

    Safari浏览器:
    NSURL *url = [NSURL URLWithString:@”http://www.baidu.com"];

    [[UIApplication sharedApplication] openURL:url]; 
     ----------------------
    5,应用间的跳转:
     图片

    应⽤用评分

    • 为了提⾼高应⽤用的⽤用户体验,经常需要邀请⽤用户对应⽤用进⾏行评分
    • 应⽤用评分⽆无⾮非就是跳转到AppStore展⽰示⾃自⼰己的应⽤用,然后由⽤用户⾃自⼰己撰写评论

    • 如何跳转到AppStore,并且展⽰示⾃自⼰己的应⽤用➢ ⽅方法1

    1 NSString *appid = @"444934666";
    2  NSString *str = [NSString stringWithFormat: @"itms-apps://ax.itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=%@", appid];
    3 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:str]];
    4 ➢ ⽅方法2
    5 NSString *str = [NSString stringWithFormat:
    6 
    7 @"itms-apps://itunes.apple.com/cn/app/id%@?mt=8", appid]; 
    8 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:str]]; 
    9  
  • 相关阅读:
    jquery ajax 向后台传递数组
    定时任务
    C# 好用的插件
    C# 跳出循环
    存储区更新、插入或删除语句影响到了意外的行数(0)。实体在加载后可能被修改或删除。刷新 ObjectS
    Opencv2.4.9源码分析——HoughLinesP
    OpenCV+C++ 视频图片相互转换
    opencv2.2版本不稳定
    OpenCV 透视变换【图像归一化矫正】
    opencv配置注意事项【总结】
  • 原文地址:https://www.cnblogs.com/qq449832375/p/4671854.html
Copyright © 2020-2023  润新知