iOS app url scheme跳转到淘宝商品详情页 唤醒app

最近涉及的一个业务,在app内的一个广告,点击打开webView,加载的是一个淘宝商品详情页,效果是打开该webView自动跳转至淘宝对应的页面,同时在自己的app仍然加载页面,点击评论等也同样能跳转至淘宝客户端

经过拦截该网页,得出一个结论,如果是需要跳转,淘宝都会调用一个tbopen开头的地址,这样那就简单了,以下直接贴代码

1、第一步:info.plist添加白名单

这里经过反复测试,发现淘宝自定义跳转协议只有tbopen,所以我猜测淘宝客户端肯定添加了tbopen这样一个url scheme,所以我们只要加这个白名单就有直接跳转的能力了

(当然你也可以加taobao这个白名单,那对应的你的openURL就需要自己拼接,例如 taobao://m.taobao.com/tbopen/index.html?action=ali.open.nav&module=h5&bootImage=0&source=sb&appkey=24585446&smbSid=f6CPFcarHDsCAbcPsILVPbbX_1561013627944&rbbt=bc.mainDetail.0.2.122bef3b90e447e199100ff5550b9c4d&params=%7B%22fid%22%3A%22ckN4GzSh9iL%22%2C%22mtopCostTime%22%3A%22163%22%2C%22uiKey%22%3A%22%2Falbum%2Flist.htm%22%2C%22_t%22%3A%221561013656447%22%7D&h5Url=https%3A%2F%2Fh5.m.taobao.com%2Fawp%2Fcore%2Fdetail.htm%3Fid%3D590575701816%26point%3D%25257B%252522from%252522%25253A%252522h5%252522%25252C%252522h5_uid%252522%25253A%252522f6CPFcarHDsCAbcPsILVPbbX%252522%25252C%252522ap_uri%252522%25253A%252522sb_redirect_manual%252522%25252C%252522page%252522%25253A%252522mainDetail%252522%25252C%252522callType%252522%25253A%252522scheme%252522%25257D

2、第二步:拦截tbopen关键字,处理对应的业务逻辑

- (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,经过上面的两歩之后我们就不需要考虑其他东西了,这也是经过淘宝开发人员和产品设计多年迭代出的作品,应该考虑还是比较全面的,所以稍微观察一下规律按照他们的规则来就好了

 

注:经过多次测试发现并不是每次打开webView都会调用tbopen开头的url,但第一次一定会,这个影响不大,具体原因还没深入研究,如有不对之处,欢迎指正 

posted @ 2019-06-20 15:54  Mr.陳  阅读(20292)  评论(0编辑  收藏  举报