最近涉及的一個業務,在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,但第一次必定會,這個影響不大,具體緣由還沒深刻研究,若有不對之處,歡迎指正 設計