天天看點

打電話,發郵件(UIApplication使用小技巧)

打電話

a.最簡單最直接的方式:直接跳到撥号界面

NSURL *url = [NSURL URLWithString:@"tel://10010"];

[[UIApplication sharedApplication] openURL:url];

缺點

電話打完後,不會自動回到原應用,直接停留在通話記錄界面

打電話,發郵件(UIApplication使用小技巧)

b.撥号之前會彈框詢問使用者是否撥号,撥完後能自動回到原應用

NSURL *url = [NSURL URLWithString:@"telprompt://10010"];

[[UIApplication sharedApplication] openURL:url];

缺點

因為是私有API,是以可能不會被稽核通過

打電話,發郵件(UIApplication使用小技巧)

c.建立一個UIWebView來加載URL,撥完後能自動回到原應用

if (_webView == nil) {

    _webView = [[UIWebView alloc] initWithFrame:CGRectZero];

}

[_webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"tel://10010"]]];

需要注意的是:這個webView千萬不要添加到界面上來,不然會擋住其他界面

發短信

a.直接跳到發短信界面,但是不能指定短信内容,而且不能自動回到原應用

NSURL *url = [NSURL URLWithString:@"sms://10010"];

[[UIApplication sharedApplication] openURL:url];

打電話,發郵件(UIApplication使用小技巧)

b.如果想指定短信内容,那就得使用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(@"發送失敗");

    }

}

發郵件

a.用自帶的郵件用戶端,發完郵件後不會自動回到原應用

NSURL *url = [NSURL URLWithString:@"mailto://[email protected]"];

[[UIApplication sharedApplication] openURL:url];

打電話,發郵件(UIApplication使用小技巧)

其他:

如果想打開一些常見檔案,比如html、txt、PDF、PPT等,都可以使用UIWebView打開

隻需要告訴UIWebView檔案的URL即可

至于打開一個遠端的共享資源,比如http協定的,也可以調用系統自帶的Safari浏覽器:

NSURL *url = [NSURL URLWithString:@”http://www.baidu.com"];

[[UIApplication sharedApplication] openURL:url];

繼續閱讀