Swift版
//1.有提示
let callWebView = UIWebView()
callWebView.loadRequest(URLRequest(url:URL(string: "tel:\(10086)")!))
self.addSubview(callWebView)
//2.有提示
UIApplication.shared.openURL(URL(string: "telprompt://10086")!)
//3.无提示
UIApplication.shared.openURL(URL(string: "tel://10086")!)
经测试拨打完都会回到app,没有留在通话记录,网上说第三种会停留在通讯录,待测试
OC版
//10.0之后好像拨打电话会有两秒的延迟,此方法可以秒打
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 10) {
NSString *phone = [NSString stringWithFormat:@"tel://4008280082"];
NSURL *url = [NSURL URLWithString:phone];
[[UIApplication sharedApplication] openURL:url options:@{} completionHandler:^(BOOL success) {
NSLog(@"phone success");
}];
}else{
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://4008280082"]];
}
//2.会弹出提示框
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"telprompt://4008380082"]];
//带提示框的用法
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"客服电话" message:@"400-838-0082" preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *done = [UIAlertAction actionWithTitle:@"呼叫" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 10) {
NSString *phone = [NSString stringWithFormat:@"tel://4008380082"];
NSURL *url = [NSURL URLWithString:phone];
if (@available(iOS 10.0, *)) {
[[UIApplication sharedApplication] openURL:url options:@{} completionHandler:^(BOOL success) {
NSLog(@"phone success");
}];
} else {
// Fallback on earlier versions
}
}else{
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://4008380082"]];
}
}];
[alertController addAction:done];
UIAlertAction *cancel = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
}];
[alertController addAction:cancel];
[self presentViewController:alertController animated:YES completion:nil];