在没接触这个功能之前,查询各种文档后也只是似懂非懂,做过之后,发现其实很简单,简言之就是通过一个iframe或者a标签来跳转app端提供的URL schema(至于这个URL schema的组成格式,前端可以不用管,如果确实想要知道,可以自行百度),经测试用iframe标签的兼容性比a标签要好,故此处以iframe为例

autoCallApp(scheme, btnLink) { // scheme:schema链接, btnLink:本地未安装app时要跳转的目的链接
const ifr = document.createElement('iframe');
ifr.href = scheme;
ifr.style.display = 'none';
document.body.appendChild(ifr);
const openTime = +new Date();
window.setTimeout(() => {
document.body.removeChild(ifr);
if (+new Date() - openTime > 2000) { // 若2s后执行的时间减openTime超过2s,则默认其启动本地app失败,跳转到btnLikn (目前前端是没法知道h5唤起app是否成功的)
window.location.href = btnLink;
}
}, 2000);
}
PS:此种方法目前在浏览器、微信、qq、微博测试通过,在头条app里未生效(需要找头条相关人士开个白名单)

简话h5唤起本地app的更多相关文章

  1. Ios/Android h5 唤起本地APP

    纠结两天(浏览器中唤起本地APP),一直找不到解决方案,今天总算基本搞定. ps:吐槽一下 魔窗那篇文章,为什么就不直接把js代码开源开源,混淆后的代码看得我好恼火 参考文章:魔窗解决方案.京东解决方 ...

  2. iOS/Android 浏览器(h5)及微信中唤起本地APP

    在移动互联网,链接是比较重要的传播媒质,但很多时候我们又希望用户能够回到APP中,这就要求APP可以通过浏览器或在微信中被方便地唤起. 这是一个既直观又很好的用户体验,但在实现过程中会遇到各种问题: ...

  3. Android/IOS 微信及浏览器(h5)中唤起本地APP,唤起浮层,然后用外部浏览器打开唤起某本地APP

    1 前言 微信点击链接,点击唤起某APP,在微信点开,默认是微信浏览器,点击button唤起,则会先提示浮层,然后用外部浏览器打开即可. 作为记录使用. 2 代码 相关源码如下: html: < ...

  4. H5页面中唤起native app

    现在各类app,分享出去的H5页面中,一般都会带着一个立即打开的按钮,如果本地安装了app,那么就直接唤起本地的app,如果没有安装,则跳转到下载.这是一个很正常的推广和导流量的策略,最近产品经理就提 ...

  5. 浏览器中唤起native app || 跳转到应用商城下载

    前段时间遇到一个小需求:要求在分享出来的h5页面中,有一个立即打开的按钮,如果本地安装了我们的app,那么点击就直接唤起本地app,如果没有安装,则跳转到下载. 因为从来没有做过这个需求,因此这注定是 ...

  6. H5唤起app

    H5唤起app 1.判断是否在微信中打开 无论是在哪个平台的客户端Android/IOS,在微信的平台上访问都有一个问题,那就是无法启动客户端,这是微信为了安全性考虑的限制,android这边屏蔽sc ...

  7. 微信中通过页面(H5)直接打开本地app的解决方案

    简述 微信中通过页面直接打开app分为安卓版和IOS版,两个的实现方式是完全不同的. 安卓版实现:使用腾讯的应用宝,只要配置了“微下载”之后,打开链接腾讯会帮你判断本地是否已经安装了app,如果本地安 ...

  8. Mobile Safari调用本地App, 否则进入App Store下载

    需求: 如何让用户通过手机浏览器(Mobile Safari),访问一个URL就能直接打开ios上的App应用,如果该应用没有安装,那么直接跳转到App Store的App下载页面. 准备工作 ios ...

  9. WeX5学习笔记-创建本地APP相关问题

    1.在Native新建[创建本地APP]时, "服务地址”为本地IP和端口号,例如本地IP为192.168.253.1,端口号为8080,则设置为http://192.168.253.1:8 ...

随机推荐

  1. jeDeta 日历控件的那些坑

    经过亲自测试 jeDeta 发现 jeDeta 还是有坑的: 1.参数 options 里面的 format 有很多种格式 API 里面写的是 format: 'YYYY-MM-DD hh:mm:ss ...

  2. mysql删除数据左右空格

    select trim(字段) from 表 删除左右空格 select ltrim(字段) from 表 删除左空格 select rtrim(字段) from 表 删除右空格

  3. Windows安装pip方法

    1.下载pip 地址:https://pypi.python.org/pypi/pip#downloads 注意选择tar.gz压缩包,目前最新版本为9.0.1,这里选择的版本是:pip-9.0.1. ...

  4. merge-two-sorted-lists (归并排序中的合并)

    class Solution { public: ListNode *mergeTwoLists(ListNode *l1, ListNode *l2) { if (l1 == NULL) retur ...

  5. Excel里面Left这个怎么用?

    LEFT 返回文本字符串中第一个字符或前几个字符LEFT(A2, 4)LEFT 返回前 4 个字符,因为每个字符按 1 计数.无论您计算机上的默认语言设置如何,函数 LEFT 都返回前 4 个字符.

  6. WebService(基于AXIS的WebService编程)

    一.服务端代码 1.创建Maven工程 注意pom.xml文件的配置,需要引入axis的相关包 <project xmlns="http://maven.apache.org/POM/ ...

  7. E325: ATTENTION

    vim/vi编辑器异常 E325: ATTENTION Found a swap file by the name "/usr/local/msmtp/etc/.msmtprc.swp&qu ...

  8. Qt中 .pro 文件和 .pri 文件简介

    *.pro 这是一个典型的Qt示例程序的.pro文件(propriprfprl.pro): TEMPLATE = app CONFIG += QT QT += core gui TARGET = pr ...

  9. 关于html的a标签的target="__blank "的安全漏洞问题

    使用场景:最近项目中使用一个a标签的 target="__blank "链接跳转 页面,打开一个新的 pdf文件(或者外部的一个网页),然后在chrome浏览器中快速的滑动的时候, ...

  10. 关于nodejs

    #!/bin/bashcd /home/software/wget https://nodejs.org/dist/v9.8.0/node-v9.8.0-linux-x64.tar.xztar -xv ...