iOS WKWebView拦截scheme WKWebView打开第三方应用 iOS

释放双眼,带上耳机,听听看~!

WKWebView出于安全性考虑, 对于打开外部链接 应用等操作进行了拦截

WKWebView打开外部应用, Safari等

设置代理

_webView.navigationDelegate = self;

手动打开拦截

- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler{
// WKWebView默认拦截scheme 需在下面方法手动打开
// 打开外部应用 Safari等操作
if ([navigationAction.request.URL.absoluteString hasPrefix:@"xxx"]) { // 对应的scheme
[[UIApplication sharedApplication] openURL:navigationAction.request.URL];
}
decisionHandler(WKNavigationActionPolicyAllow);
}
WKWebView替换JS alert confirm等

设置代理

_webView.UIDelegate = self;

拦截JS alert

- (void)webView:(WKWebView *)webView runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(WKFrameInfo *)frame completionHandler:(void (^)(void))completionHandler{
// WKWebView不支持JS的alert 用此方法进行拦截
// message为JS中alert显示的信息 可与前端开发约定好信息
if ([message isEqualToString:@"xxx"]) {
// 做OC操作
}
completionHandler();
}

拦截JS confirm

- (void)webView:(WKWebView *)webView runJavaScriptConfirmPanelWithMessage:(NSString *)message initiatedByFrame:(WKFrameInfo *)frame completionHandler:(void (^)(BOOL result))completionHandler{
// 类比alert 拦截JS confirm
completionHandler(NO);
}

github示例

人已赞赏
iOS文章

Swift UI基础

2019-12-29 16:02:49

iOS文章

GitHub无法访问解决办法

2019-12-29 17:41:23

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
有新消息 消息中心
搜索