iOS和Android手机浏览器链接打开app store或应用市场下载软件讲授 ...

打印 上一主题 下一主题

主题 732|帖子 732|积分 2196

引言

  <blockquote class="kdocs-blockquote" style="">   当开辟一个app出来后,通过分享引流用户去打开/下载该app软件,差异手机下载的地方不一样,比如:ios必要到苹果商店去下载,Android手机必要到各个差异的应用商店去下载(华为手机必要到华为应用商店下载,vivo手机必要到vivo手机的应用商店下载,oppo需到oppo的应用商店去下载),该怎么处理呢?    一.上架app

  <blockquote class="kdocs-blockquote" style="">   开辟职员开辟好app后,打包生成一个自己的apk(test.apk),然后把该apk上架到签约的手机应用商店    二.手机浏览器链接打开appstore或应用市场下载软件

  <blockquote class="kdocs-blockquote" style="">   用户通过分享链接,在手机浏览器中打开网页,网页上有两个按钮:打开app,下载app   
当点击 '打开app'按钮时,拉起手机上安装的该app   
当点击'下载app'按钮时,拉起对应手机的应用商店,下载该app    代码如下:
  分享主页

  1. <?php
  2. use yii\helpers\Url;
  3. $this->title = '分享推广';
  4. ?>
  5.     <div class="common">
  6.         <div class="share-center">
  7.             <div class="share-open">
  8.                 <a href="javascript:;" target="_blank" id="openapp">
  9.                     <img class="share-open-btn"  src="/img/wap/btn_open.png" alt="打开app">
  10.                 </a>
  11.             </div>
  12.             <div class="share-dl">
  13.                 <a href="javascript:;" target="_blank" class="share-dl-apk">
  14.                     <img class="share-open-btn" src="/img/wap/btn_dl.png" alt="下载app">
  15.                 </a>
  16.             </div>
  17.         </div>
  18.     </div>
  19.     <script type="text/javascript">
  20.         <?php $this->beginBlock('js_end') ?>
  21.         $(function () {
  22.             if (isIos()) {
  23.                 if (isWeibo() || is_weixin()) {//微博微信打不开APP,(所以要做区分,这里区分和在后面的fn方法中区分都行)直接将跳转地址设置为中转页
  24.                     //之所以这里区分出微信和微博,而不是直接通过延时任务的location.href直接跳转到App Store,
  25.                     //是因为跳转到中转页会提示用户在浏览器打开,可以打开指定页面
  26.                     $("#openapp").attr("href", "<?= $url; ?>"); //url中转页地址,后台传入
  27.                 } else {
  28.                     $("#openapp").attr("href", createUrl("dsblock://"+iosId)); //iosId
  29.                 }
  30.             } else if (navigator.userAgent.match(/Android/i) != null) { // 安卓
  31.                 //判断是什么手机,并跳转到对应手机的应用商店
  32.                 type = initMobileType()
  33.                 //根据返回的手机类型,获取androidId
  34.                 if (type == "huawei") {
  35.                     androidId = 'com.xxx.app.HUAWEI'
  36.                 } else if (type == "oppo") {
  37.                     androidId = 'com.xxx.app.OPPO'
  38.                 }
  39.                 url = getMobileUrlByType(type, androidId)
  40.                 $(".share-dl-apk").attr("href", createUrl(url))
  41.                 //打开app: baidu://baiduopenwith app内核
  42.                 $("#openapp").attr("href", createUrl("baidu://baiduopenwith"));
  43.             } else { //其他手机
  44.                 //下载页面:下载公司自己渠道的app(一般apk放在阿里云/腾讯云的对象存储中)
  45.                 $("#share-dl-apk").attr("href", "<?= $apk_url; ?>"); //阿里云/腾讯云的对象存储中上传的apk
  46.             }
  47.         });
  48.         //通过不同安卓手机获取不同的跳转链接
  49.         function getMobileUrlByType(type,androidId) {
  50.             // androidId 如:com.xxx.app
  51.             var url = '';
  52.             if (type == 'oppo') { //oppo
  53.                 url = 'oppomarket://details?packagename=' + androidId
  54.             } else if (type == 'huawei') { // huawei
  55.                 url = 'appmarket://details?id='  + androidId
  56.             } else if (type == 'xiaomi') { // xiaomi
  57.                 url = 'mimarket://details?id='  + androidId
  58.             } else if (type == 'vivo') { // vivo
  59.                 url = 'vivomarket://details?id='  + androidId
  60.             } else if (type =='samsung') { // samsung
  61.                 url = 'samsungapps://ProductDetail/'  + androidId
  62.             } else { // other
  63.                 url = 'market://details?id='  + androidId;
  64.             }
  65.             return url;
  66.         }
  67.         //判断手机类型
  68.         function initMobileType() {
  69.             var sUserAgent = navigator.userAgent.toLowerCase();
  70.             var isIphone = sUserAgent.match(/iphone/i) == "iphone";
  71.             var isHuawei = sUserAgent.match(/huawei/i) == "huawei";
  72.             var isHonor = sUserAgent.match(/honor/i) == "honor";
  73.             var isOppo = sUserAgent.match(/oppo/i) == "oppo";
  74.             var isOppoR15 = sUserAgent.match(/pacm00/i) == "pacm00";
  75.             var isVivo = sUserAgent.match(/vivo/i) == "vivo";
  76.             var isXiaomi = sUserAgent.match(/mi\s/i) == "mi ";
  77.             var isXiaomi2s = sUserAgent.match(/mix\s/i) == "mix ";
  78.             var isRedmi = sUserAgent.match(/redmi/i) == "redmi";
  79.             var isSamsung = sUserAgent.match(/sm-/i) == "sm-";
  80.             if (isIphone) {
  81.                 return 'iphone';
  82.             } else if (isHuawei || isHonor) {
  83.                 return 'huawei';
  84.             } else if (isOppo || isOppoR15) {
  85.                 return 'oppo';
  86.             } else if (isVivo) {
  87.                 return 'vivo';
  88.             } else if (isXiaomi || isRedmi || isXiaomi2s) {
  89.                 return 'xiaomi';
  90.             } else if (isSamsung) {
  91.                 return 'samsung';
  92.             } else {
  93.                 return 'default';
  94.             }
  95.         }
  96.         //涉及到的相关方法
  97.         function is_weixin() {
  98.             var ua = navigator.userAgent.toLowerCase();
  99.             if (ua.match(/MicroMessenger/i) == "micromessenger") {
  100.                 return true;
  101.             } else {
  102.                 return false;
  103.             }
  104.         }
  105.         function is_qqbrowser() {
  106.             var ua = navigator.userAgent.toLowerCase();
  107.             if (/mqqbrowser|qq/i.test(ua)) {
  108.                 return true;
  109.             } else {
  110.                 return false;
  111.             }
  112.         }
  113.         function isWeibo() {
  114.             var ua = window.navigator.userAgent;
  115.             return !!/__weibo__/.exec(ua);
  116.         }
  117.         function isIos() {
  118.             return navigator.userAgent.match(/(iPhone|iPad|iPod|iOS)/i) != null;
  119.         }
  120.         function isSafari() {
  121.             var ua = window.navigator.userAgent;
  122.             return !!/Version[|\/]([\w.]+)(\s\w.+)?\s?Safari|like\sGecko\)\sMobile\/\w{3,}$/.exec(ua);
  123.         }
  124.         function createUrl(url, obj) {//拼接跳转链接及参数生成新的链接
  125.             let params = [];
  126.             for (let p in obj) {
  127.                 if (obj[p] != null && obj[p] != '') {
  128.                     params.push(p + '=' + obj[p])
  129.                 }
  130.             }
  131.             return url + '?' + params.join("&");
  132.         }
  133.         <?php $this->endBlock() ?>
  134.     </script>
  135. <?php $this->registerJs($this->blocks['js_end'], \yii\web\View::POS_END); ?>
