技术干货 | mPaaS 小程序高玩带你起飞:客户端预置小程序无视网络质量

简介: 弱网拉包无障碍,深度提升用户体验

 

传统的小程序技术容易受到网络环境影响,当网络质量不佳时可能导致拉取不到小程序包的情况。通过预置小程序,即可规避该问题。本文介绍了预置小程序的原理和预置小程序的实现过程。

 

什么是预置小程序

预置小程序是指将小程序的渲染、逻辑、配置等静态资源打包在一个压缩包内,客户端预先下载小程序包到本地、直接从本地加载资源的过程。预置小程序可以最大程度地摆脱网络环境对 mPaaS 小程序页面的影响。使用预置包能够为客户端带来以下优势:

 

  • 提升用户体验
    通过预置包的方式把页面内静态资源嵌入到应用中并随应用一起发布,可以使用户第一次开启应用时即无需依赖网络环境下载资源,可以直接开始使用。

 

  • 实现动态更新
    在推出新版本或紧急发布的时候,可以在小程序 IDE 中进行迭代开发,通过 mPaaS 控制台发布,客户端中集成的小程序 SDK 会自动将小程序更新到最新的版本。这种发布无需通过应用商店审核,可以让用户及早接收到更新。

 

预置小程序的实现原理

本文从以下方面介绍了预置小程序的实现原理:

  • 小程序预置包的结构
  • 小程序预置包的使用过程

 

小程序预置包的结构

小程序预置包是一个 .amr 格式的压缩文件,将后缀 amr 改成 zip 解压缩后,可以看到其中包含的 HTML 资源和 JavaScript 代码等。待小程序容器加载后,这些资源和代码能在 UC 内核渲染。

 

以 Android 系统为例,下图显示了一般资源包的目录结构:

  • 一级目录:一般为资源包的 ID,如 2020121620201216_1.0.1.0.zip。
  • 二级目录及往后即为业务自定义的资源文件。并设定当前预置包默认打开的主入口文件,如 /index.html。

 

小程序预置包的使用过程

使用小程序预置包的过程可以分为以下三个步骤:

  1. 请求包信息
    从服务端请求小程序包,并将小程序包信息存储到本地数据库的过程。包信息包含了小程序包的下载地址、小程序包版本号等。
  2. 下载小程序包
    把小程序包从服务端下载到手机。
  3. 安装小程序包
    下载目录,拷贝到手机安装目录。

 

前提条件

  • 已接入小程序组件。更多关于小程序组件的接入信息,请参见 快速开始使用小程序。
  • 已接入 H5 容器 组件。更多关于 H5 容器的接入信息,请参见 快速开始使用 H5 容器。

 

操作步骤-Android

  1. 预置小程序包。
    1. 在 mPaaS 控制台发布小程序包并下载 AMR 文件和配置文件。

 

将下载到的 AMR 文件和配置文件放置在 mPaaS 项目的 assets 目录下。

 

在工程中添加预置代码,以在应用启动时调用预置代码安装应用。预置代码示例如下:

new Thread(new Runnable(){
    @Override
    public void run(){
        MPNebula.loadofflineNebula(jsonFileName: "h5_json.json",
                                  new MPNebulaOfflineInfo(offLineFileName:"2020121620201216_1.0.1.0.amr",
                                                         addId:"2020121620201216",
                                                         version:"1.0.1.0"));
    }
}).start();

说明

  • 此方法为阻塞调用,请不要在主线程上调用内置预置包方法。
  • 此方法仅能调用一次。若多次调用,仅第一次调用有效。所以需要一次性传入所有需预置预置包信息。
  • 如果内置多个 AMR 包,需要要确保文件已存在;如不存在,会造成其他内置预置包失败。

 

  1. 启动小程序。启动小程序的示例代码如下。
/**
* 启动小程序
*
* @param appId 小程序id
*/
public static void startApp(String appId);
  1. 更新小程序
    默认情况下,每次打开应用,小程序 SDK 都会尝试检查是否有可更新的版本。出于服务端压力考虑,该检查有时间间隔限制,默认为 30 分钟。如果想立即检查最新可用版本,调用下方的代码来请求更新。一般情况下,可以在应用启动或者用户登录后调用。
