mPaaS H5 容器知识清单 | FAQ · 第一期

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: mPaaS 离线包源自于支付宝原生方案,经历了严苛的业务考验,让你直接和支付宝使用同一套框架层代码,拥有统一容器及内核,相对系统内核获取更低 Crash 率和 ANR 率,适配性强,并具备良好的、弹性的扩展能力,结合具体业务需求定制 JSAPI。

FAQ 1# - 阿里云.png

mPaaS 离线包是什么?

Hybrid 开发模式已不是什么新鲜的话题,不仅可以快速发布新业务,同时无需考虑 App 发版时间,为业务更新迭代提供了极强的灵活性。相比于 Web 开发,Hybrid 开发模式提供了丰富的设备 API,让业务形态可以更加多元和丰富。

mPaaS 离线包源自于支付宝原生方案,经历了严苛的业务考验,让你直接和支付宝使用同一套框架层代码,拥有统一容器及内核,相对系统内核获取更低 Crash 率和 ANR 率,适配性强,并具备良好的、弹性的扩展能力,结合具体业务需求定制 JSAPI。

它解决什么问题?

  • 减少白屏
  • 解决 Hybrid App 跨平台兼容与适配
  • 提升 Hybrid App 性能
  • 原生开发下的包大小优化

下面开始 mPaaS H5 容器知识清单 · FAQ 第一期

问题1、HTML5 容器加载时,如果加载错误仅回调 H5_PAGE_FINISHED,并没有回调 H5_PAGE_ERROR。如何处理 H5_PAGE_ERROR,用原生的错误展示界面。

答:
H5_PAGE_ERROR 事件是容器内部事件,会被内部插件拦截,目前开发者无法直接使用。
可以实现 H5ErrorPageView,在 errorPageCallback 启动原生页面。

Step1: 新建一个 HTML 格式的自定义错误页

<!doctype html>
<html lang="zh-cn">
 
<head>
  <meta charset="utf-8" />
  <meta name="viewport" content="width=device-width,maximum-scale=1.0,minimum-scale=1.0,user-scalable=no" />
  <meta name="format-detection" content="telephone=no" />
  <title>自定义错误</title>
</head>
 
<body>
    <p>这个页面是一个自定义错误页</p>
</body>
 
</html>

Step2: 实现 H5ErrorPageView。将刚才创建的错误页,设置给 APWebView

public class H5ErrorPageViewImpl implements H5ErrorPageView {
    @Override
    public boolean enableShowErrorPage() {
        // true 表示启动自定义错误页
        return true;
    }
    @Override
    public void errorPageCallback(H5Page h5Page, APWebView view, String errorUrl, int statusCode, String errorMsg, String subErrorMsg) {
        // 获取错误页的 html,demo 中放到了 raw 中,也可以放在其他地方
        String html = H5ResourceManager.readRawFromResource(R.raw.custom_error, LauncherApplicationAgent.getInstance().getApplicationContext().getResources());
        // 将错误页设置给 webview
        view.loadDataWithBaseURL(errorUrl, html, "text/html", "utf-8", errorUrl);
    }
}

Step3: 注册 H5ErrorPageView。在打开 H5 容器之前,将自定义的 H5ErrorPageView 注册给容器。

H5Utils.setProvider(H5ErrorPageView.class.getName(),new H5ErrorPageViewImpl());

具体请参考:https://tech.antfin.com/docs/2/126953#h2--h5-2

问题2:自定义 JSAPI 调取摄像头拍完照后,插件不能继承 H5Acitivity,无法写 onActivityResult 回调

答:
目前您可以使用一个透明 activity 来启动相机,并接收返回参数,然后再通过广播(或其他手段通知您的 JSAPI)
由于我们在 H5Activity 中做了不少的工作,所以暂时不能开发继承 H5Activity,不过这是一个非常好的 issue,后续我们看是否可以开发一些 H5Activity 的回调来解决这个问题。

问题3:Android 如何不预置 H5 的情况下,直接下载离线包?

答:上传离线包到 mPaaS MDS 发布服务,使用 MPNebula.startApp 方法即可。

