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

作者:daisy 时间:2024-04-22 13:24:16 

前言

最近一个项目需要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,二维码,合并
0
投稿

猜你喜欢

  • Python装饰器的定义和使用详情

    2021-01-26 23:22:15
  • 分享:在存储过程中使用另一个存储过程返回的查询结果集的方法

    2024-01-16 13:03:57
  • Java+mysql本地图片上传数据库及下载示例

    2023-07-23 19:49:13
  • 关于Python3的import问题(pycharm可以运行命令行import错误)

    2022-11-11 11:34:11
  • js页面跳转常用的几种方式

    2023-08-07 08:30:27
  • Vue3.0中的monorepo管理模式的实现

    2024-04-28 09:24:51
  • sql面试题(查看数据中指定几行记录)

    2024-01-13 10:58:58
  • python变量命名的7条建议

    2021-05-15 20:16:07
  • Go 语言入门之Go 计时器介绍

    2024-05-25 15:16:04
  • python密码学库pynacl功能介绍

    2021-03-07 01:29:44
  • web.config文件的中文解释

    2024-05-13 09:16:08
  • ASP.NET Core中的静态文件

    2024-05-21 10:13:23
  • 详解Python3 中hasattr()、getattr()、setattr()、delattr()函数及示例代码数

    2023-08-21 15:36:40
  • Asp生成RSS的类_给网站加上RSS

    2011-04-19 11:06:00
  • vue3 使用defineAsyncComponent与component标签实现动态渲染组件思路详解

    2024-05-02 16:32:38
  • PyQt 如何创建自定义QWidget

    2023-09-13 17:30:48
  • Go语言Goroutinue和管道效率详解

    2024-02-02 18:19:09
  • Python简单实现gif动图倒放示例

    2021-08-20 16:29:21
  • python通过cookie模拟已登录状态的初步研究

    2022-10-25 08:20:46
  • 详述如何提高MySQL中数据装载效率

    2009-10-26 10:27:00
  • asp之家 网络编程 m.aspxhome.com