刚来实习,就被安排做一个二维码的东西,自己查了查资料,也用了一下Fiddler软件进行了一下抓取数据,根据他的不同标头可以判断不同终端,例如:iphone、iPad、Android、Android pad等等。
而实现这个功能可以用两种方式来实现:一种是用JS的方式,还有一种不写在js中,但是两者调用的函数都是一样的,只是实现方式不同。但是有一点要注意,就是通过微信扫描的用JS关键字是 MicroMessenger 而不通过JS实现时则是 micromessenger ,有大小写之分。
上代码,自己一看便知。
通过JS实现:
<script type="text/javascript">
// 获取终端的相关信息
var Terminal = {
// 辨别移动终端类型
platform : function() {
var u = navigator.userAgent, app = navigator.appVersion;
return {
// android终端或者uc浏览器
android : u.indexOf('Android') > -1 || u.indexOf('Linux') > -1,
// 是否为iPhone或者QQHD浏览器
iPhone : u.indexOf('iPhone') > -1,
// 是否iPad
iPad : u.indexOf('iPad') > -1,
// 是否是通过微信的扫一扫打开的
weChat : u.indexOf('MicroMessenger') > -1
};
}(),
}
// 根据不同的终端,跳转到不同的地址
var theUrl = 'xxxxxxxxxxxxxxx';
// android系统APP
// 另外:微信扫一扫后打开连接,是不能直接进行下载的,所以你可以将apk放到微云上,使用微云上的apk地址
if (Terminal.platform.android) {
if (Terminal.platform.weChat) {
theUrl = 'xxxxxxxxxxxxxxx';
} else {
theUrl = 'xxxxxxxxxxxxxxx';
}
};
if (Terminal.platform.iPhone) {
if (Terminal.platform.weChat) {
theUrl = 'xxxxxxxxxxxxxxx';
} else {
theUrl = 'xxxxxxxxxxxxxxx';
}
};
if (Terminal.platform.iPad) {
if (Terminal.platform.weChat) {
theUrl = 'xxxxxxxxxxxxxxx';
} else {
theUrl = 'xxxxxxxxxxxxxxx';
}
}
location.href = theUrl;
</script>
另一种方式实现
String mobileAgentIphone = "iphone";
String mobileAgentAndroid= "android";
String mobileAgentIpad = "ipad";
String mobileAgentPhone = "mobile";
String mobileAgentWeChat = "micromessenger";
if (request.getHeader("User-Agent") != null) {
//判断是否是ios 手机
if (request.getHeader("User-Agent").toLowerCase().indexOf(mobileAgentIphone) >= 0) {
xxxxxxx;
}
//判断是否是ios 平板
if (request.getHeader("User-Agent").toLowerCase().indexOf(mobileAgentIpad) >= 0) {
xxxxxxx;
}
//判断是否是Android 平板
if(request.getHeader("User-Agent").toLowerCase().indexOf(mobileAgentAndroid) >= 0) {
xxxxxxx;
}
//判断是否是Android 手机
if (request.getHeader("User-Agent").toLowerCase().indexOf(mobileAgentAndroid) >= 0
&& request.getHeader("User-Agent").toLowerCase().indexOf(mobileAgentPhone)>= 0) {
xxxxxxx;
}
//判断是否是微信扫描
if(request.getHeader("User-Agent").toLowerCase().indexOf(mobileAgentWeChat)>= 0) {
xxxxxxx;
}
}