zoukankan      html  css  js  c++  java
  • 代码控制打电话、发短信、发邮件、打开手机app等操作

      很多时候我们需要利用我门自己的app进行一些打电话、发短信等的操作,那么如何利用代码实现呢,下面就介绍一些简单的方法来实现这些操作。

      一、打电话:

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

                }

           

    附录一:打开手机上现有app
    •如果想打开一些常见文件,比如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地址就是:mj://ios.itcast.cn
    •接着在A应用中使用UIApplication完成跳转

    NSURL *url = [NSURL URLWithString:@"mj://ios.itcast.cn"];

    [[UIApplication sharedApplication] openURL:url] 

    附录二:应用评分

    •为了提高应用的用户体验,经常需要邀请用户对应用进行评分
    •应用评分无非就是跳转到AppStore展示自己的应用,然后由用户自己撰写评论
    •如何跳转到AppStore,并且展示自己的应用
    Ø方法1

    NSString *appid = @"444934666";

    NSString *str = [NSString stringWithFormat:

                     @"itms-apps://ax.itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=%@", appid];

    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:str]];

     

    Ø方法2

    NSString *str = [NSString stringWithFormat:

                     @"itms-apps://itunes.apple.com/cn/app/id%@?mt=8", appid];

    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:str]];

    附录三:真机调试

    •真机调试的主要步骤
    1.登录开发者主页
    2.生成cer证书:cer是一个跟电脑相关联的证书文件,让电脑具备真机调试的功能
    3.添加App ID:调试哪些app?
    4.注册真机设备:哪台设备需要做真机调试?
    5.生成MobileProvision文件:结合2、3、4生成一个手机规定文件
    6.导入cer、MobileProvision文件
    •最终会得到2个文件
    ØCer文件:让电脑具备真机调试的功能
    ØMobileProvision文件:哪台设备、哪些app、哪台电脑需要做真机调试?
  • 相关阅读:
    Eclipse中自动提示的方法参数都是arg0,arg1的解决方法
    eclipse 下找不到或无法加载主类的解决办法
    将博客搬至CSDN
    java接口中定义成员变量
    重写与重载
    多位数每一位个系数:个位num%10;十位num/10%10.......
    输出 n=6 的三角数字阵(JAVA基础回顾)
    二维数组的遍历之查漏补缺
    For循环打印正三角,倒三角,菱形
    JAVA的continue用法
  • 原文地址:https://www.cnblogs.com/pengpengzhang/p/4712583.html
Copyright © 2011-2022 走看看