android webView淘寶口令跳轉重定向的問題探索和解決

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 "";
    }

}

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章