一直以来,应用内进行直接电话呼叫都是用的如下代码:
let phoneURL = NSURL(string: "tel://139xxxxxxx")!
UIApplication.sharedApplication().openURL(phoneURL)
出于安全性考虑并经过搜索,可以通过UIWebView进行电话呼叫,网络上给出的方案如下:
let phoneURL = NSURL(string: "tel://139xxxxxxx")!
let callWebView = UIWebView()
callWebView.loadRequest(NSURLRequest(URL: phoneURL))
self.view.addSubview(callWebView)
经过测试,功能上可以实现应用内呼叫的逻辑,但是对最后一句代码(self.view.addSubview(callWebView))表示不理解。后经过个人测试,这是一个很不好的实践,因为callWebView只有在它的superview被释放的时候才能被释放,当呼叫动作是按钮触发并对其进行频繁点击的时候,会生成若干UIWebView的实例并不能及时释放。
进一步测试,之所以将callWebView添加到某个view上,只是为了让其在触发呼叫功能之前不被release掉,所以只需要有地方能引用这个webView即可。以下给出一种方式,具体可按需实现:
先声明变量
lazy var callWebView = UIWebView()
let phoneURL = NSURL(string: "tel://139xxxxxxx")!
self.callWebView.loadRequest(NSURLRequest(URL: phoneURL))