1. 准备工作:导入信息UI库 #import <MessageUI/MessageUI.h>
2. Call Phone
  方式一: 拼接字符串 注意开头是tel: 这种方式打电话回不到原来应用中,会停留在通讯录里,而且是直接拨打电话 没有任何弹窗提示
  NSString *str = [NSString stringWithFormat:@"tel:%@",self.phoneTextField.text];
  首先得到应用的单例对象 然后调用openURL:这个方法 参数是url对象
  [[UIApplication sharedApplication] openURL:[NSURL URLWithString:str]];
  方式二: 这种方式有弹窗提示,并且能回到原来应用中 推荐这种
  NSString *str1 = [[NSString alloc] initWithFormat:@"tel:%@",self.phoneTextField.text];
  创建UIWebView对象
  UIWebView *callWebView = [[UIWebView alloc] init];
  加载一个请求对象 这个请求对象通过url对象创建 url对象又通过str1字符串获得
  [callWebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:str1]]];
  加入到self.view上
  [self.view addSubview:callWebView];
  方式三:这种方式 也可以有弹窗提示 并且也能回到原来的应用中 也推荐这种
  NSString *str2 = [NSString stringWithFormat:@"telprompt:%@",self.phoneTextField.text];
  [[UIApplication sharedApplication] openURL:[NSURL URLWithString:str2]];
3. Web 打开网址 注意:打开的网址注意是http:// 或是https://
  NSString *str = [NSString stringWithFormat:@"https://%@",self.webTextField.text];
  [[UIApplication sharedApplication] openURL:[NSURL URLWithString:str]];

4. SMS
  方式一:这种方式没法回到应用中,但是注意不要写中文等特殊字符 否则无法跳到发短信界面
  优点:简单 缺点:不能指定发送内容,只能指定发送人,而且不能回到应用中
  NSString *str = [NSString stringWithFormat:@"sms://%@",self.smsTextField.text];
  NSURL *url = [NSURL URLWithString:str];
  [[UIApplication sharedApplication] openURL:url];
  方式二:推荐这种
  优点:1.从应用出来并且能回到应用中
  2.可以发送多人
  3.可以用代码自定义消息
  4.如果手机开通了iMessage功能,会走网络通道,不走运营商通道

  判断用户设备是否能发送短信
  if (![MFMessageComposeViewController canSendText]) {
  NSLog(@"不能发送内容");

  return ;
  }

  1.创建一个短信控制器对象
  MFMessageComposeViewController *controller = [[MFMessageComposeViewController alloc] init];

  2.设置短信内容
  (1)收件人
  controller.recipients = @[@"10086",@"10010"];
  (2)短信内容
  controller.body = @"你好啊 你俩";
  (3)设置短信代理 (要遵守代理协议MFMessageComposeViewControllerDelegate)
  controller.messageComposeDelegate = self;

  3.显示短信控制器

  [self presentViewController:controller animated:YES completion:^{
  NSLog(@"显示短信控制器完成代码块");
  }];

#pragma mark - 短信控制器代理方法
- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result {

  /*
  MessageComposeResultCancelled, 取消
  MessageComposeResultSent, 发送
  MessageComposeResultFailed 失败

  result枚举
*/
  NSLog(@"%d",result);

  //注:别忘了回到应用中
  [controller dismissViewControllerAnimated:YES completion:^{
  NSLog(@"短信控制器消失完成后代码块");
  }];

  }

5. Email
  方式一:
  NSString *str = [NSString stringWithFormat:@"mailto://%@",self.emailTextField.text];
  [[UIApplication sharedApplication] openURL:[NSURL URLWithString:str]];
  方式二:
  判断是否能发送邮件
  if (![MFMailComposeViewController canSendMail]) {
  NSLog(@"不能发送邮件");
  return;
  }
  创建mail控制器对象
  MFMailComposeViewController *vc = [[MFMailComposeViewController alloc] init];
  设置邮件主题
  [vc setSubject:@"第一天 第二次发送"];
  设置邮件发送内容 第二个参数支持HTML格式
  [vc setMessageBody:@"今天主要讲了CoreData 和基本的电话、邮件、web已经短信" isHTML:YES];
  设置收件人列表
  [vc setToRecipients:@[@"56483826@qq.com"]];
  设置抄送人列表
  [vc setCcRecipients:@[@"383822222@qq.com",@"45454@163.com"]];
  设置邮件代理(要遵守邮件代理MFMailComposeViewControllerDelegate)
  vc.mailComposeDelegate = self;
  显示邮件控制器
  [self presentViewController:vc animated:YES completion:^{
  NSLog(@"跳转完成后执行代码块");
  }];

