很多时候我们需要利用我门自己的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. ASP.NET MVC5使用Area区域

    转载:http://www.lanhusoft.com/Article/217.html 在大型的ASP.NET mvc5项目中一般都有许多个功能模块,这些功能模块可以用Area(中文翻译为区域)把它 ...

  2. 自学Linux Shell1.3-Linux文件系统

    点击返回 自学Linux命令行与Shell脚本之路 1.3-Linux文件系统 文件系统是文件存放在磁盘等存储设备上的组织方法.Linux系统能支持多种目前流行的文件系统,如EXT2. EXT3. F ...

  3. emwin 之消息 WM_INIT_DIALOG

    @2018-08-09 小记 消息 WM_INIT_DIALOG 在创建窗口时首先发送且只在创建窗口时发送即只发送这一次

  4. 全面解析Java类加载器

    深入理解和探究Java类加载机制---- 1.java.lang.ClassLoader类介绍 java.lang.ClassLoader类的基本职责就是根据一个指定的类的名称,找到或者生成其对应的字 ...

  5. [NOI2017]泳池——概率DP+线性递推

    [NOI2017]泳池 实在没有思路啊~~~ luogu题解 1.差分,转化成至多k的概率减去至多k-1的概率.这样就不用记录“有没有出现k”这个信息了 2.n是1e9,感觉要递推然后利用数列的加速技 ...

  6. CF 1023

    昨天晚上打的一场CF,口胡一下前4题吧. A要注意细节,先找*,如果没有就判两者相等. 然后注意长度n - 1 <= m,然后前后比较,最后判断中间是不是字母. B先判断有没有解,然后求出 k ...

  7. P1198 最大数 线段树水题

    这道题模拟一下可以过,但是我们发现线段树也可以安全水过...... 写的线段树只需要滋磁单点修改,区间求max即可 我一开始犯了一个很SB的错误:每次插入修改了t,然后疯狂爆0到怀疑人生... 而且我 ...

  8. CRC-16的原理和实现

    CRC的全称为Cyclic Redundancy Check,中文名称为循环冗余校验.它是一类重要的线性分组码,编码和解码方法简单,检错和纠错能力强,在通信领域广泛地用于实现差错控制.实际上,除 数据 ...

  9. scrapy 动态IP、随机UA、验证码

    随机UA https://github.com/hellysmile/fake-useragent DOWNLOADER_MIDDLEWARES增加自定义 from fake_useragent im ...

  10. CentOS Linux release 7.3破解密码详解

    CentOS Linux release 7.3破解密码详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 公司最近接了一个项目,拿到客户现有的源代码,但是服务器用户密码并不知情, ...