• 网络之Call Phone、Web、SMS、Email



    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(@"邮箱控制器消失完成后代码块");
      }];

      }

  • 相关阅读:
    微信小程序中从后台获取的数组,然后需要改变数组其中一个属性值,然后setData
    vue 项目中监听 localStorage 或 sessionStorage 的变化
    微信小程序怎么区分线上和测试环境
    vue中使用SVG图标,并且想批量导入,然后需要使用的时候直接添加就可以
    微信小程序中引用VantUI组件
    解决webStorm打开vue项目时加载文件卡死的问题
    关于ES6中的Proxy
    Object.defineProperty()详解
    openCV模块应用之解析传输的图片
    [Java EE]缓存技术初探
  • 原文地址:https://www.cnblogs.com/GJ-ios/p/5456453.html
Copyright © 2020-2023  润新知