开发中经常会调用手机功能,今天来汇总一下,若有不足欢迎大家指出,下面分别介绍如下功能 :
- 电话
- 短信
- 邮件
- 通讯录
- 定位
- 跳转应用
- 跳转App Store
- 打开其他文件
电话
调用电话有下图两种不同样式,相同的是,通话结束后均会返回你原界面
1- 直接跳至拨号界面
2- 先弹框提示,用户确认后再跳至拨号界面
- 直接跳至拨号界面
1 2 |
NSURL *url = [NSURL URLWithString:@"tel://10000000"]; [[UIApplication sharedApplication] openURL:url]; |
- 弹框提示有两种实现方式
1- UIApplication打开URL
1 2 |
NSURL *url = [NSURL URLWithString:@"telprompt://10000000"]; [[UIApplication sharedApplication] openURL:url]; |
2- UIWebView加载URL
1 2 3 4 5 |
//WebView若只实现打电话功能,可以不设置尺寸,以防挡住其他 UIWebView *_web; _web= [[UIWebView alloc] initWithFrame:CGRectZero]; //在需要调用的地方调用 [_web loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"tel://10000000"]]]; |
短信
短信一般是服务器发
短信样式一样,都是直接跳至短信编辑界面,有两种实现方式
1- UIApplication打开URL方式
跳至短信编辑页面后,用户手动编辑短信内容,完成后返回短信列表界面
缺点: 不能指定短信内容,不能自动回到原应用程序
2- MFMessageComposeViewController方式
和方式1比:
可以提前编辑好短信内容,跳至短信编辑界面时带有内容
可以群发
完成后可以返回原应用程序
- UIApplication打开URL方式
1 2 |
NSURL *url = [NSURL URLWithString:@"sms://100000"]; [[UIApplication sharedApplication] openURL:url]; |
- MFMessageComposeViewController方式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
1.导入框架并实现协议 #import @interface ViewController () 2.编辑短信内容,群发对象,设置代理并弹出短信界面 MFMessageComposeViewController *messageVC = [[MFMessageComposeViewController alloc] init]; messageVC.body = @"你好,我是亲爱的大倩倩"; messageVC.recipients = @[@"000000",@"111111",@"222222"]; messageVC.messageComposeDelegate = self; [self presentViewController:messageVC animated:YES completion:nil]; 3.实现代理:短信发完后的回调,在此方法中设置返回原应用程序 参数1: 短信控制器 参数2:短信发送结果 - (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result { [controller dismissViewControllerAnimated:YES completion:nil]; NSString *messageResult; if (result == MessageComposeResultCancelled) messageResult = @"短信取消发送"; else if(result == MessageComposeResultSent) messageResult = @"短信已发送"; else messageResult = @"短信发送失败!"; UIAlertController *alertController = [UIAlertController alertControllerWithTitle:messageResult message:nil preferredStyle:UIAlertControllerStyleAlert]; UIAlertAction *myAction = [UIAlertAction actionWithTitle:@"我知道了" style:UIAlertActionStyleCancel handler:nil]; [alertController addAction:myAction]; [self presentViewController:alertController animated:YES completion:nil]; } |
邮件
邮件有两种实现方式:
1- UIApplication打开URL方式
不可提前编辑,发送后不会回到原应用程序
2- MFMailComposeViewController方式
可提前编辑,可群发,可带图片,附件,视频等,发送后退回原应用程序
- 用自带的邮件客户端(你绑定的邮箱是什么则发件人就是谁),发送完成后不会返回原应用程序
1 2 |
NSURL *url = [NSURL URLWithString:@"mailto://0000000@qq.com"]; [[UIApplication sharedApplication] openURL:url]; |
- MFMailComposeViewController方式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
1.导入框架并实现协议 #import @interface ViewController () //在触发发送邮件的方法中设置2,3,4步 2.先判断是否开启了邮箱权限 if (![MFMailComposeViewController canSendMail]) { UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"不能发送邮件" message:@"请检查邮箱设置" preferredStyle:UIAlertControllerStyleAlert]; UIAlertAction *myAction = [UIAlertAction actionWithTitle:@"我知道了" style:UIAlertActionStyleCancel handler:nil]; [alertController addAction:myAction]; [self presentViewController:alertController animated:YES completion:nil]; return; } 3.声明MFMailComposeViewController对象,设置代理及其他属性 MFMailComposeViewController *mailVC = [[MFMailComposeViewController alloc] init]; mailVC.mailComposeDelegate = self; //设置收件人 [mailVC setToRecipients:@[@"000000@qq.com",@"111111@qq.com"]]; // //添加抄送及密送 // NSArray *ccRecipients = [NSArray arrayWithObjects:@"second@example.com", @"third@example.com", nil]; // [mailVC setCcRecipients:ccRecipients]; // NSArray *bccRecipients = [NSArray arrayWithObjects:@"fourth@example.com", nil]; // [mailVC setBccRecipients:bccRecipients]; //设置主题 [mailVC setSubject:@"全体通知"]; //添加邮件正文 [mailVC setMessageBody:@"今天16:00办公室停电,大家提前下班吧" isHTML:NO]; //添加照片 UIImage *addPic = [UIImage imageNamed:@"icon_star_full@2x.png"]; NSData *imageData = UIImagePNGRepresentation(addPic); [mailVC addAttachmentData:imageData mimeType:@"" fileName:@"icon_star_full.png"]; //还可以添加pdf文件及视频 4.跳转界面 [self presentViewController:mailVC animated:YES completion:nil]; 5.实现代理 - (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error { [controller dismissViewControllerAnimated:YES completion:nil]; NSString *mailResult; switch (result) { case MFMailComposeResultCancelled: mailResult = @"用户取消编辑邮件"; break; case MFMailComposeResultSaved: mailResult = @"用户成功保存邮件"; break; case MFMailComposeResultSent: mailResult = @"用户点击发送,将邮件放到队列中,还没发送"; break; case MFMailComposeResultFailed: mailResult = @"用户试图保存或者发送邮件失败"; break; default: mailResult = @""; break; } UIAlertController *alertController = [UIAlertController |