zoukankan      html  css  js  c++  java
  • 猫猫学iOS(四十五)之常用的小功能比如打电话、打开网址、发邮件、发短信打开其他应用。

    猫猫分享,必须精品

    原创文章,欢迎转载。转载请注明:翟乃玉的博客
    地址:http://blog.csdn.net/u013357243?viewmode=contents

    简介

    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"]]];

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

    发短信

    方法1

    直接跳到发短信界面,但是不能指定短信内容,而且不能自动回到原应用

    NSURL *url = [NSURL URLWithString:@"sms://10010"];
    [[UIApplication sharedApplication] openURL:url];

    这里写图片描述

    方法2

    如果想指定短信内容,那就得使用MessageUI框架
    包含主头文件

    import

    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(@"发送失败");
        }
    }

    打开其他常见文件

    如果想打开一些常见文件,比如html、txt、PDF、PPT等,都可以使用UIWebView打开
    只需要告诉UIWebView文件的URL即可
    至于打开一个远程的共享资源,比如http协议的,也可以调用系统自带的Safari浏览器:

    NSURL *url = [NSURL URLWithString:@”http://www.baidu.com"];
    [[UIApplication sharedApplication] openURL:url];

    应用间跳转

    有时候,需要在本应用中打开其他应用,比如从A应用中跳转到B应用

    首先,B应用得有自己的URL地址(在Info.plist中配置)

    这里写图片描述
    这里写图片描述

    B应用的URL地址就是:mm://www.nycat.com

    接着在A应用中使用UIApplication完成跳转
    NSURL *url = [NSURL URLWithString:@”mm://www.nycat.com”];
    [[UIApplication sharedApplication] openURL:url];

  • 相关阅读:
    pgspider sqlite mysql docker 镜像
    pgspider docker 镜像
    pgspider基于pg 的高性能数据可视化sql 集群引擎
    diesel rust orm 框架试用
    golang 条件编译
    Performance Profiling Zeebe
    bazel 学习一 简单java 项目运行
    一个好用node http keeplive agnet
    gox 简单灵活的golang 跨平台编译工具
    mailhog 作为smtp server mock工具
  • 原文地址:https://www.cnblogs.com/znycat/p/4521002.html
Copyright © 2011-2022 走看看