很多时候我们需要利用我门自己的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、哪台电脑需要做真机调试?

代码控制打电话、发短信、发邮件、打开手机app等操作的更多相关文章

  1. Android实例-打电话、发短信和邮件,取得手机IMEI号(XE8+小米2)

    结果: 1.不提示发短信卡住,点击没有反映,我猜想,可能是因为我用的是小米手机吧. 2.接收短信报错,我猜想可能是我改了里面的方法吧(哪位大神了解,求指教). 3.project -->opti ...

  2. ios 设置亮度、声音;调用发短信、邮件、打电话

    一,设置亮度 [[UIScreen mainScreen] setBrightness:0.5];//0.0~1.0 二,设置声音 1,添加 MediaPlayer.framework 框架 2,在需 ...

  3. iOS 打电话、发短信、邮件、打开网址、调用应用等合集

    iOS中的很多功能都是非常简单的,几行代码就搞定了,比如打电话.打开网址.发邮件.发短信等,这里总结几个比较常用的: 1.打电话 方式一:最简单最直接的方式:直接跳到拨号界面 NSURL *url = ...

  4. 打电话,发短信,发邮件,app跳转

    1.打电话 - (IBAction)callPhone1:(id)sender { NSURL *url = [NSURL URLWithString:@"tel://18500441739 ...

  5. h5打电话发短信写邮件怎么实现

    // 一.打电话<a href="tel:0755-10086">打电话给:0755-10086</a> // 二.发短信,winphone系统无效< ...

  6. a链接 打电话 发短信 发email

    <a href="tel:10086">给10086打电话</a><a href="sms:10086">给10086发短信 ...

  7. iOS开发——发短信,邮件

    在IOS开发中,有时候我们会需要用到邮件发送的功能.比如,接收用户反馈和程序崩溃通知等等,这个功能是很常用的.在苹果系统中,如果彼此的手机都是iOS设备,并且开通了iMessage功能,那么彼此之间的 ...

  8. ios-王云鹤 调用ios系统功能---------------打电话、发短信、发邮件

    --------------------------------------菜鸟总结,欢迎读者雅正------------------------------------------------- 先 ...

  9. iOS中多种方式实现打电话、发短信、写邮件

    一.打电话 打电话--方法1 NSURL *URL = [NSURL URLWithString:@"tel://10010"]; [[UIApplication sharedAp ...

随机推荐

  1. easyui webapi

    今天算是踩雷了.... 先说一下,由于项目需要,我目前开发PO模块, 由于需要提供手机端,所以我在mvc项目中创建了  webapi.提供手机端调用. 然后我就考虑,easyui也使用webapi来提 ...

  2. 学习2__STM32--汉字显示

    汉字显示操作流程 第一,进入主函数 int main(void) { u32 fontcnt; u8 i,j; u8 fontx[];//gbk码 u8 key,t; delay_init(); // ...

  3. 【转】九大排序算法-C语言实现及详解

    概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存. 我们这里说说八大排序就是内部排序. 当n较大, ...

  4. #define用法之一

    [问题由来] 多文件工程中,A文件要使用B文件的func1函数,只要在A文件中include “B.h”即可: 但A文件中使用的是func2函数,它与func1函数功能一样,只是名字不同而已,即fun ...

  5. [SHOI2013]发牌 解题报告

    [SHOI2013]发牌 题意 对一个\(1\sim n(n\le 7\times 10^5)\)的环,指标最开始在\(1\),每次删去顺时针往后第\(d_i\)个元素,指标移到下一个位置.要求输出每 ...

  6. 洛谷 P2466 Sue的小球 解题报告

    P2466 [SDOI2008]Sue的小球 题目描述 Sue和Sandy最近迷上了一个电脑游戏,这个游戏的故事发在美丽神秘并且充满刺激的大海上,Sue有一支轻便小巧的小船.然而,Sue的目标并不是当 ...

  7. php in_array 的一个坑

    in_array('', [0]); // true 因为 php 里面 '' == 0 的结果是 true,这种情况即使 in_array 第三个参数传了 true,还是不能达到想要的效果,只能特殊 ...

  8. MQTT 及其 测试工具

    协议说明书:https://mcxiaoke.gitbooks.io/mqtt-cn/content/mqtt/04-OperationalBehavior.html 官网提供了很多的broker模拟 ...

  9. SDRAM学习笔记(二)

    上一篇博客主要讲解了一下SDRAM整体结构以及PCB方面的注意事项.接下来讲解一下需要用到的一些命令. 1.常用命令的缩写 上述是常用到的一些指令集. 2.模式寄存器   (1)突发长度 通过对A0~ ...

  10. 面向对象【day08】:静态方法、类方法、属性方法(九)

    本节内容 概述 静态方法 类方法 属性方法 总结 一.概述 前面我们已经讲解了关于类的很多东西,今天讲讲类的另外的特性:静态方法(staticmethod).类方法(classmethod).属性方法 ...