打電話、發短信、web以及發郵件

  1 #import "ViewController.h"
  2 #import <MessageUI/MessageUI.h>   //導入信息UI庫
  3 
  4 @interface ViewController () <MFMessageComposeViewControllerDelegate,MFMailComposeViewControllerDelegate>
  5 
  6 @end
  7 
  8 @implementation ViewController
  9 
 10 - (void)viewDidLoad {
 11     [super viewDidLoad];
 12     // Do any additional setup after loading the view, typically from a nib.
 13 }
 14 
 15 - (void)didReceiveMemoryWarning {
 16     [super didReceiveMemoryWarning];
 17     // Dispose of any resources that can be recreated.
 18 }
 19 
 20 - (IBAction)callPhone:(id)sender {
 21     //方式1 :拼接字符串 注意開頭是tel: 這種方式打電話回不到原來應用中,會停留在通信錄裏,並且是直接撥打電話 沒有任何彈窗提示
 22 //    NSString *str = [NSString stringWithFormat:@"tel:%@",self.phoneTextField.text];
 23 //    //首先獲得應用的單例對象 而後調用openURL:這個方法 參數是url對象
 24 //    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:str]];
 25     
 26     
 27     //方式2,這種方式有彈窗提示,而且能回到原來應用中 推薦這種
 28 //    NSString *str1 = [[NSString alloc] initWithFormat:@"tel:%@",self.phoneTextField.text];
 29 //    //建立UIWebView對象
 30 //    UIWebView *callWebView = [[UIWebView alloc] init];
 31 //    //加載一個請求對象 這個請求對象經過url對象建立  url對象又經過str1字符串得到
 32 //    [callWebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:str1]]];
 33 //    //加入到self.view上
 34 //    [self.view addSubview:callWebView];
 35     
 36     
 37     //方式3
 38     //這種方式 也能夠有彈窗提示 而且也能回到原來的應用中  也推薦這種
 39     NSString *str2 = [NSString stringWithFormat:@"telprompt:%@",self.phoneTextField.text];
 40     [[UIApplication sharedApplication] openURL:[NSURL URLWithString:str2]];
 41     
 42 }
 43 
 44 - (IBAction)callWeb:(id)sender {
 45     
 46     //打開網址 注意:打開的網址注意是http:// 或是https://
 47     NSString *str = [NSString stringWithFormat:@"https://%@",self.webTextField.text];
 48     [[UIApplication sharedApplication] openURL:[NSURL URLWithString:str]];
 49     
 50     
 51 }
 52 - (IBAction)sendSMS:(id)sender {
 53     
 54     //方式1:這種方式無法回到應用中,可是注意不要寫中文等特殊字符 不然沒法跳到發短信界面
 55     //優勢:簡單 缺點:不能指定發送內容,只能指定發送人,並且不能回到應用中
 56 //    NSString *str = [NSString stringWithFormat:@"sms://%@",self.smsTextField.text];
 57 //    NSURL *url = [NSURL URLWithString:str];
 58 //    [[UIApplication sharedApplication] openURL:url];
 59     
 60     
 61     //方式2 推薦這種
 62     /*
 63      優勢:1.從應用出來而且能回到應用中
 64           2.能夠發送多人
 65           3.能夠用代碼自定義消息
 66           4.若是手機開通了iMessage功能,會走網絡通道,不走運營商通道
 67      */
 68     
 69     //判斷用戶設備是否能發送短信
 70     if (![MFMessageComposeViewController canSendText]) {
 71         NSLog(@"不能發送內容");
 72         
 73         return ;
 74     }
 75     
 76     //1.建立一個短信控制器對象
 77     MFMessageComposeViewController *controller = [[MFMessageComposeViewController alloc] init];
 78     
 79     //2.設置短信內容
 80     //  (1)收件人
 81     controller.recipients = @[@"10086",@"10010"];
 82     //  (2)短信內容
 83     controller.body = @"你好啊 你倆";
 84     //  (3)設置短信代理
 85     controller.messageComposeDelegate = self;
 86     
 87     //3.顯示短信控制器
 88     
 89     [self presentViewController:controller animated:YES completion:^{
 90         NSLog(@"顯示短信控制器完成代碼塊");
 91     }];
 92     
 93     
 94 }
 95 
 96 #pragma mark - 短信控制器代理方法
 97 
 98 - (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result {
 99     
100     /*
101      MessageComposeResultCancelled, 取消
102      MessageComposeResultSent,      發送
103      MessageComposeResultFailed     失敗
104 
105      result枚舉
106      */
107     NSLog(@"%d",result);
108     
109     //注:別忘了回到應用中
110     [controller dismissViewControllerAnimated:YES completion:^{
111         NSLog(@"短信控制器消失完成後代碼塊");
112     }];
113     
114 }
115 
116 - (IBAction)sendEmail:(id)sender {
117     
118     //方式1
119 //    NSString *str = [NSString stringWithFormat:@"mailto://%@",self.emailTextField.text];
120 //    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:str]];
121     
122     //方式2
123     //判斷是否能發送郵件
124     if (![MFMailComposeViewController canSendMail]) {
125         NSLog(@"不能發送郵件");
126         return;
127     }
128     //建立mail控制器對象
129     MFMailComposeViewController *vc = [[MFMailComposeViewController alloc] init];
130     //設置郵件主題
131     [vc setSubject:@"我愛你"];
132     //設置郵件發送內容 第二個參數支持HTML格式
133     [vc setMessageBody:@"基本的電話、郵件、短信" isHTML:YES];
134     //設置收件人列表
135     [vc setToRecipients:@[@"*******@qq.com"]];
136     //設置抄送人列表
137     [vc setCcRecipients:@[@"********@qq.com",@"********@163.com"]];
138     //設置郵件代理
139     vc.mailComposeDelegate = self;
140     //顯示郵件控制器
141     [self presentViewController:vc animated:YES completion:^{
142         NSLog(@"跳轉完成後執行代碼塊");
143     }];
144     
145     
146 }
147 
148 - (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error {
149     
150     /*
151      result枚舉類型
152      MFMailComposeResultCancelled,  取消
153      MFMailComposeResultSaved,      保存
154      MFMailComposeResultSent,       發送
155      MFMailComposeResultFailed      失敗
156      */
157     NSLog(@"%d",result);
158     
159     [controller dismissViewControllerAnimated:YES completion:^{
160         NSLog(@"郵箱控制器消失完成後代碼塊");
161     }];
162     
163 }
164 @end

打電話、發短信、web以及發郵件web

另外補充一下,用下面的我的感受更好一些!上面的UIWebView好像彈框的速度有點慢 本身彈框一下更方便一些網絡

- (void)callAction:(NSString *)phone{app

    NSMutableString* str1=[[NSMutableString alloc]initWithString:phone];//存在堆區,可變字符串url

    [str1 insertString:@"-"atIndex:3];//把一個字符串插入另外一個字符串中的某一個位置spa

    [str1 insertString:@"-"atIndex:8];//把一個字符串插入另外一個字符串中的某一個位置代理

    UIAlertController *alert = [UIAlertController alertControllerWithTitle:str1 message:nil preferredStyle:UIAlertControllerStyleAlert];code

    // 設置popover指向的itemorm

    alert.popoverPresentationController.barButtonItem = self.navigationItem.leftBarButtonItem;對象

    // 添加按鈕blog

    [alert addAction:[UIAlertAction actionWithTitle:@"呼叫" style:UIAlertActionStyleDestructive handler:^(UIAlertAction *action) {

        NSLog(@"點擊了呼叫按鈕");

        NSString* phoneStr = [NSString stringWithFormat:@"tel://%@",phone];

        if ([phoneStr hasPrefix:@"sms:"] || [phoneStr hasPrefix:@"tel:"]) {

            UIApplication * app = [UIApplication sharedApplication];

            if ([app canOpenURL:[NSURL URLWithString:phoneStr]]) {

                [app openURL:[NSURL URLWithString:phoneStr]];

            }

        }

    }]];

    [alert addAction:[UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {

        NSLog(@"點擊了取消按鈕");

    }]];

        [self presentViewController:alert animated:YES completion:nil];

   }

相關文章
相關標籤/搜索