zoukankan      html  css  js  c++  java
  • 通过JS唤醒app(安卓+ios)

    有需求说要通过页面按钮唤醒app,或者手机上没有这款app跳转到商店,然后刚开始也是查了资料的,结果发现一头雾水,不过最后还是捣鼓出来了,当然也参考了前人分享的经验,下面我就将方法整理一下:

    首先明确一下目的,是要在分享出去的html页面,通过js操作唤醒app或者打开商店,那么第一步就应该先判断当前的环境,这里我附上详细的判断方法,通用的

    var browser = {

            versions: function() {

                      var u = navigator.userAgent,

                            app = navigator.appVersion;

                      return {

                                trident: u.indexOf('Trident') > -1,                        

                                presto: u.indexOf('Presto') > -1,          

                                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/), 

                                 android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, 

                                 iPhone: u.indexOf('iPhone') > -1,          

                                 iPad: u.indexOf('iPad') > -1,      

                                 webApp: u.indexOf('Safari') == -1,          

                                 souyue: u.indexOf('souyue') > -1,

                                 superapp: u.indexOf('superapp') > -1,

                                 weixin:u.toLowerCase().indexOf('micromessenger') > -1,

                                 Safari:u.indexOf('Safari') > -1

                       };

              }(),

                       language: (navigator.browserLanguage || navigator.language).toLowerCase()

    };

    这里用到两个判断,一个ios一个安卓

    if (browser.versions.ios) {

                 //你的代码

    }else if (browser.versions.android){

                 //你的代码

    }

    那么接下来就应该判断当前手机上是否有安装某款应用,但是要知道js是无法判断手机上是否安装了哪款app的,所以有app打开app,没有app跳转到商店就可以这么做,js打开ios系统app的方法是这样的,拿淘宝为例:

    taobao://

    那么同理安卓的方法也是一样的,只不过打开app的协议不同,这个对应的打开app的协议是你们ios和安卓开发的小伙伴提供给你的,接下来的原理就是尝试发起打开app的请求,如果有提示是否在某款app中打开,那就可以直接打开了,如果打不开那么我们就要做另外一件事情了

    if (browser.versions.ios) {

              window.location.href = "taobao://";

              setTimeout(function(){

                        window.location.href = "你的app在商店中的地址";

                        window.location.href = "你的app在商店中的地址";  //为什么要加两遍我下面会说到

              },2000)

    }else if (browser.versions.android){

              window.location.href = "taobao://**";

              setTimeout(function(){

                        window.location.href = "你的app的下载地址";

              },2000)

    }

    当然为什么要加定时器,相信大家也都知道,因为打开app是需要时间的,而js代码瞬间就执行完毕了,当然这里还有几个坑,ios系统第一次window.location.href尝试打开app有时候会弹一下是否在某款app中打开之后马上跳到商店,为了解决这个问题我加了两遍window.location.href。

  • 相关阅读:
    北航算法作业三
    水库抽样
    python命名空间
    我说
    Fn键
    windows批处理运行java程序
    Java Sound初探
    java.io.IOException: mark/reset not supported
    三层交换机对链路层数据帧的处理
    北航数值分析作业三
  • 原文地址:https://www.cnblogs.com/wjd2221/p/7363869.html
Copyright © 2011-2022 走看看