MPNebula.updateAllApp(new MpaasNebulaUpdateCallback(){@Overridepublic void onResult(final boolean success, final boolean isLimit) {super.onResult(success, isLimit);runOnUiThread(new Runnable() {@Overridepublic void run() {AUToast.makeToast(NebulaAppActivity.this,success ? R.string.update_success : R.string.update_failure, 2000).show();}});}
});

结语

mPaaS 小程序源自于支付宝小程序框架,亿级线上业务体量的锤炼,安全性媲美支付宝原生能力。不仅面向自有 App 投放小程序,更可快速构建打包,覆盖支付宝、淘宝、钉钉等应用。

 

通过使用上述预置小程序的方案,预置小程序不仅可以最大程度地摆脱网络环境对 mPaaS 小程序页面的影响,还能深度体验用户体验、实现动态更新。

 

mPaaS 小程序(Alpha)限时免费申领中,全新内核完全对齐支付宝标准 API,为您提供更精简的安卓端 SDK。

 

作者:查克拉空

原文链接

本文为阿里云原创内容,未经允许不得转载

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/514177.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Delta Lake在Soul的应用实践

简介: 传统离线数仓模式下,日志入库前首要阶段便是ETL,我们面临如下问题:天级ETL任务耗时久,影响下游依赖的产出时间;凌晨占用资源庞大,任务高峰期抢占大量集群资源;ETL任务稳定性不…

亚马逊云科技中国线上峰会开幕,发力汽车产业链、少年人工智能等

亚马逊云科技于9月9日-14日举办以“构建新格局 重塑云时代”为主题的中国线上峰会,推出涵盖行业视野、技术创新、开发者和开源、云安全、以及人工智能的5大主题演讲、覆盖云计算各细分领域的8大技术分论坛,以及汇聚各行业上云趋势及创新实践的10大行业分…

【产品能力深度解读】连续入围Gartner魔力象限的Quick BI有何魔力?

简介: 国际权威分析机构Gartner发布2021年商业智能和分析平台魔力象限报告,阿里云Quick BI再度入选,并继续成为该领域魔力象限唯一入选的中国企业。 Quick BI凭借在增强分析能力上的持续投入、数据中台矩阵化产品优势和电商行业的专业度&…

mysql的json函数与实例_Mysql实例详解Mysql中的JSON系列操作函数

《Mysql实例详解Mysql中的JSON系列操作函数》要点:本文介绍了Mysql实例详解Mysql中的JSON系列操作函数,希望对您有用。如果有疑问,可以联系我们。MYSQL必读前言MYSQL必读JSON是一种轻量级的数据交换格式,采用了独立于语言的文本格式,类似XML,…

256变4096:分库分表扩容如何实现平滑数据迁移?

简介: 本文作者就一个高德打车弹外订单系统进行了一次扩分库分表和数据库迁移。 一、 背景 2020年,笔者负责的一个高德打车弹外订单系统进行了一次扩分库分表和数据库迁移。该订单系统整体部署在阿里云上,服务使用阿里云ECS部署,…

OpenYurt 如何 “0 侵入” 攻破云边融合难点

简介: 随着 5G、IoT、直播、CDN 等行业和业务的发展,越来越多的算力和业务开始下沉到距离数据源或者终端用户更近的位置,以期获得很好的响应时间和成本,这是一种明显区别于传统中心模式的计算方式——边缘计算。 随着 5G、IoT、直…

Python - 深夜数据结构与算法之 Graph

目录 一.引言 二.图的简介 1.Graph 图 2.Undirected graph 无向图 3.Directed Graph 有向图 4.DFS / BFS 遍历 三.经典算法实战 1.Num-Islands [200] 2.Land-Perimeter [463] 3.Largest-Island [827] 四.总结 一.引言 Graph 无论是应用还是算法题目在日常生活中比较…

Docker Desktop宣布收费;腾讯7月已申请注册WECHAT CLOUD商标;MongoDB成为当前最具价值开源软件公司...

NEWS本周新闻回顾Docker Desktop 宣布收费近日 Docker 官方宣布一项新的动作,即将产品订阅划分为个人、专业、团队和商业不同版本。如果企业规模在 250 名员工以上或年收入超过 1000 万美元的公司想要使用 Docker Desktop,那么必须使用付费订阅。付费订阅…

