最近涉及的一個業務,在app內的一個廣告,點擊打開webView,加載的是一個淘寶商品詳情頁,效果是打開該webView自動跳轉至淘寶對應的頁面,同時在自己的app仍然加載頁面,點擊評論等也同樣能跳轉至淘寶客戶端
經過攔截該網頁,得出一個結論,如果是需要跳轉,淘寶都會調用一個tbopen開頭的地址,這樣那就簡單了,以下直接貼代碼
1、第一步:info.plist添加白名單
這里經過反復測試,發現淘寶自定義跳轉協議只有tbopen,所以我猜測淘寶客戶端肯定添加了tbopen這樣一個url scheme,所以我們只要加這個白名單就有直接跳轉的能力了
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,但第一次一定會,這個影響不大,具體原因還沒深入研究,如有不對之處,歡迎指正