推断client手机类型,并跳转到对应的app下载页面

实现的原理,是检測浏览器的 USER-AGENT 这个header,然后依据正則表達式来确定client类型。

假设都不匹配,Fallback回退策略是显示相应的页面。让用户自己选择。 
适合採用二维码扫描方式下载APP:

JSP版本号的代码例如以下所看到的:其它服务端版本号请百度搜索。

原帖地址: [您也能够訪问向上交流论坛查看很多其它行业,开源,招聘信息]

<%@page import="java.util.regex.Matcher"%>
<%@page import="java.util.regex.Pattern"%>
<%@ page language="java" pageEncoding="UTF-8"%>
<%!
// \b 是单词边界(连着的两个(字母字符 与 非字母字符) 之间的逻辑上的间隔),字符串在编译时会被转码一次,所以是 "\\b"
// \B 是单词内部逻辑间隔(连着的两个字母字符之间的逻辑上的间隔)

String androidReg = "\\bandroid|Nexus\\b";
String iosReg = "ip(hone|od|ad)";

Pattern androidPat = Pattern.compile(androidReg, Pattern.CASE_INSENSITIVE);
Pattern iosPat = Pattern.compile(iosReg, Pattern.CASE_INSENSITIVE);

public boolean likeAndroid(String userAgent){
	if(null == userAgent){
		userAgent = "";
	}
	// 匹配
	Matcher matcherAndroid = androidPat.matcher(userAgent);
	if(matcherAndroid.find()){
		return true;
	} else {
		return false;
	}
}
public boolean likeIOS(String userAgent){
	if(null == userAgent){
		userAgent = "";
	}
	// 匹配
	Matcher matcherIOS = iosPat.matcher(userAgent);
	if(matcherIOS.find()){
		return true;
	} else {
		return false;
	}
}

%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

//
String userAgent = request.getHeader( "USER-AGENT" ).toLowerCase();
System.out.println("userAgent: "+userAgent);
if(null == userAgent){
	userAgent = "";
}
if(likeAndroid(userAgent)){
System.out.println("likeAndroid: "+true);
	response.sendRedirect("http://m.iyhjy.com/download.jsp?platform=android");
	return;
	//request.getRequestDispatcher("/download.html").forward(request,response);
} else if(likeIOS(userAgent)){
System.out.println("likeIOS: "+true);
	response.sendRedirect("http://itunes.apple.com/us/app/id714751061");
	return;
	//request.getRequestDispatcher("/index.html").forward(request,response);
}
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no">
<title>下载client - 永恒记忆</title>
<link href="css/style.css" rel="stylesheet" type="text/css" />
</head>

<body>
<div class="p_down">
	<div>
		<a href="index.html">
		<img src="images/p_logo.png" class="p_logo" />
		</a>
	</div> 

		<a href="itms-services://?

action=download-manifest&url=http://m.iyhjy.com/upload/client/yhjyios.plist" class="apple download"><img src="images/p_down_apple.png" /></a>
		<a href="http://m.iyhjy.com/download.jsp?platform=android"  class="download"><img src="images/p_down_and.png" /></a>

</div>
</body>
</html>
时间: 2024-08-08 05:02:34

推断client手机类型,并跳转到对应的app下载页面的相关文章

从微信直接跳转到我们的APP下载如何用MaxJump,VJump和JumpTool来实现

最近公司有个需求,需要从微信直接跳转到我们的APP下载,其他APP跳转到我们APP一般的url Schemes 就可以跳转成功,但是因为微信对着方面做了处理,我们无法直接跳转到我们的APP下载.在这种情况下,我们对微信直接打开我们的APP下载做了一个技术调研,发现了可以加入浏览器外跳接口来实现,于是我对外跳接口做了一下了解,发现MaxJump,VJump和JumpTool这三款工具在给域名加JS防封接口上再加入了浏览器外跳接口,完全实现了我们想要的效果.直接分享这三款工具的接口:MaxJump:

【转载】 扫描二维码自动识别手机APP下载地址

移动互联网发展迅速,各种APP的开发都太疯狂了,一般稍大点儿的应用,都会准备多个版本,比如:iPhone版.iPad版.Android版,我们姑且称之为:终端适配. 业务做的再大点儿的,APP还会考虑覆盖到多个国家,比如:中文版.英文版.日文版.韩文版等,我们可称之为:APP国际化. 还有更拽的,针对不同渠道(流量来源)也提供不同的版本,比如:百度版.Google版.阿里版.腾讯版,等,我们可称之为:多渠道适配. 但是对于应用提供方,一定希望入口只有一个:在二维码疯狂流行的年代,必然是已扫描二维

扫描二维码自动识别手机APP下载地址

原文地址https://www.baidufe.com/item/92457b4d0bfde1effa40.html 移动互联网发展迅速,各种APP的开发都太疯狂了,一般稍大点儿的应用,都会准备多个版本,比如:iPhone版.iPad版.Android版,我们姑且称之为:终端适配. 业务做的再大点儿的,APP还会考虑覆盖到多个国家,比如:中文版.英文版.日文版.韩文版等,我们可称之为:APP国际化. 还有更拽的,针对不同渠道(流量来源)也提供不同的版本,比如:百度版.Google版.阿里版.腾讯

JS判断是否是微信页面,判断手机操作系统(ios或android)并跳转到不同下载页面

JS判断客户端是否是iOS或者Android 参考:http://caibaojian.com/browser-ios-or-android.html 1 function is_weixin() { 2 var ua = window.navigator.userAgent.toLowerCase(); 3 if (ua.match(/MicroMessenger/i) == 'micromessenger') { 4 return true; 5 } else { 6 return fals

nginx规则:自动降级,手机用户访问跳转手机版与PC版页面

工作中为满足业务需要以及保证服务的可用性,配置的一些nginx跳转规则,与公司业务相关信息已经抹去,提供出来希望对大家有帮助. 1. 当后端服务器出现异常,响应码为500 501 502 503 504,请求转发到静态降级服务器,从而保证业务不至于完全无法访问,对于浏览型且实时性要求不高的站点非常有用. app_servers:应用服务器,提供正常服务页面 shopwebstatic:静态服务器,提供定时爬取的静态页面 2.请求重试: proxy_next_upstream          

【微信ticket跳转】手机浏览器网页跳转到微信内置浏览器打开

[微信ticket跳转]手机浏览器网页跳转到微信内置浏览器打开 起始不少人已经关注到了招行的智能客服:http://xyk.cmbchina.com/Latte/wx/20150520wkf?from=ISTA004&clientid= 招行的这个跳转,发现后台返回的这个数据{"returnCode":"0000","returnMessage":"success","url":"weix

微信自动跳转手机默认浏览器打开APP下载链接的实现方式

微信被认为是目前最具营销价值的营销渠道之一,原因很简单,微信是目前超高活跃度的app稳稳第一名,但是在微信中点击app下载链接,都是无法下载app的.因为腾讯为了自身利益,屏蔽了其他app直接在微信中下载.我们要怎么解决这个问题呢? 解决方案: 微信中打开链接,自动打开外部浏览器打开页面 微信中点击或打开链接,自动打开外部浏览器打开指定页面.全程完全自动化,无需用户任何手工操作. 这种方案可以说是完美解决这个的问题.效果如下面这样子: 这个样子,用户点击下载按钮后,全过程自动化下载,用户操作非常

微信app关闭页面跳到主界面

大家好: 今天遇到一个问题,整理了大半天!  微信app关闭页面跳到主界面:代码跟到家共享一下! 注意: 此方法只在手机上显示! <span style="font-size:14px;"> WeixinJSBridge.invoke('closeWindow',{},function(res){ });</span> 今天的问题是在前几天的文章后续添加的 <span style="font-size:14px;"><%@

萧墙HTML5手机发展之路(51)——jquerymobile在提高页面访问速度

正在使用jQuery Mobile开发时间可以选择单页模板和多页模板,在单页模板时从一个页面跳转到另一个页面时从需要server要求.用户会感到轻微的停顿. 使用多页模板,为了改善网页之间跳跃的流畅,但多个页面一次性下载,下面的加载时间增加.响. 在基于预取技术的开发中,当第一个页面的DOM对象载入完毕后,jQuery Mobile会对标记data-prefetch的链接地址进行预取操作. 预取的具体步骤例如以下: 注意:使用预取功能时,不建议给全部链接都加入data-prefetch属性,由于