HTML5唤起应用程序的方式
H5对APP的需求是常见的,在King移动时代,H5在APP转移中扮演着重要的角色。目前,我们称之为URL计划(IOS,Android平台支持)。在开发本机应用程序时,只需要注册方案。当用户点击这些链接时,他们会自动跳转到应用程序。
三种召唤方案
内联框架
var最后= Date.now(),
doc = window.document,
IFR = doc.createelement('iframe);
/ /创建一个隐藏的iframe
ifr.src = nativeurl;
Ifr.style.cssText ='display:none; border:0; width:0; height:0; ';;;
doc.body.appendchild(IFR);
setTimeout(){()函数(
doc.body.removechild(IFR);
/ / setTimeout后小于2000通常是一种唤起失败
如果(Date.now)去年(<2000){
如果(typeof onfail = = 'function){
OnFail();
{人}
流行提示或下载等。
}
{人}
如果(typeof会在= = 'function){
会在();
}
}
},1000);
诱发原理的iframe的方案是,定时器将延迟当程序切换回背景(另一种情况下的定时器是不允许的)。如果应用程序被唤醒,页面会进入背景。如果用户从应用程序中退出,时间通常会超过2秒。如果应用程序未被唤醒,则网页将不会进入后台。setTimeout将触发的时间,所以时间不会超过2s。
window.location.href直接跳
window.location.href = nativeurl;
一个标签唤起
唤起APP
三种激励方案的浏览器测试
X表示唤起失败,基;表达成功
红色标志指示直接进入条目页,绿色代表手动事件的操作。
iOS测试:iPhone 6p;Android机:小米1S
iframe唤起应用试验结果
window.location.href唤起应用试验结果
标签唤起应用程序测试的结果。
iframe和window.location.href唤起比较
iframe,window.location.href,和标签唤起三比较
试验结果分析
第一个测试模型和浏览器是有限的,其结果仅供参考。
相比于iframe唤起和location.href,我们可以发现:
对于iOS的location.href跳更合适,因为这种方式可以成功地唤起APP在Safari。Safari iPhone上毋庸置疑的重要性的默认浏览器,和微信、QQ客户端,这两种途径都不是iOS = =蛋
为Android,iframe和location.href是相同的网页时直接引起,但如果是事件驱动的,iframe会唤起location.href更好的性能比。
通过测试,我们可以看到许多浏览器的直接访问和事件驱动条目的性能是不同的。简言之,这是更直接的失败。
通过以上分析,Android使用iframe来激发,和iOS使用window.location.href唤起更合适点。
页面直接唤醒与事件驱动的差异
两人的场景是在Android明显不同,无论是在iframe的方式或在location.href,随着小米1S铬,例如:
让我打开应用程序
绑定事件人工驱动唤起:
/唤起
在window.onload =函数(){
$(# App),(单击
window.lib.callapp(nativeurl ); / / IFRAME
/ / window.location.href = nativeurl;
});
};
入口页面直接引发:
激发/失败
在window.onload =函数(){
window.lib.callapp(nativeurl ); / / IFRAME
/ / window.location.href = nativeurl;
};
js引发的绑定事件
激发/失败
在window.onload =函数(){
$(# App),(单击
window.lib.callapp(nativeurl ); / / IFRAME
/ / window.location.href = nativeurl;
});
$(# APP)。Trigger(听到咔哒声);
};
原来,我认为美元的方式(# APP)。Trigger(听到咔哒声)是手动点击相同,但实际表现为JS触发事件没有直接跳页一样有效。
从参考博客中,我们看到Android平台与应用程序供应商有很大的不同。例如,Chrome将不再触发JS支持方案跳出25和超越(非用户点击),设置iframe的src地址,等JS触发和用户直接点击之间的差异是非常大的,它作为音频播放的限制相同。
最后
经过上述的测试和分析,对激发方式调用window.location.href iOS更合适。Android是用iframe更合适。我们使用iframe来激发、唤起一般故障的处理是直接下载,但是有一个问题,就是浏览器不能检测激发成功,即,如果我记得到浏览器成功归来后,浏览器会弹出或下载信息,这方面的经验很差。当然,我们还需要处理的一些成功或失败的回调函数。也许我们的场景需要被唤起,而不是失败的下载。
随着location.href调动本地应用程序在iPhone手机的使用,跳到中间页的方式可能比当前页一点。
以上是本文的全部内容,希望能对您有所帮助,希望大家多多支持。