复制代码
中转页

  1. <?php
  2. use yii\helpers\Url;
  3. $this->registerJsFile('/js/jquery-1.4.1.min.js', ['depends' => ['frontend\assets\WapAppAsset'], 'position' => $this::POS_HEAD]);
  4. $this->registerJsFile('/js/clipboard-1.7.1.min.js', ['depends' => ['frontend\assets\WapAppAsset'], 'position' => $this::POS_HEAD]);
  5. $this->title = '分享推广 | 下载';
  6. ?>
  7. <style>
  8.     .share-top {
  9.         float: left;
  10.         width: 400px;
  11.         height: 400px;
  12.         text-align: center;
  13.     }
  14.     .share-center {
  15.         margin-left: 10%;
  16.         height: 750px;
  17.     }
  18.     .share-btn {
  19.         float: left;
  20.         width: 40%;
  21.         height: 8%;
  22.         position: relative;
  23.     }
  24. </style>
  25. <div class="common">
  26.     <div class="share-top" id="tip">
  27.         已安装,在浏览器打开
  28.     </div>
  29.     <div class="share-center">
  30.         <div class="share-dl">
  31.             <a class="open-button download-button" id="install">
  32.                 <img src="/img/wap/btn_dl.png" class="share-btn" alt="下载app">
  33.             </a>
  34.         </div>
  35.         <div class="share-open">
  36.             <a class="open-button" id="open">
  37.                 <img src="/img/wap/btn_open.png" class="share-btn" alt="打开app">
  38.             </a>
  39.         </div>
  40.     </div>
  41. </div>
  42. <script type="text/javascript">
  43.     <?php $this->beginBlock('js_end') ?>
  44.     $(function () {
  45.         if (is_weixin() || isWeibo()) {
  46.             showDiv("#tip", true);
  47.             showDiv("#open", false);
  48.         } else {
  49.             showDiv("#tip", false);
  50.             showDiv("#open", true);
  51.         }
  52.         if (isIos()) {//iOS
  53.              $("#open").attr("href", "dsblockchain://" );
  54.              $("#install").attr("href", "App Store推广链接");
  55.         } else {//安卓
  56.             //打开app:baidu://baiduopenwith app内核
  57.             $("#open").attr("href", "baidu://baiduopenwith");
  58.             if (is_weixin()) {//微信无法下载,打开应用宝推广页
  59.                 $("#install").attr("href", "应用宝推广链接");
  60.             } else {
  61.                 //判断是什么手机,并跳转到对应手机的应用商店
  62.                 type = initMobileType()
  63.                 //根据返回的手机类型,获取androidId
  64.                 if (type == "huawei") {
  65.                     androidId = 'com.xxx.app.HUAWEI'
  66.                 } else if (type == "oppo") {
  67.                     androidId = 'com.xxx.app.OPPO'
  68.                 }
  69.                 url = getMobileUrlByType(type, androidId)
  70.                 if (!url) {
  71.                     url = "<?= $apk_url; ?>";  //阿里云/腾讯云的对象存储中上传的apk
  72.                 }
  73.             $("#install").attr("href", url);
  74.             }
  75.         }
  76.     });
  77.     //通过不同安卓手机获取不同的跳转链接
  78.     function getMobileUrlByType(type) {
  79.         // androidId 如:com.xxx.app
  80.         var url = '';
  81.         if (type == 'oppo') { //oppo
  82.             url = 'oppomarket://details?packagename='
  83.         } else if (type == 'huawei') { // huawei
  84.             url = 'appmarket://details?id=com.bzyl.mahjongtown.HUAWEI'
  85.         } else if (type == 'xiaomi') { // xiaomi
  86.             url = 'mimarket://details?id='
  87.         } else if (type == 'vivo') { // vivo
  88.             url = 'vivomarket://details?id='
  89.         } else if (type =='samsung') { // samsung
  90.             url = 'samsungapps://ProductDetail/'
  91.         } else { // other
  92.             url = '';
  93.         }
  94.         return url;
  95.     }
  96.     //判断手机类型
  97.     function initMobileType() {
  98.         var sUserAgent = navigator.userAgent.toLowerCase();
  99.         var isIphone = sUserAgent.match(/iphone/i) == "iphone";
  100.         var isHuawei = sUserAgent.match(/huawei/i) == "huawei";
  101.         var isHonor = sUserAgent.match(/honor/i) == "honor";
  102.         var isOppo = sUserAgent.match(/oppo/i) == "oppo";
  103.         var isOppoR15 = sUserAgent.match(/pacm00/i) == "pacm00";
  104.         var isVivo = sUserAgent.match(/vivo/i) == "vivo";
  105.         var isXiaomi = sUserAgent.match(/mi\s/i) == "mi ";
  106.         var isXiaomi2s = sUserAgent.match(/mix\s/i) == "mix ";
  107.         var isRedmi = sUserAgent.match(/redmi/i) == "redmi";
  108.         var isSamsung = sUserAgent.match(/sm-/i) == "sm-";
  109.         if (isIphone) {
  110.             return 'iphone';
  111.         } else if (isHuawei || isHonor) {
  112.             return 'huawei';
  113.         } else if (isOppo || isOppoR15) {
  114.             return 'oppo';
  115.         } else if (isVivo) {
  116.             return 'vivo';
  117.         } else if (isXiaomi || isRedmi || isXiaomi2s) {
  118.             return 'xiaomi';
  119.         } else if (isSamsung) {
  120.             return 'samsung';
  121.         } else {
  122.             return 'default';
  123.         }
  124.     }
  125.     function createUrl(url, obj) {//拼接跳转链接及参数生成新的链接
  126.         let params = [];
  127.         for (let p in obj) {
  128.             if (obj[p] != null && obj[p] != '') {
  129.                 params.push(p + '=' + obj[p])
  130.             }
  131.         }
  132.         return url + '?' + params.join("&");
  133.     }
  134.     function isIos() {
  135.         return navigator.userAgent.match(/(iPhone|iPad|iPod|iOS)/i) != null;
  136.     }
  137.     //涉及到的相关方法
  138.     function is_weixin() {
  139.         var ua = navigator.userAgent.toLowerCase();
  140.         if (ua.match(/MicroMessenger/i) == "micromessenger") {
  141.             return true;
  142.         } else {
  143.             return false;
  144.         }
  145.     }
  146.     function isWeibo() {
  147.         var ua = window.navigator.userAgent;
  148.         return !!/__weibo__/.exec(ua);
  149.     }
  150.     function showDiv(divName, isShow) {
  151.         if (isShow) {
  152.             $(divName).show();
  153.         } else {
  154.             $(divName).hide();
  155.         }
  156.     }
  157.     <?php $this->endBlock() ?>
  158. </script>
  159. <?php $this->registerJs($this->blocks['js_end'], \yii\web\View::POS_END); ?>
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

大连密封材料

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表