使用Cordova插件的Hybrid应用

前篇文章如何从一个APP内部打开另一个APP,说了如果从A系统内部打开一个B系统。如果是通过浏览器的方式打开B系统,则会碰到一个问题。

Hybrid应用通常都是通过Cordova插件进行调用移动设备的组件功能的,但是在浏览器当中,Cordova插件是不能使用的。这样就会造成从A系统内部访问B系统的时候,很多依赖Cordova插件的功能就无法使用了。

解决思路

第一种方案:

在B系统中使用Cordova之前先进行判断,判断当前环境是x5app,还是在浏览器当中。如果是x5app则可是正常使用Cordova插件,如果是浏览器环境则使用替代方案。

1
2
3
4
5
if(justep.Browser.isX5App) {
// invoke cordova-plugin-install
} else {
// invoke browser instead
}

第二种方案:

可以参考UI2/protal/sample中的示例。将A系统和B系统从抽象角度”当做”一个系统来考虑,尽管他们都是可以单独打包运行的。这样,可以通过普通的打开页面的方式链接到B系统。

justep.Shell.showPage(require.toUrl(url));// url:B系统的绝对路径
将A系统打包成APP的时候,它会将B系统的所有资源也打包进去,就把B系统当做A系统的一个w页面就可以了。这里注意

  • B系统中的路径都必须是绝对路径,否则打包的时候会遗漏B系统静态资源
  • A系统中使用了ShellImpl进行全局页面映射时,在B系统中就不能在使用ShellImpl了

​以上。

如果你有更好的解决思路,请留言,我会及时回复。

坚持原创技术分享,您的支持将鼓励我继续创作!