xcode - How to pass data from Javascript to Swift within a WKWebView? - Stack Overflow

I am trying to pass data from my sites Javascript to my app, written in Swift.Javascript:var messgeToPo

I am trying to pass data from my sites Javascript to my app, written in Swift.

Javascript:

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

Swift:

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)
    }
}

Unfortunately, print(password) is never called.

What am I missing here?

I am trying to pass data from my sites Javascript to my app, written in Swift.

Javascript:

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

Swift:

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)
    }
}

Unfortunately, print(password) is never called.

What am I missing here?

Share Improve this question asked Feb 23, 2016 at 10:10 FizzixFizzix 24.4k40 gold badges116 silver badges180 bronze badges 1
  • 1 There is no password attribute in the messgeToPost object. – soflare Commented Feb 26, 2016 at 17:37
Add a ment  | 

1 Answer 1

Reset to default 5
var messgeToPost = {
     "username": "testing123",
     "password": "password"
};

forgot to add password

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1745089361a4610598.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信