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 options属性集合操作代码
Dec 28 Javascript
javascript 实现子父窗体互相传值的简单实例
Feb 17 Javascript
php结合imgareaselect实现图片裁剪
Jul 05 Javascript
基于Bootstrap里面的Button dropdown打造自定义select
May 30 Javascript
基于js对象,操作属性、方法详解
Aug 11 Javascript
谈谈JavaScript的New关键字
Aug 26 Javascript
JavaScript装饰器函数(Decorator)实例详解
Mar 30 Javascript
详解Vue用axios发送post请求自动set cookie
May 10 Javascript
浅谈Angular 观察者模式理解
Nov 01 Javascript
JavaScript面试技巧之数组的一些不low操作
Mar 22 Javascript
解决Vue项目中tff报错的问题
Oct 21 Javascript
vue 使用 sortable 实现 el-table 拖拽排序功能
Dec 26 Vue.js
微信小程序 实例应用(记账)详解
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
php 数组的指针操作实现代码
2011/02/08 PHP
sql注入与转义的php函数代码
2013/06/17 PHP
destoon调用discuz论坛中带图片帖子的实现方法
2014/08/21 PHP
thinkPHP学习笔记之安装配置篇
2015/03/05 PHP
orm获取关联表里的属性值
2016/04/17 PHP
Laravel SQL语句记录方式(推荐)
2016/05/26 PHP
Thinkphp 5.0实现微信企业付款到零钱
2018/09/30 PHP
初学Javascript的一些总结
2008/11/03 Javascript
PPK 谈 JavaScript 的 this 关键字 [翻译]
2009/09/29 Javascript
JQuery弹出层示例可自定义
2014/05/19 Javascript
JS小游戏之仙剑翻牌源码详解
2014/09/25 Javascript
Node.js抓取中文网页乱码问题和解决方法
2015/02/10 Javascript
浅谈JavaScript中null和undefined
2015/07/09 Javascript
基于JavaScript实现定时跳转到指定页面
2016/01/01 Javascript
jQuery页面加载初始化的3种方法(推荐)
2016/06/02 Javascript
JS 日期与时间戮相互转化的简单实例
2016/06/22 Javascript
js设置文字颜色的方法示例
2016/12/30 Javascript
浅谈关于axios和session的一些事
2017/07/13 Javascript
layui表格内容溢出的解决方法
2019/09/06 Javascript
微信小程序实现多选框全选与反全选及购物车中删除选中的商品功能
2019/12/17 Javascript
extjs图表绘制之条形图实现方法分析
2020/03/06 Javascript
vue将data恢复到初始状态 &amp;&amp; 重新渲染组件实例
2020/09/04 Javascript
javascript实现打砖块小游戏(附完整源码)
2020/09/18 Javascript
[01:02:53]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第二局
2016/03/06 DOTA
[58:09]Spirit vs NB Supermajor小组赛 A组败者组决赛 BO3 第三场 6.2
2018/06/03 DOTA
python实现朴素贝叶斯分类器
2018/03/28 Python
pyqt5实现登录界面的模板
2020/05/30 Python
利用 Python ElementTree 生成 xml的实例
2020/03/06 Python
茱莉蔻美国官网:Jurlique美国
2020/11/24 全球购物
汽车制造与装配专业自荐信范文
2014/01/02 职场文书
服务之星获奖感言
2014/01/21 职场文书
企业元宵节主持词
2014/03/25 职场文书
工程负责人任命书
2014/06/06 职场文书
环境建议书
2015/02/04 职场文书
2016年度继续教育学习心得体会
2016/01/19 职场文书
mysql的单列多值存储实例详解
2022/04/05 MySQL