使用WebViewJavascriptBridge实现iOS与js交互
背景: 原生应用跳转到 h5 页面, 并实现原生与 h5 页面的交互, 比如在 h5 页面中调用原生的拨打电话、拍照、选文件、定位等功能
iOS 端集成 WebViewJavascriptBridge
安装
方式一: 使用CocoaPods
集成:
1 | pod 'WebViewJavascriptBridge', '~> 6.0' |
方式二: 手动集成, 把源代码WebViewJavascriptBridge
文件夹拖到项目里. 我采用的是这种方式, 方便修改源码.
注意: 2020 年 4 月起 App Store 将不再接受使用
UIWebView
的新 App 上架、2020 年 12 月起将不再接受使用UIWebView的App
更新。而该库中WebViewJavascriptBridge
文件是对UIWebView
的处理, 所以项目中把WebViewJavascriptBridge
文件删除.
给WKWebView页面添加侧滑返回功能
背景需求:
从原生页面跳转到 h5 页面后, 有的 h5 页面没有返回按钮, 需要原生 app 添加侧滑返回功能.
最开始的想法是用WKWebView
的allowsBackForwardNavigationGestures
属性, 该属性默认值为 NO, 表示禁用 webView 的左滑右滑, 设置为 YES 后, 允许左右滑手势操作网页的后退前进.
1 | _wkWebView.allowsBackForwardNavigationGestures = YES; |
然后使用 KVO 监听canGoBack
属性变化:
1 | [_wkWebView addObserver:self forKeyPath:@"canGoBack" options:NSKeyValueObservingOptionNew context:nil]; |
处理属性变化回调:
1 | - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey, id> *)change context:(void *)context { |