判断客户端手机类型,并跳转到相应的app下载页面
实现的原理,是检测浏览器的 USER-AGENT 这个header,然后根据正则表达式来确定客户端类型。
如果都不匹配,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.jb51.net/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); } %>下载客户端 - 永恒记忆 <> <>
关键字词: