播打电话号码
-
最直接方式
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://020-10086"]];
缺点:打完电话后,停留在通讯录界面,不会自动跳回APP界面。 -
访问私有API
该方式拨号,会先提示是否进行拨打。
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"telprompt://020-10086"]];
缺点:私有API,可能会被苹果审核不通过,拒绝发布。 -
通过内嵌UIWebView,拨打完毕后,会自动切回APP界面
UIWebView *myWebView = [[UIWebView alloc] initWithFrame:CGRectZero];
[myWebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"tel://020-10086"]]];
注意:不需要addSubview
跳转到APP Store评分界面
UIApplication *app = [UIApplication sharedApplication];
NSString *urlStr = [NSString stringWithFormat:@"替换成下面提供的两种方式”, yourAPPId];
NSURL *url = [NSURL URLWithString:urlStr];
if ([app canOpenURL:url]) {
[app openURL:url];
}
你的设备IOS版本>=IOS7
itms-apps://itunes.apple.com/app/idYOUR_APP_ID
你的设备IOS版本<IOS7
itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=YOUR_APP_ID
发短信
-
最直接方式
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"sms://10086"]];
式缺点:不能指定短信内容,并且操作完毕后,不会跳回APP界面 -
采用
MFMessageComposeViewController
- . 先引入框架
#import <MessageUI/MessageUI.h>
if ([MFMailComposeViewController canSendMail]) {
MFMessageComposeViewController *messageController = [[MFMessageComposeViewController alloc] init];
messageController.body = @"短信内容";
messageController.recipients = @[@"收件人列表-1-10086",@"2-10000"];
messageController.delegate = self;
[self presentViewController:messageController animated:YES completion:nil];
}
2). 实现委托
#pragma mark - MFMessageComposeViewControllerDelegate
- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result {
[controller dismissViewControllerAnimated:YES completion:nil];
if (result == MessageComposeResultCancelled) {
NSLog(@"取消发送");
} else if (result == MessageComposeResultSent) {
NSLog(@"发送成功");
} else {
NSLog(@"发送失败");
}
}
优点:可以指定发送内容,发送完毕可以切回APP界面。
发邮件
- 最直接方式
NSString *url = @"mailto:foo@example.com? cc=bar@example.com&subject=Greetings%20from%20Cupertino!&body=Wish%20you%20were%20here!";
[[UIApplication sharedApplication] openURL: [NSURL URLWithString: url]];
缺点:字符串复杂,可读性差。 - 采用
MFMailComposeViewController
1). 先引入框架#import <MessageUI/MessageUI.h>
if ([MFMailComposeViewController canSendMail]) {
MFMailComposeViewController* mailController = [[MFMailComposeViewController alloc] init];
mailController.mailComposeDelegate = self;
[mailController setSubject:@"标题"];
[mailController setMessageBody:@"邮件内容。" isHTML:NO];
[mailController setToRecipients:@[@"收件人1", @"收件人2",]];
[mailController setCcRecipients:@[@"抄送人1", @"抄送人2",]];
[mailController setBccRecipients:@[@"密送人1", @"密送人2",]];
if (mailController)
[self presentViewController:mailController animated:YES completion:nil];
}
2). 实现委托
#pragma mark - MFMailComposeViewControllerDelegate
- (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError )error {
/
enum MFMailComposeResult {
MFMailComposeResultCancelled, //取消发送
MFMailComposeResultSaved, //保存草稿
MFMailComposeResultSent, //发送成功
MFMailComposeResultFailed, //发送失败
};
*/
[controller dismissViewControllerAnimated:YES completion:nil];
}
应用程序之间跳转
- 被跳转的APP设置
注意:URL Schemes是一个数组,可以用逗号隔开
设置引导图 - 打开其他APP的代码如下,identifier跟schemes就是上图设置的URL Types参数
// @param Identifier:需要跳入的应用程序配置文件设置的APP URL type里面的identifier
// @param UrlSchemes:需要跳入的应用程序配置文件设置的APP URL type里面的URL scheme
NSURL *appUrl = [NSURL URLWithString:@"Identifier://UrlSchemes"];
UIApplication *app = [UIApplication sharedApplication];
// 1.先判断能否打开软件
if ([app canOpenURL:appUrl]) {
[app openURL:appUrl];
} else { // 2.不能打开,去appStore下载
NSURL *downloadUrl = [NSURL URLWithString:@"yourAppUrl"];
if ([app canOpenURL:downloadUrl]) {
[app openURL:downloadUrl];
}
}
3.通过safari游览器打开APP
在地址栏输入要打开的APP的URL schemes即可,如testApp://
带参数形式:testApp://?token=123abct®istered=1
4.通过访问网页打开APP
网友评论