我目前想從港口的Android到iOS的應用程序,通過網頁視圖應用了許多邏輯的JavaScript函數返回(類似於Android的JS接口)。充分利用斯威夫特WkWebView接口在IOS 10
在Android版本,我可以有一些諸如
function sendInfo(fileName, dataContent){
Android.saveData(fileName, dataContent);
}
並通過Java部分
@JavascriptInterface
public void saveData(String fileName, String dataContents) {
//.. do something with the received information
}
我試圖做內部的ios同樣的事情的界面處理,雖然我我目前有問題。請注意,我們在IOS10中使用Swift 3。我目前擁有的是:
我已經創建了內部的loadView(配置和控制器),所以由它到達的viewDidLoad()一切都被顯示在應用程序。
override func loadView(){
super.loadView()
let contentController = WKUserContentController()
contentController.add(self as WKScriptMessageHandler, name: "callbackHandlerFile")
// configuration
let config = WKWebViewConfiguration()
config.userContentController = contentController
self.webView = WKWebView(frame: self.view.frame, configuration: config)
self.view = self.webView
}
override func viewDidLoad() {
super.viewDidLoad()
let url = NSURL(fileURLWithPath: Bundle.main.path(forResource: "html/_wv", ofType: "html")!)
let req = URLRequest(url: url as URL)
self.webView!.load(req)
}
我的問題來自於一個事實,我已經看到了將信息從Javascript發送到快捷的方式是這樣的:
function sendInfo(fileName, dataContent){
webkit.messageHandlers.callbackHandlerFile.postMessage(fileName);
webkit.messageHandlers.callbackHandlerFile.postMessage(dataContent);
}
然後我們檢索它們爲:
// message handler delegate method
func userContentController(_ userContentController: WKUserContentController, didReceive message:WKScriptMessage){
if(message.name == "callbackHandlerFile") {
print(message.body)
}
}
print語句將打印出兩個消息一個接一個,這意味着將打印文件名的內容,然後dataContent的內容,因爲所有的數據上了混搭同樣的例子。
我怎麼會去通過獲得由於Android對方同樣的效果?我需要的,因爲我需要創建一些文件I/O,因此具有不同callbackHandlers是相當多了question.All我需要的是有一些類似於Android版本會對同一個地方這兩個部分。任何指針將不勝感激。
編輯:
我知道,我可以通過對象的消息處理程序,所以我會碰到這樣的:
webkit.messageHandlers.callbackHandlerFile.postMessage({fileName: file,data: data_txt});
但還是cant't找到一種方法,而不訪問此數據編譯器給我的錯誤,因爲message.body
也適用於字符串
你嘗試用數據和要執行的操作創建一個JSON對象試試? '{ 「行動」: 「SAVEDATA」, 「數據」:{ 「文件名」:文件名, 「dataContent」:dataContent }' – piyuj
@piyuj是的,但我不明白如何檢索它的內消息。Swift代碼中的主體部分。我猜測我將不得不將對象轉換爲字典之類的東西來訪問它的值。 –
是的沒錯,你可以把它轉換成字典 – piyuj