需求描述:今天刚好有一个需求,就是给用户发送短信的时候,发送一个链接,当用户点击链接的时候,能够打开app,同时跳转到app的某一个页面。这个时候就需要app端给我提供一个链接(肯定带了参数),但是发送短信的时候又不能完全把这个链接发送给用户。一是因为那样的链接太丑,二是因为太长。所以则用到了短链接。
关于app那边的跳转逻辑:通过链接打开一个空白页面,然后在该页面中写一些js代码,判断该手机是苹果还是安卓,从而唤起app(该跳转逻辑,只是针对app的)。
一、短链接原理
其实很简单,就是把一个长地址如:http://zhyq.shibei.com/article/article.htm 用一个算法转换成短地址如:http://csdn.cn/7bqr87dc。然后把7bqr87dc------->http://zhyq.shibei.com/article/article.htm之间的对应关系保存到数据库中去。当用户访问http://csdn.cn/7bqr87dc链接时,系统到数据库中找到真是的URL地址,实现跳转。
二、实现思路
服务器收到一个短链接请求时,需要把从http地址中解析出短链接,然后将得到的短链接在数据库中进行查询,找到其对应的长连接,进而重定向到该长长链接对应的地址。另外,服务器在此时可以随意进行一些需要的统计工作
步骤:
1.建立一个存短链接的表
2.当点击短链接的时候,跳转到一个html页面,然后加载该页面的时候,通过ajax调用一个接口,返回该链接的真实地址,然后在重定向到真实的地址。
<script type="text/javascript" >
window.onload =function() {
var locationurl = this.location.href;
$.get("http://zhyq.shibei.com:8080/cnp/webservice.cnp?method=getShortLink&noSign=true",{"link":locationurl}, function(result){
var u = navigator.userAgent;
var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //android终端
var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
if (isAndroid) {
window.location.href=result.data.android_url;
} else if (isiOS){
window.location.href=result.data.real_link_url;
} else {
alert("不支持当前设备");
}
},"json");
}
</script>
3.还需要在tomcat中进行配置地址。即类似于下面的链接,都跳转到同一个页面。
http://sbgx.sxsihe.com/vOWxR7izzT
http://sbgx.sxsihe.com/SOBxR7iabT
具体配置见后面文章
参考链接: