iOS和Android用同一个二维码实现跳转下载链接的方法


Posted in Javascript onSeptember 28, 2016

前言

最近一个项目需要iOS和安卓使用一个二维码,让扫描的机器自己识别操作系统实现跳转到相应的下载链接。比如iPhone用微信进行扫描就让他跳转appStore的下载页面,安卓机器使用微信扫描就直接跳浏览器下载。但是这二维码还有一个需求就是,用户已经下载了这个app,当用户打开app进入到注册页面时,再次扫描这个二维码时,自动填写邀请码进行注册。那么该如何实现,细节就不说了,直接上代码。

使用js实现,其实代码非常简单.

使用时直接拷贝代码,改掉相应的链接就好。

PS:该链接在微信环境打开时还是需要手动跳转到手机的浏览器才能跳到下载页面,因为微信内的webView比较特别,所以写了一个alert引导用户打开浏览器。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title></title>
</head>
<body>

  <script>

  /**
    出来的链接大概是长这样的
    http://xxxx.cn/243423.html?c=Q23DR32
  */

  // c=Q23DR32是注册时扫描获取的邀请码。
  // 这样加参数,后面的参数会被自动忽略,不会影响加载此网页

    goDownload();

    // 去下载
    function goDownload() {
      var u = navigator.userAgent, app = navigator.appVersion;
      var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1;
      var isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/);
      // 是安卓浏览器
      if (isAndroid) {
        window.location.href = 'http://xxxxxxx.cn/release/xxxx-release.apk'; // 跳安卓端下载地址
      }
      // 是iOS浏览器
      if (isIOS) {
        window.location.href = 'https://itunes.apple.com/cn/app/xxxxxxx/id1124348115?mt=8'; // 跳AppStore下载地址
      }

      // 是微信内部webView
      if (is_weixn()) {
        alert("请点击右上角按钮, 点击使用浏览器打开");
      }

      // 是PC端
      if (IsPC()) {
        window.location.href = 'http://www.xxxxxxx.cn/index.html'; // 公司主页
      }
    }

    // 是微信浏览器
    function is_weixn(){
      var ua = navigator.userAgent.toLowerCase();
      if(ua.match(/MicroMessenger/i)=="micromessenger") {
        return true;
      } else {
        return false;
      }
    }


    function IsPC() {
      var userAgentInfo = navigator.userAgent;
      var Agents = ["Android", "iPhone",
        "SymbianOS", "Windows Phone",
        "iPad", "iPod"];
      var flag = true;
      for (var v = 0; v < Agents.length; v++) {
        if (userAgentInfo.indexOf(Agents[v]) > 0) {
          flag = false;
          break;
        }
      }
      return flag;
    }

  </script>
</body>
</html>

总结

以上就是iOS和Android用同一个二维码实现跳转下载链接的方法,大家都学会了吗,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有更好的解决方案或可以通过代码判断微信客户端的系统环境的方法请留言交流。

Javascript 相关文章推荐
深入理解JavaScript系列(6):S.O.L.I.D五大原则之单一职责SRP
Jan 15 Javascript
javascript中普通函数的使用介绍
Dec 19 Javascript
jQuery时间日期三级联动(推荐)
Nov 27 Javascript
Bootstrap CSS布局之代码
Dec 17 Javascript
第一次记录Bootstrap table学习笔记(1)
May 18 Javascript
vue实现百度搜索下拉提示功能实例
Jun 14 Javascript
小程序云开发初探(小结)
Oct 24 Javascript
微信小程序实现购物页面左右联动
Feb 15 Javascript
es6数值的扩展方法
Mar 11 Javascript
通过js给网页加上水印背景实例
Jun 17 Javascript
解决Echarts 显示隐藏后宽度高度变小的问题
Jul 19 Javascript
JavaScript实现简单拖拽效果
Sep 15 Javascript
微信小程序 实例应用(记账)详解
Sep 28 #Javascript
JavaScript 闭包详细介绍
Sep 28 #Javascript
Bootstrapvalidator校验、校验清除重置的实现代码(推荐)
Sep 28 #Javascript
bootstrap datepicker限定可选时间范围实现方法
Sep 28 #Javascript
BootstrapValidator不触发校验的实现代码
Sep 28 #Javascript
bootstrap datepicker 与bootstrapValidator同时使用时选择日期后无法正常触发校验的解决思路
Sep 28 #Javascript
使用bootstrapValidator插件进行动态添加表单元素并校验
Sep 28 #Javascript
You might like
海贼王:最美的悬赏令!
2020/03/02 日漫
php email邮箱正则
2008/10/08 PHP
php的字符串用法小结
2010/06/08 PHP
smarty获得当前url的方法分享
2014/02/14 PHP
php中FTP函数ftp_connect、ftp_login与ftp_chmod用法
2014/11/18 PHP
PHP实现的多文件上传类及用法示例
2016/05/06 PHP
PHP网页安全认证的实例详解
2017/09/28 PHP
PHP中$GLOBALS与global的区别详解
2019/03/21 PHP
PHP __call()方法实现委托示例
2019/05/20 PHP
HTML5附件拖拽上传drop &amp; google.gears实现代码
2011/04/28 Javascript
类似php的js数组的in_array函数自定义方法
2013/12/27 Javascript
判断iframe里的页面是否加载完成
2014/06/06 Javascript
js使用Array.prototype.sort()对数组对象排序的方法
2015/01/28 Javascript
javascript中typeof操作符和constucor属性检测
2015/02/26 Javascript
JS实现从表格中动态删除指定行的方法
2015/03/31 Javascript
关于angular js_$watch监控属性和对象详解
2017/04/24 Javascript
详解react-router如何实现按需加载
2017/06/15 Javascript
vue组件父子间通信之综合练习(聊天室)
2017/11/07 Javascript
jQuery中each和js中forEach的区别分析
2019/02/27 jQuery
微信小程序 WXML节点信息查询详解
2019/07/29 Javascript
JavaScript函数IIFE使用详解
2019/10/21 Javascript
[00:34]TI7不朽珍藏III——地穴编织者不朽展示
2017/07/15 DOTA
判断python字典中key是否存在的两种方法
2018/08/10 Python
python3 批量获取对应端口服务的实例
2019/07/25 Python
Django admin model 汉化显示文字的实现方法
2019/08/12 Python
对python中arange()和linspace()的区别说明
2020/05/03 Python
Python代码覆盖率统计工具coverage.py用法详解
2020/11/25 Python
应届生的求职推荐信范文
2013/11/30 职场文书
国际贸易专业个人求职信格式
2014/02/02 职场文书
课前一分钟演讲稿
2014/08/26 职场文书
领导干部失职检讨书
2015/05/05 职场文书
党支部综合考察意见
2015/06/01 职场文书
2019军训心得体会
2019/06/27 职场文书
SpringBoot实现quartz定时任务可视化管理功能
2021/08/30 Java/Android
动画「半妖的夜叉姬」新BD特典图公开
2022/03/22 日漫
《帝国时代4》赛季预告 新增内容编译器可创造地图
2022/04/03 其他游戏