随着业务的增加,可能存在这么一种需求,就是需要从h5中直接跳转到app。如果没有安装app的话,则提示到应用市场或者app store下载安装。不过问题就在这个地方,单纯的用h5是没有方法判断是否安装过app的,不过这些是难不倒程序员的,他们通常会用这种代码来解决

 window.location.href = 'app的协议';

 setTimeout(function() {
window.location.href = 'app的下载地址'
},500)

其实代码很简单,先去跳转公司无线组app的自定义的schema协议;如果没有安装的app的话,第一行的代码是不生效的,然后500ms跳转到app的下载地址,通常是是借助tx的亲儿子应用宝或者app store 的下载连接。不过这种实现方式也是有问题的,因为你在微信中或者qq中即使安装app的话,也不会跳转到app中的,因为你司的app的schema协议是禁止跳转的,除非加入了白名单。如果没加入微信的白名单的话,解决方法通常在h5页面某个地方加上一个简单的tips.提示用浏览器打开这个页面。如果安装了app,在浏览器可以正确的打开app的。当然,这是安装了app的情况,当没有安装app的话,上诉代码在微信是没有任何问题的,反正又没法跳schema的,跳转到app的下载地址肯定是万无一失的。但是我们在上一步提示用户在浏览器打开页面,这时候问题又来了。这时候会出现一个讨厌的框框,这种框框是没有啥好办法禁止的。产生的原因嘛。就是那个schema协议搞得鬼。这时候我们的解决方式,就是在上一步的tip中提示‘如果安装了app的话,用浏览器打开’,哈哈,这么简单的嘛,其实很多公司都是这么做的,简单直接。目前我们的公司就是这种方式。或者直接给两个按钮算了。一个打开,一个下载。有些时候,化繁为简未尝不是一种合适的方式。

那么有其他的方式来解决嘛。按理说是有的。上文说到微信禁止了app的schema协议。其实有一种协议,微信是没有禁止的,那就是universal links。关于怎么配置的话其实不是我们前端工程工作范畴的,甚至有写无线端开发也是一脸懵逼,有兴趣可直接百度。另外的一种方式是利用iframe,不过这种方式在ios9以上是不能成功的。所以这种方式也可以直接pass。

h5跳转到app的实现的更多相关文章

  1. H5页面中判断是安卓手机还是ios手机的方法;APP页面中嵌套的H5跳转到APP其他页面的方法。

    (一).在H5页面中,可以直接利用如下的方法来进行判断是安卓还是ios. var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linu ...

  2. 判断终端类型、微信的文章防盗链、h5页面跳转打开新的app、跳转到app市场

    判断终端的类型.安卓.ios.微信.qq function  GetMobelType()  {                 var  browser  =   {                 ...

  3. H5如何实现唤起APP

    前言 写过hybrid的同学,想必都会遇到这样的需求,如果用户安装了自己的APP,就打开APP或跳转到APP内某个页面,如果没安装则引导用户到对应页面或应用商店下载.这里就涉及到了H5与Native之 ...

  4. android端,webview内url跳转到app本地

    这是和一个前端同事沟通. app内嵌入他的web页,要通过web页内的url跳转到app的详细内容. 他的android同事,没有思路. 其实嵌入web页,用的webview控件,只要能找到webvi ...

  5. iOS 跳转到App Store下载或评论

    //跳转到app在AppStore页面 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:[NSString string ...

  6. iOS 跳转到 App Store 下载评分页面

    html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,bi ...

  7. boot跳转到app后,中断不起作用的原因

    boot跳转到app后 osKernelStart()之前,中断有问题,不起作用 原因是因为boot跳转之前__disable_irq(); 跳转到APP后,并不是一切从头开始,__disable_i ...

  8. iOS应用跳转到App Store评分

    iOS应用跳转到App Store评分 1.跳转到应用评价页 NSString *urlStr = [NSString stringWithFormat:@"itms-apps://itun ...

  9. Android通过DeepLink方式跳转其他App传递参数

    网上对于安卓DeepLink方式跳转传递参数的例子较少,说的也不客观,实践之后发现还是有一些坑.其实为什么要用DeepLink方式跳转,有些是因为引流的原因,他们希望通过网页就能直接跳转到App的界面 ...

随机推荐

  1. html 表单button

    做一下标记: 请务必为form里面button设置type 因为: Internet Explorer 的默认类型是 "button",而其他浏览器中(包括 W3C 规范)的默认值 ...

  2. ss.c

    linux下 ss -i 可显示rto. how to display tcp rto http://linuxaleph.blogspot.com/2013/07/how-to-display-tc ...

  3. ubuntu14.04server版安装redis

    此博客记录首次在ubuntu14.04上安装redis过程. 以下采用两种方式进行安装 方法一:进入redis的官网下载(地址:https://redis.io/download)目前版本为4.0.9 ...

  4. Entity FrameWork Code First 配置关系

    Has方法与With方法 A.HasRequired(a => a.B).WithOptional(b => b.A);上面一句配置意思就是A类包含B类一个不为null的实例,B类包含A类 ...

  5. [原]Linux 命令行浏览器

    真是没有做不到只有想不到! Linux下竟然有命令行式的浏览器:W3m SPC向下翻页 b向上翻页 J 向下滚动一行 K 向上滚动一行 > 右移一屏 < 左移一屏 TAB 转到下个超链接 ...

  6. NO.012-2018.02.17《题都城南庄》唐代:崔护

    题都城南庄_古诗文网 题都城南庄 唐代:崔护 去年今日此门中,人面桃花相映红.去年春天,就在这扇门里,姑娘脸庞,相映鲜艳桃花.人面:指姑娘的脸.第三句中“人面”指代姑娘. 人面不知何处去,桃花依旧笑春 ...

  7. jasmine —— Spies(转)

    Jasmine有称为间谍(spies)的测试双重功能.一个spy可以监测任何函数的调用和参数的调用痕迹.Spy只能存在于定义它的describe()和it()代码块内,而在每一个spec(即it)结束 ...

  8. Path模块部分常用函数解析——NodeJS

    官网地址:https://nodejs.org/api/path.html path.resolve([...paths])# Added in: v0.3.4 参数[...paths]: <S ...

  9. js 对象数组删除和查找的方法

    deleteItem: function (array,item) { const index = this.array.findIndex(text => text.name === item ...

  10. apache log4j-1.2.15的使用

    1.这个log4j的下载 下载 http://www.apache.org/dyn/closer.cgi/logging/log4j/1.2.15/apache-log4j-1.2.15.zip 2. ...