最近涉及的一个业务,在app内的一个广告,点击打开webView,加载的是一个淘宝商品详情页,效果是打开该webView自动跳转至淘宝对应的页面,同时在本身的app仍然加载页面,点击评论等也一样能跳转至淘宝客户端html
通过拦截该网页,得出一个结论,若是是须要跳转,淘宝都会调用一个tbopen开头的地址,这样那就简单了,如下直接贴代码web
一、第一步:info.plist添加白名单app
这里通过反复测试,发现淘宝自定义跳转协议只有tbopen,因此我猜想淘宝客户端确定添加了tbopen这样一个url scheme,因此咱们只要加这个白名单就有直接跳转的能力了ide
二、第二步:拦截tbopen关键字,处理对应的业务逻辑ui
- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler{ NSURL *requestUrl = navigationAction.request.URL; if ([navigationAction.request.URL.scheme containsString:@"tbopen"]) {//拦截tbopen开头的url if ([[UIApplication sharedApplication] canOpenURL:requestUrl]) {//能打开手机淘宝APP [[UIApplication sharedApplication] openURL:requestUrl];// 打开淘宝app } } decisionHandler(WKNavigationActionPolicyAllow); }
ok,通过上面的两歩以后咱们就不须要考虑其余东西了,这也是通过淘宝开发人员和产品设计多年迭代出的做品,应该考虑仍是比较全面的,因此稍微观察一下规律按照他们的规则来就行了url
注:通过屡次测试发现并非每次打开webView都会调用tbopen开头的url,但第一次必定会,这个影响不大,具体缘由还没深刻研究,若有不对之处,欢迎指正 设计