iOS中的很多小功能都是非常簡(jiǎn)單的腥放,幾行代碼就搞定了比藻,比如打電話郑象、打開(kāi)網(wǎng)址贡这、發(fā)郵件、發(fā)短信等
打電話~方法1
-
最簡(jiǎn)單最直接的方式:直接跳到撥號(hào)界面
NSURL *url = [NSURL URLWithString:@"tel://10010"]; [[UIApplication sharedApplication] openURL:url];
缺點(diǎn)
電話打完之后不會(huì)自動(dòng)回到原應(yīng)用扣唱,直接停留在通話記錄界面
打電話~方法2
-
撥打之前會(huì)彈框詢問(wèn)用戶是否撥號(hào)藕坯,撥完后能自動(dòng)回到原應(yīng)用
NSURL *url = [NSURL URLWithString:@"telprompt://10010"]; [[UIApplication sharedApplication] openURL:url];
缺點(diǎn)
因?yàn)槭撬接蠥PI团南,所以可能不會(huì)被審核通過(guò)
打電話~方法3
創(chuàng)建一個(gè)UIWebView來(lái)加載URL,撥完后能自動(dòng)回到原應(yīng)用
if (_webView == nil) {
_webView = [[UIWebView alloc] initWithFrame:CGRectZero];
}
[_webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"tel://10010"]]];
撥號(hào)之前會(huì)彈框詢問(wèn)用戶是否撥號(hào)炼彪,撥完后能自動(dòng)回到原程序
注意:這個(gè)webView千萬(wàn)不要設(shè)置尺寸吐根,不然會(huì)擋住其他界面,他只是用來(lái)打電話辐马,不需要顯示
發(fā)短信~方法1
-
直接跳到發(fā)短信界面拷橘,但是不能指定短信內(nèi)容,而且不能回到原應(yīng)用
NSURL *url = [NSURL URLWithString:@"sms://10010"]; [[UIApplication sharedApplication] openURL:url];
發(fā)短信~方法2
如果想指定短信內(nèi)容喜爷,那就得使用MessageUI框架
包含主頭文件
#import <MessageUI/MessageUI.h>
//顯示發(fā)短信的控制器
MFMessageComposeViewController *vc = [[MFMessageComposeViewController alloc] init];
//設(shè)置短信內(nèi)容
vc.body = @"How are you冗疮?";
//設(shè)置收件人列表
vc.recipients = @[@"10010", @"10086"];
設(shè)置代理
vc.messageComposeDelegate = self;
顯示控制器
[self presentViewController:vc animated:YES completion:nil];
代理方法,當(dāng)短信界面關(guān)閉的時(shí)候調(diào)用檩帐,發(fā)完后會(huì)自動(dòng)回到原應(yīng)用
- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result
{
//關(guān)閉短信界面
[controller dismissViewControllerAnimated:YES completion:nil];
if (result == MessageComposeResultCancelled) {
NSLog(@"取消發(fā)送");
} else if (result == MessageComposeResultSent) {
NSLog(@"已經(jīng)發(fā)出");
} else {
NSLog(@"發(fā)送失敗");
}
}
發(fā)郵件~方法1
-
用自帶的郵件客戶端术幔,發(fā)完郵件后不會(huì)自動(dòng)回到原應(yīng)用
NSURL *url = [NSURL URLWithString:@"mailto://1648465054@qq.com"]; [[UIApplication sharedApplication] openURL:url];
-
參數(shù)實(shí)現(xiàn)
//創(chuàng)建可變的地址字符串對(duì)象 NSMutableString *mailUrl = [[NSMutableString alloc] init]; //添加收件人,如有多個(gè)收件人,可以使用componentsJoinedByString方法連接湃密,連接符為"," NSString *recipients = @"1648465054@qq.com"; [mailUrl appendFormat:@"mailto:%@?", recipients]; //添加抄送人 NSString *ccRecipients = @"10086@qq.com"; [mailUrl appendFormat:@"&cc=%@", ccRecipients]; //添加密送人 NSString *bccRecipients = @"123456@163.com"; [mailUrl appendFormat:@"&bcc=%@", bccRecipients]; //添加郵件主題 [mailUrl appendFormat:@"&subject=%@",@"設(shè)置郵件主題"]; //添加郵件內(nèi)容 [mailUrl appendString:@"&body=<b>Hello</b> World!"]; //跳轉(zhuǎn)到系統(tǒng)郵件App發(fā)送郵件 NSString *emailPath = [mailUrl stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLFragmentAllowedCharacterSet]]; [[UIApplication sharedApplication]openURL:[NSURL URLWithString:emailPath] options:@{} completionHandler:nil];
發(fā)郵件~方法2
-
跟發(fā)短信的第二種方法差不多诅挑,只不過(guò)控制器名叫做
MFMailComposeViewController
——使用模態(tài)跳轉(zhuǎn)出郵件發(fā)送界面。具體實(shí)現(xiàn)如下:
1) 項(xiàng)目需要導(dǎo)入MessageUI.framework框架
2) 在對(duì)應(yīng)類里導(dǎo)入頭文件:#import <MessageUI/MessageUI.h>
3) 對(duì)應(yīng)的類遵從代理:MFMailComposeViewControllerDelegate//判斷用戶是否已設(shè)置郵件賬戶 if ([MFMailComposeViewController canSendMail]) { [self sendEmailAction]; // 調(diào)用發(fā)送郵件的代碼 }else{ //給出提示,設(shè)備未開(kāi)啟郵件服務(wù) }
-
實(shí)現(xiàn)
-(void)sendEmailAction{ // 創(chuàng)建郵件發(fā)送界面 MFMailComposeViewController *mailCompose = [[MFMailComposeViewController alloc] init]; // 設(shè)置郵件代理 [mailCompose setMailComposeDelegate:self]; // 設(shè)置收件人 [mailCompose setToRecipients:@[@"sparkle_ds@163.com"]]; // 設(shè)置抄送人 [mailCompose setCcRecipients:@[@"1622849369@qq.com"]]; // 設(shè)置密送人 [mailCompose setBccRecipients:@[@"15690725786@163.com"]]; // 設(shè)置郵件主題 [mailCompose setSubject:@"設(shè)置郵件主題"]; //設(shè)置郵件的正文內(nèi)容 NSString *emailContent = @"我是郵件內(nèi)容"; // 是否為HTML格式 [mailCompose setMessageBody:emailContent isHTML:NO]; // 如使用HTML格式泛源,則為以下代碼 // [mailCompose setMessageBody:@"<html><body><p>Hello</p><p>World拔妥!</p></body></html>" isHTML:YES]; //添加附件 UIImage *image = [UIImage imageNamed:@"qq"]; NSData *imageData = UIImagePNGRepresentation(image); [mailCompose addAttachmentData:imageData mimeType:@"" fileName:@"qq.png"]; NSString *file = [[NSBundle mainBundle] pathForResource:@"EmptyPDF" ofType:@"pdf"]; NSData *pdf = [NSData dataWithContentsOfFile:file]; [mailCompose addAttachmentData:pdf mimeType:@"" fileName:@"EmptyPDF.pdf"]; // 彈出郵件發(fā)送視圖 [_curVC presentViewController:mailCompose animated:YES completion:nil]; }
-
代理方法
#pragma mark - MFMailComposeViewControllerDelegate的代理方法: -(void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error{ switch (result) { case MFMailComposeResultCancelled: NSLog(@"Mail send canceled: 用戶取消編輯"); break; case MFMailComposeResultSaved: NSLog(@"Mail saved: 用戶保存郵件"); break; case MFMailComposeResultSent: NSLog(@"Mail sent: 用戶點(diǎn)擊發(fā)送"); break; case MFMailComposeResultFailed: NSLog(@"Mail send errored: %@ : 用戶嘗試保存或發(fā)送郵件失敗", [error localizedDescription]); break; } // 關(guān)閉郵件發(fā)送視圖 [_curVC dismissViewControllerAnimated:YES completion:nil]; }
發(fā)郵件~方法3
SKPSMTPMessage(第三方庫(kù))——可以在不告知用戶的情況下進(jìn)行郵件發(fā)送,但建議在發(fā)送之前告知用戶达箍,讓用戶決定是否發(fā)送没龙。具體實(shí)現(xiàn)如下:
1)添加該第三方庫(kù)
2)項(xiàng)目還需要導(dǎo)入CFNetwork.framework框架
3)在對(duì)應(yīng)類中導(dǎo)入頭文件:#import "SKPSMTPMessage.h",#import "NSData+Base64Additions.h"
4)對(duì)應(yīng)的類遵從代理:SKPSMTPMessageDelegate
感興趣的可以轉(zhuǎn)至github上面查看一下具體的使用方法
打開(kāi)其他常見(jiàn)文件
如果想打開(kāi)一些常見(jiàn)文件缎玫,比如html硬纤、txt、PDF碘梢、PPT等咬摇,都可以使用UIWebView打開(kāi)
只需要告訴UIWebView文件的URL即可
至于打開(kāi)一個(gè)遠(yuǎn)程的共享資源,比如http協(xié)議的煞躬,也可以調(diào)用系統(tǒng)自帶的Safari瀏覽器:
NSURL *url = [NSURL URLWithString:@”http://www.baidu.com"];
[[UIApplication sharedApplication] openURL:url];
應(yīng)用間的跳轉(zhuǎn)
有時(shí)候需要在本應(yīng)用中打開(kāi)其他應(yīng)用肛鹏,比如從A應(yīng)用跳轉(zhuǎn)到B應(yīng)用
首先B應(yīng)用應(yīng)該有自己的url地址(URL Schemes):如
jimoo://ios.open
-
接著在A應(yīng)用中使用UIApplication完成跳轉(zhuǎn)
NSURL *url = [NSURL URLWithString:@"jimoo://ios.open"]; [[UIApplication sharedApplication] openURL:url];
應(yīng)用評(píng)分
為了提高應(yīng)用的用戶體驗(yàn),經(jīng)常需要邀請(qǐng)用戶對(duì)應(yīng)用進(jìn)行評(píng)分恩沛,應(yīng)用評(píng)分無(wú)非就是跳轉(zhuǎn)到AppStore展示自己的應(yīng)用在扰,然后由用戶自己撰寫評(píng)論,如何跳轉(zhuǎn)到AppStore雷客,并且展示自己的應(yīng)用芒珠。
方法:
NSString *appid = @"725296055”;
NSString *str = [NSString stringWithFormat:@"itms-apps://itunes.apple.com/cn/app/id%@?mt=8", appid];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:str]];