精华内容
下载资源
问答
  • Android H5判断是否安装app和唤起APP

    万次阅读 2016-05-05 18:35:08
    H5中是无法直接判断应用是否安装的,但是可以间接判断。 第一种方式, if(...){ document.location = ''; setTimeout(function(){  //此处如果执行则表示没有app },200); } 这里的逻辑很简单,当没有成功打开app的...
    H5中是无法直接判断应用是否安装的,但是可以间接判断。
    第一种方式,
    if(...){
    document.location = '';
    setTimeout(function(){
       //此处如果执行则表示没有app
    },200);
    }
    这里的逻辑很简单,当没有成功打开app的时候
    新页面不会弹出则页面逻辑可言进行,如果进入了新页面,则页面逻辑便终止了
    所以我们可以另开一个延时的线程来判断这个事情

    通过H5唤起APP
    编辑AndroidManifest.xml:
    主要是增加第二个<intent-filter>,launchapp用来标识schema,最好能保证手机系统唯一,那样就可以打开应用,而不是弹出一个选择框。
    android:pathPrefix标识url的path,可以附带自己的数据通过string传递到activity,比如完整url为 launchapp://haha?data=mydata
     
     <activity  
          android:name="com.robert.MainActivity"  
          android:configChanges="orientation|keyboardHidden|navigation|screenSize"  
          android:screenOrientation="landscape"  
          android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >  
          <intent-filter>  
              <action android:name="android.intent.action.MAIN" />  
              <category android:name="android.intent.category.LAUNCHER" />  
          </intent-filter>  
          <intent-filter>  
              <action android:name="android.intent.action.VIEW" />  
              <category android:name="android.intent.category.BROWSABLE" />  
              <category android:name="android.intent.category.DEFAULT"/>  
              <data android:scheme="launchapp" android:pathPrefix="/haha" />  
          </intent-filter>  
        </activity> 



       然后通过activity获得data数据:

         
    public void onCreate(Bundle savedInstanceState) {  
             Uri uridata = this.getIntent().getData();  
             String mydata = uridata.getQueryParameter("data");  
             ...  
        }

     


     编写html页面:
       整个页面也许是某个app的详细介绍,这里只写出关键的js代码:
     
     function openApp() {  
          
                if (/android/i.test(navigator.userAgent)) {  
                     var isrefresh = getUrlParam('refresh'); // 获得refresh参数  
                     if(isrefresh == 1) {  
                         return  
                     }  
                     window.location.href = 'launchapp://haha?data=mydata';  
                     window.setTimeout(function () {  
                             window.location.href += '&refresh=1' // 附加一个特殊参数,用来标识这次刷新不要再调用myapp:// 了  
                     }, 500);  
                 }  
          
        }



      上面代码可以达到这样一个目的,先请求 launchapp:// ,如果系统能处理,或者说已经安装了myapp表示的应用,那么就可以打开,另外,如果不能打开,直接刷新一下当前页面,等于是重置location。


    欢迎关注公众号,互相学习

     


    展开全文
  • H5判断是否安装app和唤起APP

    万次阅读 2017-03-03 10:14:07
    html里是无法检测的,只能通过js调用android的方法,获取到app的安装信息后,再调用js,传值到html里获得。$(function(){ $(".a").click(function(){ var the_href=http://segmentfault.com/a/$(".a").attr("href...

    html里是无法检测的,只能通过js调用android的方法,获取到app的安装信息后,再调用js,传值到html里获得。

    $(function(){   
        $(".a").click(function(){
            var the_href=http://segmentfault.com/a/$(".a").attr("href");//获得下载链接
            if(ua.match(/MicroMessenger/i)=="micromessenger") {  //是否微信打开
                $(".box-bg").show();//微信打开出浮层,微信暂不支持Scheme打开非企鹅应用
            }else {  
                window.location.href=http://segmentfault.com/a/the_href; //打开某手机上的某个app应用
                setTimeout(function(){
                    window.location.href="https://iTunes.Apple.com/us/app/id.......";//如果超时就跳转到app下载页
                },500);
            }
         })
    })

    参考
    Android H5判断是否安装app和唤起APP

    展开全文
  • 1. 使用callapp-lib插件:参考https://github.com/suanmei/callapp-lib。 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=...

    1. 使用callapp-lib插件:参考https://github.com/suanmei/callapp-lib

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <meta http-equiv="X-UA-Compatible" content="ie=edge">
      <title>callapp-lib示例</title>
    </head>
    <body>
      <div id='call-button'>点击唤起电流App个人页</div>
    
      <script src='https://unpkg.com/callapp-lib@2.1.7/dist/index.umd.js'></script>
      <script>
        const option = {
          scheme: {
            protocol: 'ykshortvideo',
          },
          outChain: {
            protocol: 'ykshortvideo',
            path: 'temporary',
            key: 'url',
          },
          intent: {
            package: 'com.youku.shortvideo',
            scheme: 'ykshortvideo',
          },
          universal: {
            host: 'flash-link.youku.com',
            pathKey: 'action',
          },
          appstore: 'https://itunes.apple.com/cn/app/id1383186862',
          yingyongbao: '//a.app.qq.com/o/simple.jsp?pkgname=com.youku.shortvideo',
          fallback: 'https://dianliu.youku.com/service/download',
          timeout: 2000,
        };
        const lib = new CallApp(option);
        const callButton = document.querySelector('#call-button');
        callButton.addEventListener('click', () => {
          lib.open({
            path: 'profile',
          });
        });
      </script>
    </body>
    </html>

    2. 原理:通过窗口打开app地址,在一定时间如3s/5s内,不能打开就跳转app下载链接。

    testApp(){
            let userAgent=navigator.userAgent;
            let iosOpenUrl='';  //ios的打开地址,schema链接或者universal link
            let iosDownUrl='';  //ios的下载地址
            let androidOpenUrl='';  //android的打开地址,schema链接或者universal link
            let androidDownUrl='';  //android的下载地址
            let delayTime=500;
            if (userAgent.match(/(iPhone|iPod|iPad);?/i)) { //当前设备是ios
                var firstTime = new Date();
                window.location =iosOpenUrl;
                window.setTimeout(function() { 
                  var secondTime = new Date();
                  if (secondTime - firstTime < 5000) {
                    window.location = iosDownUrl; 
                  } else {
                    window.close();
                  }
                }, delayTime);     
            } else if (userAgent.match(/android/i)) {  //当前设备是android
              try {
                window.location = androidOpenUrl; 
                window.setTimeout(function() {
                  window.location = androidDownUrl;  
                }, delayTime);
              } catch (eror) {
                console.log(eror)
              }
            }
          }

     

    展开全文
  • H5唤起app

    2019-09-24 13:17:53
    H5唤起app 1.判断是否在微信中打开 无论是在哪个平台的客户端Android/IOS,在微信的平台上访问都有一个问题,那就是无法启动客户端,这是微信为了安全性考虑的限制,android这边屏蔽schema协议,除非公司是微信的...

    H5唤起app

    1.判断是否在微信中打开

    无论是在哪个平台的客户端Android/IOS,在微信的平台上访问都有一个问题,那就是无法启动客户端,这是微信为了安全性考虑的限制,android这边屏蔽schema协议,除非公司是微信的伙伴加入了白名单才能使用,IOS系统可以去访问app对应appstore的下载页,但是微信经常屏蔽appstore的这个网址,进而访问不到。比较方便的做法就是在微信浏览器中,无论是IOS还是android都去应用宝的下载(IOS 这边最后会到appstore中)页面打开。

    var agent = navigator.userAgent || ''
    var isWx = /micromessenger/i.test(agent)
    if(isWx){
        //微信,提示用户用浏览器打开
    }else{
        //非微信
    }

    js的test() 方法用于检测一个字符串是否匹配某个模式.

    RegExpObject.test(string)   
    //string为要检测的字符串。
    //如果字符串 string 中含有与 RegExpObject 匹配的文本,则返回 true,否则返回 false。

    2.判断是否为iOS

    var isIOS = /iPhone|iPad|iPod/i.test(agent)   //返回true/false

    3.唤起app

    H5启动APP本质上是通过URL scheme打开APP,一个APP可以设置一个或多个打开自己的URL scheme,浏览器去访问某一个APP的URL scheme,然后若系统安装有这个APP,则会请求权限去打开这个APP。

    其实也算是浏览器app打开另一个app,iOS就可以使用 UIApplication 的 canOpenUrl 方法来检测URL scheme 是否能打开对应的APP,而android也是类似的方式。

    当然如果JS跳转URL scheme没有反应,也意味着这个手机没有装这个app。

    <a class='btn'>打开app</a>

    如果需要跳转到app指定页面,在URL scheme后面再加一个url即可(URL scheme及url由app开发人员提供。)

    if (isIOS) {
        $('.btn').attr('href','BonDayApp://' + url);
    } else {
        $('.btn').attr('href','bondayapp://bonday.com/scheme?' + url);
    }

    转载于:https://www.cnblogs.com/jasmine-95/p/9504774.html

    展开全文
  • H5唤起APP某页面做的H5页面,在APP中放了入口,在APP中访问别的页面场景我们做的H5页面,希望从浏览器跳转至APP的某个特定页面,如在H5中设置购买按钮,希望点击跳转至APP内部的购买页面。2、过程(1)是否安装APP判断...
  • H5唤起App,本地没有则下载 如果只想单纯的打开app,而不去判断是否已经安装,直接使用scheme协议就行了。 如果想实现没有安装就下载app的功能,代码如下: 在浏览器实际上是没有能力判断手机里是否安装了某个App的,...
  • 要求可以让用户在访问我们的推广网页时,可以判断出这个用户手机上是否安装了我们的App。如果安装了则可以直接在手机上打开,否则就前往下载。从而形成一个推广上的闭环。 解决思路: 想通过iframe的方式试图打开...
  • H5通过URL Scheme协议唤起App

    万次阅读 2020-08-28 10:38:42
    h5 页面上唤醒app ,需要用到 scheme协议(由app端提供),但是在微信浏览器里scheme不起作用,因此需要先判断是否为微信浏览器,是微信浏览器的话,提示到浏览器打开,不是的话,再判断是Android端还是iOS端,...
  • h5 页面上,不管用户是否安装过该app,都直接跳转到应用市场,让用户从应用市场上打开app。 思路: 这种场景处理比较简单,直接判断判断是android端还是ios端,然后在点击按钮上赋值对应终端的应用市场下载链接就...
  • H5及微信中唤起app的解决方案

    千次阅读 2019-06-25 14:54:00
    点击的话会判断是否在微信中,如果在微信中打开就会显示点击右上角-选择在safari中打开的图片,然后在浏览器中直接跳转打开app,跳到app对应的页面 首先分析需求,第一步判断现在在哪个端打开的网页 export defa...
  • 之前做了一个微信H5页面抽奖的小功能,产品需求是用户在进入页面后判断用户是否已经关注此公众号,若没有关注,则唤起关注公众号页面。一、前期微信公众平台配置:1、获取appid,appsecret,添加白名单(1)登录微信...
  • 浏览器判断是否安装APP

    万次阅读 2016-08-01 16:47:43
    前段时间遇到一个小需求:要求在分享出来的...我们最开始就面临2个问题:一是如何唤起本地app,二是如何判断浏览器是否安装了对应app。 如何唤起本地app 首先,想要实现这个需求,肯定是必须要客户端同学的配合才行,
  •  首先想到的是两个问题:一是如何唤起本地 app,二是如何判断浏览器是否安装了对应 app。  如何唤起本地 app  首先,想要实现这个需求,肯定是必须要客户端同学的配合才行,因此我们不用知道所有的实现细节,...
  • js与android交互难点 == js唤起app

    千次阅读 2018-08-15 18:05:29
    公司运营推广APP,对外分享一个链接,这个链接由h5写成,主要就是用来介绍APP的,蛋疼的是,在末尾加了两个按钮,一个用来下载IOS的app,一个用来下载android的app,重点来了啊,在点击按钮之前先判断手机中是否有该...
  • 浏览器中唤起Native App

    2017-08-01 14:37:00
    前段时间遇到一个小需求:要求在分享出来的h5页面中,有一个立即打开的按钮,如果...我们最开始就面临2个问题:一是如何唤起本地app,二是如何判断浏览器是否安装了对应app。 如何唤起本地app 首先,想要实现这个...
  • 否则,我们就没办法通过这个协议在微信中直接唤起app。因此,我们需要先判断页面场景是否在微信中,如果在微信中,则会提示用户在浏览器中打开。H5中间接判断应用是否安装这里的逻辑很简单,当没有成功打开app的时候...
  • 判断是安卓还是苹果,如果为苹果显示苹果的标签,点击a标签,执行跳转唤起APP(openAPP),加一个定时器,三秒(可根据需求调整)之后,如果没有唤起成功,跳转到App Store下载页面。 不管iOS还是Android,浏览器都...
  • 前段时间遇到一个小需求:要求在分享出来的 h5 页面中,有一个立即...我们最开始就面临 2 个问题:一是如何唤起本地 app,二是如何判断浏览器是否安装了对应 app。 如何唤起本地 app 首先,想要实现这个需求,
  • 前段时间遇到一个小需求:要求在分享出来的h5页面中,有一个立即打开的按钮,如果本地安装了我们...我们最开始就面临2个问题:一是如何唤起本地app,二是如何判断浏览器是否安装了对应app。 如何唤起本地app 首先,...
  • 前段时间遇到一个小需求:要求在...我们最开始就面临2个问题:一是如何唤起本地app,二是如何判断浏览器是否安装了对应app。 如何唤起本地app 首先,想要实现这个需求,肯定是必须要客户端同学的配合才行,因此我们...
  • 浏览器中打开H5页面唤起App时也是无法判断出当前app是否安装。 针对这种情况 ,目前业内普遍采取两种做法: 1.是利用延时器原理,打开H5页面会尝试唤起App,假如失败了几秒后会直接跳转到下载页面 (缺点是即使用户...
  •  首先想到的是两个问题:一是如何唤起本地 app,二是如何判断浏览器是否安装了对应 app。  如何唤起本地 app  首先,想要实现这个需求,肯定是必须要客户端同学的配合才行,因此我们不用知道所有的实现细节,...
  • 我们在浏览网页的时候,你会看到一个网页下面漂浮着一个提示框“打开APP”或者“下载APP的字样”,如果你的手机已经安装过这个APP,那么网页会提示“打开...h5页面唤起app(iOS和Android),没有安装则跳转下载页面 ...
  • 利用sysctl函数查看当前进程信息,判断是否有此标志位来检测是否处理调试状态)、反反调试、反注入(通过_dyld_get_image_name()获取加载的模块名,判断是否都在白名单中)、hook检测(通过dladdr函数得到imp地址所在的...

空空如也

空空如也

1 2
收藏数 28
精华内容 11
关键字:

判断h5是否唤起app