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

}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值