iOS 电话/短信/邮件/UIApplication
1⃣️
• 最简单最直接的⽅方式:直接跳到拨号界⾯面
NSURL *url = [NSURL URLWithString:@"tel://10010"];
[[UIApplication sharedApplication] openURL:url];
• 缺点电话打完后,不会⾃自动回到原应⽤用,直接停留在通话记录界⾯面
2⃣️
• 拨号之前会弹框询问⽤用户是否拨号,拨完后能⾃自动回到原应⽤用
NSURL *url = [NSURL URLWithString:@"telprompt://10010"];
[[UIApplication sharedApplication] openURL:url];
• 缺点因为是私有API,所以可能不会被审核通过
3⃣️
一般用这个
• 创建⼀一个UIWebView来加载URL,拨完后能⾃自动回到原应⽤用
_webView = [[UIWebView alloc] initWithFrame:CGRectZero];
需要注意的是:这个webView千万不要添加到界⾯面上来,不然会挡住其他界⾯面
———————————————————————————
2发短信的两种方式:
1⃣️
• 直接跳到发短信界⾯面,但是不能指定短信内容,⽽而且不能⾃自动回到原应⽤用
NSURL *url = [NSURL URLWithString:@"sms://10010"];
[[UIApplication sharedApplication] openURL:url];
2⃣️
• 如果想指定短信内容,那就得使⽤用MessageUI框架• 包含主头⽂文件
#import <MessageUI/MessageUI.h>
• 显⽰示发短信的控制器
1 MFMessageComposeViewController *vc = [[MFMessageComposeViewController alloc] init]; 2 3 // 设置短信内容 4 5 vc.body = @"吃饭了没?"; 6 7 // 设置收件人列表 8 9 vc.recipients = @[@"10010", @"02010010"]; 10 11 // 设置代理 12 13 vc.messageComposeDelegate = self; 14 15 16 17 // 显示控制器 18 19 [self presentViewController:vc animated:YES completion:nil]; 20 21 实现代理方法: 22 23 • 代理⽅方法,当短信界⾯面关闭的时候调⽤用,发完后会⾃自动回到原应⽤用 24 25 - (void)messageComposeViewController:(MFMessageComposeViewController *)controllerdidFinishWithResult:(MessageComposeResult)result 26 { // 关闭短信界⾯面 27 28 * 点击取消按钮会自动调用 29 30 */ 31 32 33 [controller dismissViewControllerAnimated:YES completion:nil]; 34 if (result == MessageComposeResultCancelled) {NSLog(@"取消发送"); 35 36 } else if (result == MessageComposeResultSent) {NSLog(@"已经发出"); 37 38 } else {NSLog(@"发送失败"); 39 } 40 } 41 -------------------------------- 42 3,发邮件 43 44 45 • 跟发短信的第2种⽅方法差不多,只不过控制器类名叫做:MFMailComposeViewController 46 • 假设发送的邮件内容如右图所⽰示,代码实现看备注 47 48 // 不能发邮件 49 50 // if (![MFMailComposeViewController canSendMail]) return; 51 52 53 54 MFMailComposeViewController *vc = [[MFMailComposeViewController alloc] init]; 55 56 57 58 // 设置邮件主题 59 60 [vc setSubject:@"会议"]; 61 62 // 设置邮件内容 63 64 [vc setMessageBody:@"今天下午开会吧" isHTML:NO]; 65 66 // 设置收件人列表 67 68 [vc setToRecipients:@[@"643055866@qq.com"]]; 69 70 // 设置抄送人列表 71 72 [vc setCcRecipients:@[@"1234@qq.com"]]; 73 74 // 设置密送人列表 75 76 [vc setBccRecipients:@[@"56789@qq.com"]]; 77 78 79 80 // 添加附件(一张图片) 81 82 UIImage *image = [UIImage imageNamed:@"lufy.png"]; 83 84 NSData *data = UIImagePNGRepresentation(image); 85 86 [vc addAttachmentData:data mimeType:@"image/png" fileName:@"lufy.png"]; 87 88 89 90 // 设置代理 91 92 vc.mailComposeDelegate = self; 93 94 // 显示控制器 95 96 [self presentViewController:vc animated:YES completion:nil]; 97 98 }; 99 100 101 102 103 • 邮件发送后的代理⽅方法回调,发完后会⾃自动回到原应⽤用 104 105 /** 106 107 * 点击取消按钮会自动调用 108 109 */ 110 111 112 113 - (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error 114 115 { 116 117 [controller dismissViewControllerAnimated:YES completion:nil]; 118 119 if (result == MFMailComposeResultCancelled) {NSLog(@"取消发送"); 120 121 } else if (result == MFMailComposeResultSent) {NSLog(@"已经发出"); 122 123 } else {NSLog(@"发送失败"); 124 125 126 127 }
---------------------
4,打开其他文件:
打开其他常见⽂文件
• 如果想打开⼀一些常见⽂文件,⽐比如html、txt、PDF、PPT等,都可以使⽤用UIWebView打开
• 只需要告诉UIWebView⽂文件的URL即可
• ⾄至于打开⼀一个远程的共享资源,⽐比如http协议的,也可以调⽤用系统⾃自带的
Safari浏览器:
NSURL *url = [NSURL URLWithString:@”http://www.baidu.com"];
[[UIApplication sharedApplication] openURL:url];
----------------------
5,应用间的跳转:
应⽤用评分
• 为了提⾼高应⽤用的⽤用户体验,经常需要邀请⽤用户对应⽤用进⾏行评分
• 应⽤用评分⽆无⾮非就是跳转到AppStore展⽰示⾃自⼰己的应⽤用,然后由⽤用户⾃自⼰己撰写评论
• 如何跳转到AppStore,并且展⽰示⾃自⼰己的应⽤用➢ ⽅方法1
1 NSString *appid = @"444934666"; 2 NSString *str = [NSString stringWithFormat: @"itms-apps://ax.itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=%@", appid]; 3 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:str]]; 4 ➢ ⽅方法2 5 NSString *str = [NSString stringWithFormat: 6 7 @"itms-apps://itunes.apple.com/cn/app/id%@?mt=8", appid]; 8 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:str]]; 9