#pragma mark - 邮件代理方法
- (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error {

  /*
  result枚举类型
  MFMailComposeResultCancelled,    取消
  MFMailComposeResultSaved,     保存
  MFMailComposeResultSent,      发送
  MFMailComposeResultFailed     失败
  */
  NSLog(@"%d",result);

  [controller dismissViewControllerAnimated:YES completion:^{
  NSLog(@"邮箱控制器消失完成后代码块");
  }];

  }

网络之Call Phone、Web、SMS、Email的更多相关文章

  1. 20155324《网络对抗技术》web安全基础实践

    20155324<网络对抗技术>web安全基础实践 实验内容 使用webgoat进行XSS攻击.CSRF攻击.SQL注入 实验问答 SQL注入攻击原理,如何防御 ①SQL注入攻击是攻击者在 ...

  2. 20145215《网络对抗》Exp9 Web安全基础实践

    20145215<网络对抗>Exp9 Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御? SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符 ...

  3. 20145208 蔡野 《网络对抗》Exp9 web安全基础实践

    20145208 蔡野 <网络对抗>Exp9 web安全基础实践 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 实验后回答问题 (1)SQL注入攻击原理,如何 ...

  4. 20145311王亦徐 《网络对抗技术》 Web安全基础实践

    2014531王亦徐 <网络对抗技术> Web安全基础实践 实验内容 利用WebGoat平台尝试了一些XSS.CSRF.SQL注入攻击 基础问题回答 1.SQL注入攻击原理,如何防御原理: ...

  5. 20145325张梓靖 《网络对抗技术》 Web安全基础实践

    20145325张梓靖 <网络对抗技术> Web安全基础实践 实验内容 使用webgoat进行XSS攻击.CSRF攻击.SQL注入 XSS攻击:Stored XSS Attacks.Ref ...

  6. 20155202《网络对抗》Exp9 web安全基础实践

    20155202<网络对抗>Exp9 web安全基础实践 实验前回答问题 (1)SQL注入攻击原理,如何防御 SQL注入产生的原因,和栈溢出.XSS等很多其他的攻击方法类似,就是未经检查或 ...

  7. 20155204《网络对抗》Exp9 Web安全基础实践

    20155204<网络对抗>Exp9 Web安全基础实践 一.基础问题回答 SQL注入攻击原理,如何防御? 原理: SQL注入即是指web应用程序对用户输入数据的合法性没有判断,攻击者可以 ...

  8. 20155207 《网络对抗》 Exp9 Web安全基础

    20155207 <网络对抗> Exp9 Web安全基础 实验内容 关于WebGoat Cross-Site Scripting(XSS)练习 Injection Flaws练习 CSRF ...

  9. 20155217《网络对抗》Exp09 Web安全基础实践

    20155217<网络对抗>Exp09 Web安全基础实践 实践内容 关于webgoat:询问了很多人在安装webgoat时出现了错误,安装失败,因此直接通过同学copy了老师的虚拟机进行 ...

  10. 20155227《网络对抗》Exp9 Web安全基础实践

    20155227<网络对抗>Exp9 Web安全基础实践 实验内容 关于WebGoat Cross-Site Scripting(XSS)练习 Injection Flaws练习 CSRF ...

随机推荐

  1. tomcat 6 利用ExpiresFilter控制静态文件缓存

    在tomcat7下面 利用ExpiresFilter来控制静态文件缓存很方便,按照tomcat官网手动配置即可: 但是tomcat6 里面并没有 org.apache.catalina.filters ...

  2. linux内核打印级别

    1.printk()是一个内核的一个记录日志的机制,经常用来记录信息或者警告.printk可以指定输出日志的优先级,在include/linux/kern_levels.h中有相应的宏定义 #defi ...

  3. ArcEngine开发中“错误类型"****"未定义构造函数”

    from:http://blog.csdn.net/mengdong_zy/article/details/8990593 问题 在ArcEngine开发的时候,在编译时,发现出现这样的错误,出错的地 ...

  4. VS2013 IIS Express 无法显示站点目录列表

      VS2013 默认使用IIS Express作为虚拟服务器,或许出于与安全考虑该版本的IIS Express默认关闭站点目录列表显示的功能,访问时会出现以下错误:   为了方便起见,我使用了全局设 ...

  5. HDU 4292 Food (拆点最大流)

    题意:N个人,F种食物,D种饮料,给定每种食物和饮料的量.每个人有自己喜欢的食物和饮料,如果得到自己喜欢的食物和饮料才能得到满足.求最大满足的人数. 分析:如果只是简单地N个人选择F种食物的话可以用二 ...

  6. LeetCode 1. Two Sum 找到两数字求和索引集合

    https://leetcode.com/problems/two-sum/description/ 第一种方法  遍历查找 // // main.m // HFCDemo // // Created ...

  7. 对 java 设计模式的一些了解 (正在学习整理中)

    A .设计模式的作用 从书上摘话给你们看看 帮助我们将应用组织成容易了解,容易维护,具有弹性的架构,建立可维护的OO系统,要诀在于随时想到系统以后可能需要的变化以及应付变化的原则. 这么复杂的解释肯定 ...

  8. $python正则表达式系列(6)——"或"表达式的用法

    import re s1 = u'距离地铁5号线189米' s2 = u'距离地铁5号线(环中线)189米' s3 = u'距离地铁5号线(环中线)189米' p1 = re.compile(u'号线 ...

  9. 剑指offer编程题66道题 1-25

    1.二维数组中的查找 题目描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. ...

  10. @RequestBody和@ResponseBody的使用情形以及RestTemplate的http报文转换

    @RequestBody和@ResponseBody两个注解,分别完成请求报文到对象和对象到响应报文的转换. @RequestBody 1.@requestBody注解常用来处理content-typ ...