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