首页 > 作文

html5唤起app的方法

更新时间:2023-04-06 11:23:21 阅读: 评论:0

h5唤起app这种需求是常见的。在移动为王的时代,h5在app导流上发挥着重要的作用。

目前我们采用的唤起方式是url scheme(ios,android平台都支持),只需原生app开发时注册scheme, 那么用户点击到此类链接时,会自动跳到app。

三种唤起方案

iframe

var last = date.now(),    doc = window.document,    ifr = doc.createelement('iframe');//创建一个隐藏的iframeifr.src = nativeurl;ifr.style.csstext = 'display:none;border:0;width:0;height:0;';doc.body.appendchild(ifr);ttimeout(function() {    doc.body.removechild(ifr);    //ttimeout回小于2000一般为唤起失败     if (date.now() - last < 2000) {        if (typeof onfail == 'function') {            onfail();        } el {            //弹窗提示或下载处理等        }    } el {        if (typeof onsuccess == 'function') {            onsuccess();        }    }}, 1000);

iframe方案的唤起原理是: 程序切换到后台时,计时器会被推迟(计时器不准的又一种情况)。如果app被唤醒那么网页必然就进入了后台,如果用户从app切回来,那么时间一般会超过2s;若app没有被唤起,那么网页不会进入后台,ttimeout基本准时触发,那么时间不会超过2s。

window.location.href直接跳转

window.location.href = nativeurl;

a标签唤起

<a href="nativeurl">唤起app</a>

三种唤起方案的浏览器测试

x表示唤起失败,√表示唤起成功红色标记表示进入页面直接唤起,绿色表示人工事件操作后唤起ios测试机:iphone 6p;android测试机:小米1s

iframe唤起app测试结果

window.location.href唤起app测试结果

a标签唤起app测试结果

iframe和window.location.href唤起对比

iframe、window.location.href和a标签唤起三者对比

测试结果分析

首先测试的机型和浏览器有限,上述结果仅作参考.

对比iframe唤起和location.href,我们可以发现:

对于ios来说,location.href跳转更合适,因为这湖南学校种方式可以在safari中成功唤起app。safari作为iphone默认浏览器其重要性就不用多说了,而对于微信和qq客户端,ios中这两种方式都没有什么卵用==对于android来说,在进入页面直接唤起的情况下,iframe和location.href是一样的,但是如果是事件驱动的唤起,iframe唤起的表现比location.href要更好一点。通过测试可以发现,进入页面直接唤起和事件驱动的唤起,对于很多浏good览器,两者的表现是不同的,简单来说,直接唤起的失败更多。

通过上述对比分析,android使用iframe唤起,ios采用window.location.href唤起更合适一点。

进入页面直接唤起和事件驱动唤起的区别

这两种唤起场景在android中有明显的区别,无论是iframe的方式唤起还是location.href,以小米1s的chrome为最难学的乐器例:

<a id="goapp" href="javascript:void(0);">点我打开app</a>

绑定事件 人工驱动唤起:

//成功唤起window.onloa那又如何 歌词d = function () {    $('#goapp').on("click", function () {        window.lib.callapp("nativeurl");//iframe        //window.location.href = nativeurl;    });};

进入页面直接唤起:

//唤起失败window.onload = function () {    window.lib.callapp("nativeurl");//iframe    //window.location.href = nativeurl;};

绑定事件,js唤起

//唤起失败window.onload = function () {    $('#goapp').on("click", function () {        window.lib.callapp("nativeurl");//iframe        //window.location.href = nativeurl;    });    $('#goapp).trigger('click');};

原本我以为$(‘#goapp).trigger(‘click’);的方式和人工点击是一样的,而实际表现是,js触发事件的表现和页面直接跳转一样无效。

从参考的博文中看到 android平台和各个app厂商差异很大,比如chrome从25及以后就不再支持通过js触发(非用户点击),设置iframe src地址等来触发scheme跳转。所以js触发和直接用户点击区别还是很大的,跟音频播放的限制异曲同工吧。

最后

经过上述的测试和分析,外力基本敲定ios用window.location.href的方式唤起比较合适,android用iframe唤起比较合适。我们在使用iframe唤起时,一般对唤起失败的处理是直接下载,但是这里就有一个问题,就是浏览器无法检测到唤起是否成功,即,如果我唤起成功后返回浏览器,浏览器还是会弹出下载信息,这个体验很差。当然我们也需要处理一些成功或失败的回调函数,说不定我们的场景只需要唤起而并不需要失败后的下载呢。

关于使用location.href唤起iphone手机上的原生app,跳转中间页的处理方式可能也比当前页直接处理更好一点。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持www.887551.com。

本文发布于:2023-04-06 11:23:20,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/f4fa5af68e35482f03b28ab462c647e0.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:html5唤起app的方法.doc

本文 PDF 下载地址:html5唤起app的方法.pdf

标签:测试   跳转   事件   方式
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图