WebView 與App互傳資訊
01.編輯 ViewControl.swift
在class ViewController: UIViewController,加入 WKUIDelegate, WKScriptMessageHandler
變成 class ViewController: UIViewController,WKUIDelegate, WKScriptMessageHandler {
在class ViewController: UIViewController,WKUIDelegate, WKScriptMessageHandler {} 中新增
這區段處理每一個對應的作業
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
switch message.name {
case "openURL":
let url01 = URL(string: message.body as! String)!
UIApplication.shared.open(url01)
case "shareLine":
let l_str = message.body as! String
let u_str = l_str.components(separatedBy: "?url=")
let lineURL=URL(string: "line://msg/text/" + u_str[1])
if UIApplication.shared.canOpenURL( lineURL! ) {
UIApplication.shared.open(lineURL!, options: [:],completionHandler: nil)
}else{
guard let url01 = URL(string: message.body as! String) else {return}
UIApplication.shared.open(url01)
}
default:
break
}
}
02.override func loadView() {} 區段中加入
override func loadView() {
let prefs=WKWebpagePreferences();
prefs.allowsContentJavaScript = true //ios 14 後才有支援
let webConfiguration = WKWebViewConfiguration()
webConfiguration.defaultWebpagePreferences = prefs
//以下為註冊與前端網頁溝通用 Func
//需要用到的都要在這先註冊
webConfiguration.userContentController = WKUserContentController()
webConfiguration.userContentController.add(self ,name : "openURL")
webConfiguration.userContentController.add(self ,name : "shareLine")
webConfiguration.userContentController.add(self ,name : "shareFB")
webConfiguration.userContentController.add(self ,name : "setBadge")
webView = WKWebView(frame: .zero, configuration: webConfiguration)
view = webView
}