前言:做出一个产品后,第一步是更方便简洁的让用户可以马上安装上应用,第一步就给用户一个好的体验。二维码已经流行很久,二维码的确给手机输入地址方便了许多许多。

如果 ios 平台和 android 平台都已经发布应用,那么我们怎么用一个二维码来完成它的下载呢。

相关介绍

ios企业版:任意部署和下载的 ios 应用包。不经过 app store 下载。姑且不论苹果允许不允许发布给用户。关于企业版的部署,请看我的其他文章。如果看了后还是有点迷糊,那建议搜其他的看,哈哈,我就摘录几个要点。

实现方案

1. 写一个静态页面(动态页面更好写,不过限于直接拿来就能用,不依赖环境,我这里选择了静态页面)。静态页面用 javaScript 来做实现浏览器的判断以及应用的判断。

2. 用这个静态页面所部署的链接,去度娘上找一个生成二维码的工具,去转换为二维码。

3. 分享二维码。扫描得到地址,自动下载。

具体实现

直接上代码。大学里的毕业作品用了过 javascript ,十年了忘光了,写了三小时终于写好。高手们请指点。

<script type="text/javascript">  //各个应用各个平台的下载地址  ios对应的是企业版地址
//麻将
var iosurl_majiang = "https://dl.dropboxusercontent.com/s/gcb7nkmsjvj32uz/2PMahjong_offical.plist";
var iosAppSotreID_majiang = "724233066";//app store app id
var androidurl_majiang = "http://gamedb.oss.aliyuncs.com/blmj.apk";
//斗牛牛
var iosurl_dnn = "0";
var iosAppSotreID_dnn = "0";
var androidurl_dnn = "http://gamedb.oss.aliyuncs.com/dnn.apk";
//百人牛牛
var iosurl_brnn = "0";
var iosAppSotreID_brnn = "0";
var androidurl_brnn = "http://gamedb.oss.aliyuncs.com/brnn.apk";
//飘三叶
var iosurl_psy = "0";
var iosAppSotreID_psy = "0";
var androidurl_psy = "http://gamedb.oss.aliyuncs.com/zjh.apk";
//赚
var iosurl_znm = "https://dl.dropboxusercontent.com/s/q4zwt3ecdxv5gn1/Treasure_offical.plist";
var iosAppSotreID_znm = "0";
var androidurl_znm = "http://znm";  var appid = getappid();  //应用属性
var appPropertys = [ ["未知应用","http://www.blmg.cc" ,"http://www.blmg.cc" ,"http://www.blmg.cc" ],  ["百灵麻将",iosurl_majiang , androidurl_majiang , iosAppSotreID_majiang],   ["斗牛牛",  iosurl_dnn , androidurl_dnn , iosAppSotreID_dnn],   ["百人牛牛", iosurl_brnn , androidurl_brnn , iosAppSotreID_brnn],   ["飘三叶",  iosurl_psy , androidurl_psy , iosAppSotreID_psy],  ["赚你妹",  iosurl_znm , androidurl_znm , androidurl_znm]  ];   var platform = "未知平台";
var desc = "应用识别不出";  var browser={
versions:function(){
var u = navigator.userAgent, app = navigator.appVersion;
return { //移动终端浏览器版本信息
trident: u.indexOf('Trident') > -1, //IE内核
presto: u.indexOf('Presto') > -1, //opera内核
webKit: u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核
gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, //火狐内核
mobile: !!u.match(/AppleWebKit.*Mobile.*/), //是否为移动终端
ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端
android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, //android终端或uc浏览器
iPhone: u.indexOf('iPhone') > -1 , //是否为iPhone或者QQHD浏览器
iPad: u.indexOf('iPad') > -1, //是否iPad
webApp: u.indexOf('Safari') == -1 //是否web应该程序,没有头部与底部
};
}(),
language:(navigator.browserLanguage || navigator.language).toLowerCase()
}   window.onload =function(){  if(browser.versions.mobile)  {  //移动终端  if(browser.versions.iPhone || browser.versions.ios || browser.versions.iPad )  {  url = appPropertys[appid][1];  var jumpurl = encodeURIComponent(url);  //查找是去下载企业版还是去app store 下载  var u=window.location.href;  var index_store = u.indexOf("_appleAppStore");//查找市场下载的标示  if(index_store != -1)  {  var appstoreUrl = "https://itunes.apple.com/us/app/id"+appPropertys[appid][3]+ "?mt=8";  location.href=appstoreUrl;  }  else  {  location.href="itms-services://?action=download-manifest&url="+jumpurl;  }  desc = "iphone";  //  }  else if(browser.versions.android)  {  url = appPropertys[appid][2];
//            var jumpurl = encodeURIComponent(url);  //location.href=jumpurl;  location.href=url;  desc = "android";  }  else  {  url = appPropertys[appid][0];  location.href="http://www.blmg.cc";  desc = "未知";  }  }  else  {  var u=window.location.href;  var index_store = u.indexOf("_appleAppStore");//查找市场下载的标示  if(index_store != -1)  {  var appstoreUrl = "https://itunes.apple.com/us/app/id"+appPropertys[appid][3]+ "?mt=8";  location.href=appstoreUrl;  }  else  {  url = appPropertys[appid][0];  desc = "web";  }   //web 终端  //location.href="http://www.blmg.cc";  }  platform = appPropertys[appid][0];  }      function print_out( )  {  var u=window.location.href;  var index_store = u.indexOf("_debug");//查看是否有 debug 宏  if(index_store != -1)  {document.writeln("<br>");  document.writeln("<br>");  document.writeln("语言版本: "+browser.language);  document.writeln("<br>");   document.writeln(" 是否为移动终端: "+browser.versions.mobile);   document.writeln("<br>");  document.writeln(" ios终端: "+browser.versions.ios);   document.writeln("<br>");  document.writeln(" android终端: "+browser.versions.android);   document.writeln("<br>");  document.writeln(" 是否为iPhone: "+browser.versions.iPhone);   document.writeln("<br>");  document.writeln(" 是否iPad: "+browser.versions.iPad);   document.writeln("<br>");  document.writeln(navigator.userAgent);   document.writeln("<br>");  document.writeln("应用识别: " + appPropertys[appid][0]  );  document.writeln("<br>");  document.writeln("ios: " + appPropertys[appid][1]  );  document.writeln("<br>");  document.writeln("android: " + appPropertys[appid][2]  );  document.writeln("<br>");  }}  function getappid()  {  var u=window.location.href;  var index_majiang = u.indexOf("_majiang");//麻将地址  var index_dnn = u.indexOf("_dnn");//斗牛牛地址  var index_brnn = u.indexOf("_brnn");//百人牛牛地址  var index_psy = u.indexOf("_psy");//za金花地址  var index_znm = u.indexOf("_znm");//za金花地址  var appid = 0;  if(index_majiang !=-1)  {  appid = 1;   }  else if(index_dnn != -1)  {  appid = 2;  }  else if(index_brnn != -1)  {  appid = 3;  }  else if(index_psy != -1)  {  appid = 4;  }  else if(index_znm != -1)  {  appid = 5;  }  return appid;  }   </script>     <!-- saved from url=(0025)http://www.blmg.cc/e.html -->
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  <title>一键安装</title>  <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0;" name="viewport">  </head>
<body>   加载中...请稍后<br>  <br>  <script language="javascript" >  if(browser.versions.iPhone || browser.versions.ios || browser.versions.iPad )  {  document.writeln("如果长时间没有弹出安装提示,请点击右上角菜单:使用safari 浏览器打开");   }  else if(browser.versions.android)  {  document.writeln("如果长时间没有弹出安装提示,请点击右上角菜单:使用系统(其他)浏览器打开");  }  else if(browser.versions.webApp)  {  document.writeln("正在打开....^_^");  }  else  {  document.writeln("正在打开....O(∩_∩)O~");  }  print_out();  </script>  </body>  </html>  

URL的生成

假设部署这个网页的地址是: http://www.blmg.cc/ia.html

如果要生成百灵麻将游戏的链接,在这个地址后面加上游戏标示 _majiang,即    http://www.blmg.cc/ia.html?_majiang

这个链接支持 ios 的企业版和 android 版的下载。用这个地址去创建二维码吧!

如果要生成这个游戏的 appstore 的链接,那就在后面再加一个 _appleAppStore , 即  http://www.blmg.cc/ia.html?_majiang_appleAppStore 。然后用这个地址生成二维码。

刚想了下,这个举动真是多余,哎,直接拿苹果的实际链接地址去生成好了,不用这个方式。这个有点多余。无所谓了。用也可以,不用也行。

如果碰到了不能正常识别的浏览器,比如android的某个手机浏览器,不能下载。那么把调试日志打开,即在 url 后面加上 _debug . 即:

http://www.blmg.cc/ia.html?_majiang_appleAppStore_debug

可以看到一些浏览器的信息

二维码的生成

网上有很多网站可以在线生成二维码,我用了这个:

http://cli.im/

填入链接地址    http://www.blmg.cc/ia.html?_majiang_appleAppStore_debug

得到二维码

来扫一扫?

最后

试一下吧。看到是啥游戏了吗?分享方案的同时,分享游戏给浏览本文的人。帮忙顶一顶。

顺便说一句,我还没真机测试

一个二维码通吃 android , ios 下载相关推荐

  1. 无广告托管应用,免费的应用分发平台,提供下载次数等数据统计,Android、ios应用合并,一个二维码搞定

    前言 省去自建服务器的麻烦,并且提供了下载次数等数据统计,可以随时查看历史版本,一个二维码搞定Android和ios,扫码时可根据机型自动识别,给开发者提供很大便利,不仅免费而且操作非常的简单. 1. ...

  2. 前端生成二维码qrcode.js,并下载

    利用qrcode.js在前端生成二维码,并下载 一.引入js包 <script type="text/javascript" src="//static.runoo ...

  3. 用一个二维码做下载地址,自动区分是 ios 还是 android

    用一个二维码做下载地址,自动区分是 ios 还是 android, 甚至区分 iphone  和 ipad. <html><head><meta http-equiv=& ...

  4. 一个二维码如何自动识别是安卓(Android)还是苹果(IOS)

    思考问题: 通常,我们开发一个APP,有Android版本.IOS版本. 但是只有一个二维码?怎么办呢? 怎么让IOS用户扫描二维码下载IOS版本,Android用户扫描二维码下载到Android版本 ...

  5. Android和iOS应用下载实现合成一个二维码

    一个应用通常会需要分别合成两个二维码,这样,有些产品就感觉比较麻烦.前一段公司产品,也是看着别人家都是用一个二维码,也是提出了这样的一个需求,其实,就是增加新的HTML文件,放在服务器上,当不同客户端 ...

  6. 腾讯微下载android和ios共用一个二维码

    http://m.zhihu.com/question/23925409 在腾讯开放平台中 移动应用接入中的android和ios都申请通过后 在QQ空间的应用中心中搜索应用,右侧的二维码就是可以分平 ...

  7. iOS和Android使用同一个二维码自动跳转不同下载页面链接(附生成二维码地址方法)

    一.使用场景 开发了一款App,包括iOS及Android版,到了推广阶段,准备生成二维码让用户扫码下载,那这个二维码该怎么生成?iOS及Andorid各自生成一个二维码让用户区分下载?当然这种方式是 ...

  8. 一个二维码实现苹果和安卓两个市场安装包自动分发

    概述 现在的各种市场推广方式,不论是平面的还是多媒体的,都能看到二维码的身影了,可以说是二维码满天飞.扫一扫的方式几乎已经深入人心,这一方面微信可谓功不可没,现在也是树敌无数(如果这一句你不懂,请继续 ...

  9. 安卓app和苹果app共用一个二维码

    应项目要求,现在安卓app和苹果app共用一个二维码,对外提供下载: <html><head><meta http-equiv="Content-Type&qu ...

最新文章

  1. linux LD_PRELOAD 预加载 so 简介
  2. linux 权限 775 777 区别
  3. windows下用QTwebkit解析html
  4. WCF 服务端+客户端动态调用
  5. excel 区间人数柱状图_Excel中,区间统计的3种技巧都不掌握,那就真的OUt了!
  6. 拼多多的车开向五环内!将继续撒钱,撒到你用为止...
  7. html自动生成工具_「写论文神器」一个好用的论文自动生成工具,内含30w 文献数据...
  8. python 函数默认参数的小坑
  9. ble l2cap 工作过程_BLE 链路层报文详解
  10. linux 进程学习
  11. qcom charger
  12. 查看DLL中导出的函数及参数
  13. Linux安装docker-ce教程 centos依赖包安装
  14. 从“卡脖子”到人有我优,数字孪生盾构机施工流程可视化
  15. linux台式机怎么用无线网卡,台式机无线网卡怎么用 台式机USB无线网卡安装使用教程...
  16. GD32F103RBT6开发笔记
  17. 跨境电商倍受青睐缘由为何,木瓜移动带你一探究竟
  18. Error处理: android.media.MediaRecorder.start(Native Method) 报错:start failed: -19
  19. idea项目启动报错 Failed to parse configuration class [com.epoint.FrameWebApplication]
  20. inferred type_您最终可以使用var在Java中声明Inferred Type局部变量-这就是为什么它很棒...

热门文章

  1. cocos Creator 3.2 关于 NodePool 对象池的应用- (弹出框)
  2. iview button根据条件 disabled可用或者不可用
  3. 深度学习矩阵乘法的终极奥义einsum,结合多个计算框架上的使用
  4. insmod: error inserting 'xxx.ko': -1 Invalid module format
  5. 输入一个数字 将其翻转反转调转
  6. 欧氏距离与余弦距离的关系
  7. 读书笔记-《赢在用户:Web人物角色创建和应用实践指南》
  8. 这一天,我拿到了华为“天道酬勤”奖,这是我到海外的第十年
  9. 基于深度学习的两种信源信道联合编码
  10. python cv2什么意思_cv2,CV2是什么意思