一、什么是H5+App
H5+App通常指的是我们将移动Web端封装成一个的App后的一种形式,我们通过这样的方法就可以比较简单地形成一个可被应用的App,这样的一个App能够像正常的App应用去调用手机底层的Api,比如相机,推送等。
但是这样的方式虽然便捷,但是肯定相对于原生的App是有一定的弊端,渲染速度,以及各种调用底层Api的功能都会存在不小的差距。
但是在目前各种框架插件的辅助下,往往在简单的应用内都可以达到以假乱真的效果。
二、如何去构建一个H5+App
这里只介绍dclound的提供的3种方式,一种是Wap2App,一种是直接的往Web页面套壳的纯h5+方式。
1.第一种是wap2App的方式,通过这样的方式,我们可以重新定义我们App中的路由,只要将不同的页面配置一个唯一的页面ID,这样底层的框架就会去处理相关的一些事件,包括跳转等问题。
这种方式有一个特点,就是我们的页面其实不是放在APP里面的,而是放在我们的服务器上,然后打包成的App其实可以理解为一个浏览器App,然后我们只是单纯地去访问我们服务器上的页面地址,从服务器可以获取到最新的页面更新。
达到可以不用去更新App,就更新到我们App内容的一种快速更换内容的效果。这当然也是这样的一种套壳App的优势。
2.第二种方式是纯套壳方式,直接在我们生成的App首页访问项目的首页地址,这样就相当于好像我们打开了App不是一个空白的页面,而是一个另类的App。这种方式当然也会有以上的所说的套壳App特色。
3.第三种是用Vue打包后的项目包,加上一个App的配置文件,重新打包成一个App,这样的话我们项目就是封闭的一个状态,必须要重新打包成App才能达到更新App的效果。
三、打包App的注意事项
1.有一个点是三种方式都得注意的,那就是必须在头部给手机状态栏留下一个空白的div位置,不然我们的页面很容易因为这个状态栏变得畸形。
一般我们可以先通过判断我们项目的运行环境,然后控制状态栏DIV的显隐。
if(navigator.userAgent.indexOf("Html5Plus") > -1){
downloadEl.style.display = "none";//隐藏下载banner
}
2.另外一个是关于我们App的更新问题,不管是通过怎么样的打包方式,最后都需要一个更新App的功能,套壳App哪怕能够更新页面内容,但是它却不能让我们的App添加一些本就没有添加的App底层共嗯功能,我们需要重新打包更新去获取手机权限。
以下是实现更新的一种方式,全量更新,让用户更新一整个App
var ua = navigator.userAgent;
if(ua.indexOf('Html5Plus') > -1 &am