网页和 IOS 应用程序之间的 Javascript 接口不起作用。为啥我的应用收不到消息?
Posted
技术标签:
【中文标题】网页和 IOS 应用程序之间的 Javascript 接口不起作用。为啥我的应用收不到消息?【英文标题】:Javascript interface between Web page and IOS app is not working. Why my app can't receive the messages?网页和 IOS 应用程序之间的 Javascript 接口不起作用。为什么我的应用收不到消息? 【发布时间】:2016-06-08 09:04:46 【问题描述】:我有一个加载页面的 WKWebView。在这个页面中有一个按钮调用一个javascript函数。我希望这个 javascript 函数将一些字符串数据发送到我的应用程序。
这就是我的 Swift 代码的构建方式:
import UIKit
import SnapKit
import WebKit
class TestVC: UIViewController,WKScriptMessageHandler
let defaults = NSUserDefaults.standardUserDefaults()
override func viewDidLoad()
super.viewDidLoad()
//Cookies
let cookie = "document.cookie = '.ASPXAUTH=\(defaults.stringForKey("authKey")!)';"
let requestUrl = NSMutableURLRequest(URL: NSURL(string: "\(MyConstants.WEBURL)")!)
requestUrl.addValue(".ASPXAUTH=\(defaults.stringForKey("authKey")!)", forHTTPHeaderField: "Cookie")
//Settings
let webViewConfiguration = WKWebViewConfiguration()
let userContentController = WKUserContentController()
userContentController.addScriptMessageHandler(self, name: "callbackHandler")
webViewConfiguration.userContentController = userContentController
//UI
let webView = WKWebView(frame: CGRectZero, configuration: webViewConfiguration)
view.addSubview(webView)
webView.snp_makeConstraints (make) in
make.edges.equalTo(self.view.snp_edges)
webView.loadRequest(requestUrl)
override func didReceiveMemoryWarning()
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
func userContentController(userContentController: WKUserContentController, didReceiveScriptMessage message: WKScriptMessage)
print("got message")
这是我的 javascript:
window.webkit.messageHandlers.callbackHandler.postMessage(json);
但是调用脚本的时候,ios端什么都没有打印出来。我在这里错过了什么吗?
【问题讨论】:
【参考方案1】:网站出现问题。代码正在运行。
【讨论】:
以上是关于网页和 IOS 应用程序之间的 Javascript 接口不起作用。为啥我的应用收不到消息?的主要内容,如果未能解决你的问题,请参考以下文章