Reputation: 63
I am using WebViewJavascriptBridge for interaction between JS and native code. I find UIWebView sometimes slow so I tried to switch to WKWebView.
The project was fine when using UIWebView.
var bridge:WebViewJavascriptBridge!
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
self.webView = UIWebView(frame: self.viewport.frame)
self.view.addSubview(webView!)
let url = NSBundle.mainBundle().URLForResource("index", withExtension: "html", subdirectory: "www")
webView!.loadRequest(NSURLRequest(URL: url!))
webView!.scrollView.bounces = false
self.bridge = WebViewJavascriptBridge(forWebView: webView, handler: { (data, callback) -> Void in
callback("msg from bridge")
})
}
Working Compiler list:
But when I changed to WKWebViewJavascriptBridge it falls apart when linking:
var bridge:WKWebViewJavascriptBridge!
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
self.webView = WKWebView(frame: self.viewport.frame)
self.view.addSubview(webView!)
let url = NSBundle.mainBundle().URLForResource("index", withExtension: "html", subdirectory: "www")
webView!.loadRequest(NSURLRequest(URL: url!))
webView!.scrollView.bounces = false
self.bridge = WKWebViewJavascriptBridge(forWebView: webView, handler: { (data, callback) -> Void in
callback("msg from bridge")
})
}
Error message:
Undefined symbols for architecture arm64:
"_OBJC_CLASS_$_WKWebViewJavascriptBridge", referenced from:
type metadata accessor for __ObjC.WKWebViewJavascriptBridge in ViewController.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
And it appears that those .m files are not being compiled before linking.
Please kindly advise.
Upvotes: 0
Views: 942
Reputation: 63
Phew, finally got it working by editing the bridge header.
In file WKWebViewJavascriptBridge.h
, find these lines:
#if (__MAC_OS_X_VERSION_MAX_ALLOWED > __MAC_10_9 || __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_7_1)
#define supportsWKWebKit
#endif
Then remove the #if #endif
pair, just leave the #define supportsWKWebKit
bit out. But make sure you are using iphone 7.1 or above or it won't support WKWebkit.
Upvotes: 2