补充:目前 H5 容器没有使用 MPnebula.startApp(),而是直接用的内嵌形式的。如何解决?

h5Page = h5Service.createPage(this, bundle);
h5Page.getPluginManager().register(new NativeLoadingPlugin());
FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(
AUFrameLayout.LayoutParams.MATCH_PARENT, AUFrameLayout.LayoutParams.WRAP_CONTENT);

mContainer.addView(h5Page.getContentView(), lp);

答:MPNebula.updateAll

目前 mPaaS H5 容器 Demo 源码已发布,欢迎 Star 我们从而进一步了解特性和亮点。

mPaaS 钉钉群引流.png

目录
相关文章
|
4月前
|
云计算 数据安全/隐私保护 虚拟化
云计算|OpenStack|社区版OpenStack安装部署文档(十一--- 如何获取镜像---Rocky版)
云计算|OpenStack|社区版OpenStack安装部署文档(十一--- 如何获取镜像---Rocky版)
59 0
|
容器
容器方式搭建免费的表白网站(2022.9.25更新)
容器方式搭建免费的表白网站(2022.9.25更新)
142 0
容器方式搭建免费的表白网站(2022.9.25更新)
|
11月前
《阿里云产品手册2022-2023 版》——容器服务
《阿里云产品手册2022-2023 版》——容器服务
|
11月前
|
云安全 Kubernetes 安全
免费开放!阿里云上线容器公共镜像信息查询平台
公共容器镜像,指可以从Docker Hub、quay.io 等公共容器镜像仓库获取的镜像,包括攻击者在内的任何人都可以创建公共镜像仓库,并上传恶意镜像,因此公共镜像存在很高的风险系数。 《Sysdig 2022 Cloud‐Native Security and Usage Report》报告显示,目前全球高达61%的镜像来自于公共镜像仓库,相比上一年上涨15%。
1054 1
|
存储 人工智能 Kubernetes
CSDN 报告:阿里云容器服务成为中国开发者首选
最近,国内知名 IT 技术社区 CSDN 重磅发布《2021-2022 中国开发者调查报告》,旨在全面和深入地了解中国开发者群体整体现状、应用开发技术以及开发工具、平台的状况和发展趋势。该报告对近万名开发者进行调研,“云原生”首次作为独立章节出现在年度报告中,已发展为反映中国开发技术发展变化趋势的关键领域。
CSDN 报告:阿里云容器服务成为中国开发者首选
|
弹性计算 Kubernetes 监控
冬季实战营-第四期 -- 容器实战
有效的将单个操作系统的资源划分到孤立的组中,以便更好的在孤立的组之间平衡有冲突的资源使用需求,这种技术就是容器技术。容器是一个允许我们在资源隔离的过程中,运行应用程序和其依赖项的 、轻量的 、操作系统级别的虚拟化技术, 运行应用程序所需的所有必要组件都打包为单个镜像,这个镜像是可以重复使用的。当镜像运行时,它是运行在独立的环境中,并不会和其他的应用共享主机操作系统的内存、CPU或磁盘。这保证了容器内的进程不会影响到容器外的任何进程
125 0
冬季实战营-第四期 -- 容器实战
|
弹性计算 Kubernetes 监控
冬季实战营第四期:零基础容器技术实战 记录
实战又来了,这次是一次新的系统的容器教学
106 0
|
弹性计算 Go Docker
冬季实战营第四期:Docker · 一个开源的容器引擎实验报告
Docker 是一个开源的容器引擎,用于创建、管理和编排容器,可以轻松为任何应用创建一个轻量级、可移植、自给自足的容器。本步骤将在ECS上部署一个Docker服务,并配置DockerHub的镜像加速器。
328 0
冬季实战营第四期:Docker  · 一个开源的容器引擎实验报告
|
存储 Kubernetes 监控
冬季实战营第四期学习报告1:阿里云容器服务Kubernetes版快速入门
本场景以Github上的一款魔方游戏为例,指导如何通过容器服务ACK在K8s集群中部署和监控容器应用。
Ele
|
数据安全/隐私保护 容器 Docker
参与冬季实战营《零基础容器技术实战》
参与活动:零基础容器技术实战
Ele
112 0