Serverless 2.0,鸡蛋还是银弹?

简介: 本篇旨在介绍 Serverless 如今应用到应用(非病句)的各种困境,以及帮助用户如何去规避一些问题,提前了解方向。 浪潮 从 2014 年 Serverless 冒头至今,已经有无数的勇士在前面探路,阿里、…

基础组件完善的今天,如何通过业务组件提效?

简介: 无论是在前端刀耕火种的 jQuery/YUI 时代,还是到现在基于数据驱动 UI 的 React/Vue 时代,物料/组件一直是前端永恒的话题。基于大量重复逻辑的封装可以很显而易见地提升前端 UI 的构建效率,简单而直接,因此无论技…

​做安全操作系统,这位技术老兵是认真的!

受访者 | 王文东记者 | 伍杏玲出品 | CSDN云计算(ID:CSDNcloud)近年来国际形势变化莫测,基础软件作为建设国家信息系统的核心,其自主研发能力备受关注与热议。作为企业和个人开发者,我们如何打破当前国产基…

基于 Flink SQL 构建流批一体的 ETL 数据集成

简介: 如何利用 Flink SQL 构建流批一体的 ETL 数据集成。 本文整理自云邪、雪尽在 Flink Forward Asia 2020 的分享,该分享以 4 个章节来详细介绍如何利用 Flink SQL 构建流批一体的 ETL 数据集成, 文章的主要内容如下: 数据仓库与数据集成…

入选 SIGMOD2021 的时间序列多周期检测通用框架 RobustPeriod 如何支撑阿里业务场景?

简介: 本文除了介绍RobustPeriod的核心技术亮点,还将重点解释如何将它构筑成服务来解决阿里云的业务痛点。 近日,由阿里云计算平台和阿里云达摩院合作的时序多周期检测相关论文RobustPeriod: Robust Time-Frequency Mining for Multiple Peri…

《新程序员002》图书正式上市! 从“新数据库时代”到“软件定义汽车”

20年前,伴随着互联网打开信息化大门,技术人成为新时代的开拓者。在时代的召唤下,CSDN于2001年推出国内首个面向IT人员的专业杂志——《程序员》,成为一代代开发者的技术启蒙。20年后的今天,人工智能、云计算、大数据等…

Kubernetes 稳定性保障手册 -- 极简版

简介: Kubernetes 在生产环境中的采用率越来越高,复杂度越来越高,由此带来的稳定性保障的挑战越来越大。 Kubernetes 在生产环境中的采用率越来越高,复杂度越来越高,由此带来的稳定性保障的挑战越来越大。 对于基于 K…

收藏!这些IDE使用技巧,你都知道吗

简介: 欲善其事,先利其器。对于研发同学,在日常的开发工作中,我们与之打交道最多的便是编程的IDE。能否高效和灵活的使用IDE,将对我们的工作效率起着举足轻重的作用。 一 、背景 1 、目的 欲善其事,先利其…

做安全操作系统,这位技术老兵是认真的!

受访者 | 王文东 记者 | 伍杏玲 出品 | CSDN云计算(ID:CSDNcloud) 近年来国际形势变化莫测,基础软件作为建设国家信息系统的核心,其自主研发能力备受关注与热议。作为企业和个人开发者,我们如何打破当前…

快手基于 Flink 的持续优化与实践

简介: 快手基于 Flink 的持续优化与实践的介绍。 一、Flink 稳定性持续优化 第一部分是 Flink 稳定性的持续优化。该部分包括两个方面,第一个方面,主要介绍快手在 Flink Kafka Connector 方面做的一些高可用,是基于内部的双机房读…

平台建设的7大问题:蚂蚁AI平台实践深度总结

简介: 在支持蚂蚁几乎所有核心业务运行和发展的过程中,我们在平台建设、业务支持、平台运营、AI创新以及AI整体运营等各个方面做了很多尝试,有了不少的收获和感悟,在此分享给大家。 过去几年,我和团队一直在负责蚂蚁集…

知乎热问:进入内核态究竟是什么意思?

‍‍知乎上有一个问题:进入内核态究竟是什么意思?暂且忘记这个问题,让我们从另一个问题出发,一步步引出这个问题的答案。特权指令问题现代计算机里面,同时运行了很多程序,比如Office软件、浏览器、QQ、还有…