iOS H5嵌套打电话功能实现

iOS H5嵌套打电话功能实现,第1张

在ios中,用H5编写了可以打电话的页面。 点击“拨打”按钮后可以进行跳转到打电话的页面(跳转这一块应该是和浏览器有关),跳转之后拨打完电话能够回到之前打电话的页面。

1.UIWebView

方法1:NSString *location =[webViewstringByEvaluatingJavaScriptFromString:@"document.location"];

方法2:NSLog(@"webView location = '%@'", webView.request.URL.absoluteString)

以上两种一定要放在页面成功加载之后才可以的!

2.WKWebview

#pragma mark 在发送请求之前,决定是否跳转

iOS拨打电话有三种方法。

第一种

NSMutableString *str=[[NSMutableString alloc] initWithFormat:@"tel:%@",@"186xxxx6979"]

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:str]]

第二种:

NSMutableString *str2=[[NSMutableString alloc] initWithFormat:@"tel:%@",@"186xxxx6979"]

UIWebView* callWebview =[[UIWebView alloc] init]

[callWebview loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:str2]]]

[self.view addSubview:callWebview]

第三种:

NSMutableString *str3=[[NSMutableString alloc] initWithFormat:@"telprompt://%@",@"186xxxx6979"]

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:str3]]

三种方法优缺点:

网上有解释为第一种打完电话留在打电话界面,第二种打完电话回到原来的app

真实测试:两种打完电话都是回到原来的app界面,

方法一:在iOS10.2之前没问题,没有提示直接拨打,但是在iOS10.2后新增d出提示,d出提示有延迟。修改方法有几种

1. 调用[[UIApplication sharedApplication] openURL:[NSURL URLWithString:str] options:@{} completionHandler:nil]这个方法但是需要判断版本,在iOS10之后才用。10之前用原来的 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:str]]

2.关于拨打电话的方法,自己凭喜好选择,导致d出框延迟的原因,目前初步诊断就是openURL在iOS 10及其之后会阻塞主线程

NSMutableString * str=[[NSMutableString alloc] initWithFormat:@"tel:%@",@"18511089439"]

dispatch_async(dispatch_get_global_queue(0,0), ^{

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:str]]

})

方法二:点击有提示。但是照此方法写的会不停创建webview。应当声明一个web,每次都调用同一个以节省资源

方法三:点击有提示。用这个的时候要小心,因为apple的 文档 里边没出现过telprompt这个。之前是有过被reject的案例。

总结:推荐第二种,都是在第一种延迟取消后,还是可以用第一种的


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7026588.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-31
下一篇 2023-03-31

发表评论

登录后才能评论

评论列表(0条)

保存