2016-02-23 13 views
7

私のサイトのJavascriptからSwiftで書かれた私のアプリケーションにデータを渡そうとしています。WKWebView内でJavascriptからSwiftにデータを渡すにはどうすればいいですか?

Javascriptを:

var messgeToPost = { 
    "username": "testing123" 
}; 
window.webkit.messageHandlers.loginSuccess.postMessage(messgeToPost); 

スウィフト:

var webConfig:WKWebViewConfiguration { 
    get { 
     var webCfg:WKWebViewConfiguration = WKWebViewConfiguration() 

     var userController:WKUserContentController = WKUserContentController() 

     userController.addScriptMessageHandler(self, name: "loginSuccess") 

     webCfg.userContentController = userController; 

     return webCfg; 
    } 
} 

override func viewDidLoad() { 
    var userController:WKUserContentController = WKUserContentController() 
    userController.addScriptMessageHandler(self, name: "loginSuccess") 
    webView = WKWebView(frame: self.view.frame, 
     configuration: webConfig) 
    webView.loadRequest(NSURLRequest(URL: NSURL(string: URLPath)!)) 
} 

func userContentController(userContentController: WKUserContentController, didReceiveScriptMessage message: WKScriptMessage) { 
    if let messageBody:NSDictionary = message.body as? NSDictionary { 
     let password:String = messageBody["password"] as! String 

     print(password) 
    } 
} 

残念ながら、print(password)が呼び出されることはありません。

私はここで何が欠けていますか?

+1

を追加するのを忘れ。 – soflare

答えて

4
var messgeToPost = { 
    "username": "testing123", 
    "password": "password" 
}; 

は `messgeToPost`オブジェクトには` password`属性はありませんパスワード

関連する問題