打電話
a.最簡單最直接的方式:直接跳到撥号界面
NSURL *url = [NSURL URLWithString:@"tel://10010"];
[[UIApplication sharedApplication] openURL:url];
缺點
電話打完後,不會自動回到原應用,直接停留在通話記錄界面
b.撥号之前會彈框詢問使用者是否撥号,撥完後能自動回到原應用
NSURL *url = [NSURL URLWithString:@"telprompt://10010"];
[[UIApplication sharedApplication] openURL:url];
缺點
因為是私有API,是以可能不會被稽核通過
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];
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];
其他:
如果想打開一些常見檔案,比如html、txt、PDF、PPT等,都可以使用UIWebView打開
隻需要告訴UIWebView檔案的URL即可
至于打開一個遠端的共享資源,比如http協定的,也可以調用系統自帶的Safari浏覽器:
NSURL *url = [NSURL URLWithString:@”http://www.baidu.com"];
[[UIApplication sharedApplication] openURL:url];