ps :項目裏有跳轉淘寶App的分傭功能,在用戶點擊的時候跳轉淘寶APP 沒有的話則跳轉項目內部的webView 咋一看,這功能很簡單,事實也是如此,很快就做完了。直到淘口令的出現……
使用後臺的淘口令,如果用戶手機沒有安裝淘寶APP的話,就會跳轉到淘寶APP下載的H5,然後產品經理說,如果用戶沒有淘寶APP就跳轉到淘寶這個商品的詳情H5,不能給淘寶下載引流……
說下目前爲止我的代碼邏輯:
得到淘口令-->解析到其中http開頭的一小段鏈接-->(無淘寶APP)跳轉淘寶下載H5。
但是如果直接把這小段鏈接用電腦打開是可以到商品詳情頁的,思考中。應該是發送請求平臺的問題。
然後在自己的webView的shouldOverrideUrlLoading中打斷點看。
發現打開該小段淘口令鏈接後首次跳轉的是這個
https://a.m.taobao.com/i606575395292.htm?price=100…… (這個鏈接雖然看着像該商品詳情的鏈接了,但是webView打開還是會再跳轉到下載淘寶的H5)
但是這個也不是那個下載淘寶的h5,。。。接着看。。。
發現接着又跳轉到了https://h5.m.taobao.com/channel/act/mobile/standrad.html 打開一看這個就是
下面開始碼代碼思路:
1.把首次跳轉的鏈接 https://a.m.taobao.com/i606575395292.htm?……記住,然後修改字符串,變成格式爲webView能跳轉而且不再重定向的這個鏈接 https://item.taobao.com/item.htm?id=609661236287。
2.在shouldOverrideUrlLoading中屏蔽h5跳轉的邏輯
else if(url.equals("http://h5.m.taobao.com/channel/act/mobile/standrad.html") || url.equals("https://h5.m.taobao.com/channel/act/mobile/standrad.html")){
webView.loadUrl(urlT);//urlT就是第一步最終得到的能使用有效的商品詳情url
return true;
}
3.我這裏最後出現了個詳情頁不斷刷新的問題,我用的方法是記錄每一次的url到一個變量,然後用這個變量跟每次的url作對比,相同的話就return,如下。
if(null != lastUrl && null != url){
if(lastUrl.equals(url)){
return true;
}
}
測試了一會,發現沒啥問題,下班。
附上從淘口令中提取有效鏈接的utils:
public class UrlUtlis { private static String urlRegex = "https?://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]"; public static boolean isUrl(String url){ //判斷是否是鏈接 if (url == null) { return false; } if(!TextUtils.isEmpty(url)){ return url.matches(urlRegex); } return false; }; public static String getAllSatisfyStr(String str) {//提取淘口令中的有效短鏈接 if (str == null || str.isEmpty()) { return null; } Pattern pattern = Pattern.compile(urlRegex); Matcher matcher = pattern.matcher(str); if (matcher.find()) { return matcher.group(); } return ""; } }