iOS开发调用系统应用
调用系统的拨打电话、短信、邮件、浏览器应用
在开发某些应用时可能希望能够调用iOS系统内置的电话、短信、邮件、浏览器应用,此时你可以直接使用UIApplication的OpenURL:方法指定特定的协议来打开不同的系统应用。常用的协议如下:
- 打电话:tel:或者tel://、telprompt:或telprompt://(拨打电话前有提示)
- 发短信:sms:或者sms://
- 发送邮件:mailto:或者mailto://
- 启动浏览器:http:或者http://
下面以一个简单的demo演示如何调用上面几种系统应用:
#import "MainViewController.h"
@interface MainViewController ()
@end
@implementation MainViewController
-(void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
UIButton *call = [UIButton buttonWithType:UIButtonTypeSystem];
call.frame = CGRectMake(100, 100, 100, 30);
[self.view addSubview:call];
[call setTitle:@"call" forState:UIControlStateNormal];
[call addTarget:self action:@selector(callClick:) forControlEvents:UIControlEventTouchUpInside];
UIButton *message = [UIButton buttonWithType:UIButtonTypeSystem];
message.frame = CGRectMake(100, 150, 100, 30);
[self.view addSubview:message];
[message setTitle:@"message" forState:UIControlStateNormal];
[message addTarget:self action:@selector(sendMessageClick:) forControlEvents:UIControlEventTouchUpInside];
UIButton *email = [UIButton buttonWithType:UIButtonTypeSystem];
email.frame = CGRectMake(100, 200, 100, 30);
[self.view addSubview:email];
[email setTitle:@"email" forState:UIControlStateNormal];
[email addTarget:self action:@selector(sendEmailClick:) forControlEvents:UIControlEventTouchUpInside];
UIButton *browser = [UIButton buttonWithType:UIButtonTypeSystem];
browser.frame = CGRectMake(100, 250, 100, 30);
[self.view addSubview:browser];
[browser setTitle:@"browser" forState:UIControlStateNormal];
[browser addTarget:self action:@selector(browseClick:) forControlEvents:UIControlEventTouchUpInside];
UIButton *thirdParty = [UIButton buttonWithType:UIButtonTypeSystem];
thirdParty.frame = CGRectMake(100, 300, 100, 30);
[self.view addSubview:thirdParty];
[thirdParty setTitle:@"thirdParty" forState:UIControlStateNormal];
[thirdParty addTarget:self action:@selector(thirdPartyApplicationClick:) forControlEvents:UIControlEventTouchUpInside];
}
#pragma mark ** UI事件
//打电话
- (IBAction)callClick:(id)sender
{
NSString *phoneNumber = @"13956856323";
// NSString *url = [NSString stringWithFormat:@"tel://%@",phoneNumber];//这种方式会直接拨打电话
NSString *url = [NSString stringWithFormat:@"telprompt://%@",phoneNumber];//这种方式会提示用户是否拨打电话
[self openUrl:url];
}
//发送短信
- (IBAction)sendMessageClick:(id)sender
{
NSString *phoneNumber = @"13956856323";
NSString *url = [NSString stringWithFormat:@"sms://%@",phoneNumber];
[self openUrl:url];
}
//发送邮件
- (IBAction)sendEmailClick:(id)sender
{
NSString *mailAddress = @"[email protected]";
NSString *url = [NSString stringWithFormat:@"mailto://%@",mailAddress];
[self openUrl:url];
}
//浏览网页
- (IBAction)browseClick:(id)sender
{
NSString *url = @"http://www.baidu.com";
[self openUrl:url];
}
#pragma mark ** 私有方法
- (void)openUrl:(NSString *)urlStr
{
//注意url中包括协议名称,iOS根据协议确定调用哪个应用,例如发送短信是"sms://"其中"//"可以省略写成"sms:"(其他协议也是如此)
NSURL *url = [NSURL URLWithString:urlStr];
UIApplication *application = [UIApplication sharedApplication];
if (![application canOpenURL:url]) {
NSLog(@"无法打开\"%@\",请确保此应用已经正确安装.",url);
return;
}
[application openURL:url];
}
@end
系统服务
短信与邮件
调用系统内置的应用来发送短信、邮件相当简单,但是这么操作也存在着一些弊端:当