首页 文章 精选 留言 我的

精选列表

搜索[高并发],共10000篇文章
优秀的个人博客,低调大师

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

传统的小程序技术容易受到网络环境影响,当网络质量不佳时可能导致拉取不到小程序包的情况。通过预置小程序,即可规避该问题。本文介绍了预置小程序的原理和预置小程序的实现过程。 什么是预置小程序 预置小程序是指将小程序的渲染、逻辑、配置等静态资源打包在一个压缩包内,客户端预先下载小程序包到本地、直接从本地加载资源的过程。预置小程序可以最大程度地摆脱网络环境对 mPaaS 小程序页面的影响。使用预置包能够为客户端带来以下优势: 提升用户体验 通过预置包的方式把页面内静态资源嵌入到应用中并随应用一起发布,可以使用户第一次开启应用时即无需依赖网络环境下载资源,可以直接开始使用。 实现动态更新 在推出新版本或紧急发布的时候,可以在小程序 IDE 中进行迭代开发,通过 mPaaS 控制台发布,客户端中集成的小程序 SDK 会自动将小程序更新到最新的版本。这种发布无需通过应用商店审核,可以让用户及早接收到更新。 预置小程序的实现原理 本文从以下方面介绍了预置小程序的实现原理: 小程序预置包的结构 小程序预置包的使用过程 小程序预置包的结构 小程序预置包是一个 .amr 格式的压缩文件,将后缀 amr 改成 zip 解压缩后,可以看到其中包含的 HTML 资源和 JavaScript 代码等。待小程序容器加载后,这些资源和代码能在 UC 内核渲染。 以 Android 系统为例,下图显示了一般资源包的目录结构: 一级目录:一般为资源包的 ID,如 2020121620201216_1.0.1.0.zip。 二级目录及往后即为业务自定义的资源文件。并设定当前预置包默认打开的主入口文件,如 /index.html。 小程序预置包的使用过程 使用小程序预置包的过程可以分为以下三个步骤: 请求包信息 从服务端请求小程序包,并将小程序包信息存储到本地数据库的过程。包信息包含了小程序包的下载地址、小程序包版本号等。 下载小程序包 把小程序包从服务端下载到手机。 安装小程序包 下载目录,拷贝到手机安装目录。 前提条件 已接入小程序组件。更多关于小程序组件的接入信息,请参见 快速开始使用小程序。 已接入 H5 容器 组件。更多关于 H5 容器的接入信息,请参见 快速开始使用 H5 容器。 操作步骤-Android 预置小程序包。 在 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 包,需要要确保文件已存在;如不存在,会造成其他内置预置包失败。 启动小程序。启动小程序的示例代码如下。 /** * 启动小程序 * * @param appId 小程序id */ public static void startApp(String appId); 2. 更新小程序 默认情况下,每次打开应用,小程序 SDK 都会尝试检查是否有可更新的版本。出于服务端压力考虑,该检查有时间间隔限制,默认为 30 分钟。如果想立即检查最新可用版本,调用下方的代码来请求更新。一般情况下,可以在应用启动或者用户登录后调用。 MPNebula.updateAllApp(new MpaasNebulaUpdateCallback(){ @Override public void onResult(final boolean success, final boolean isLimit) { super.onResult(success, isLimit); runOnUiThread(new Runnable() { @Override public void run() { AUToast.makeToast(NebulaAppActivity.this, success ? R.string.update_success : R.string.update_failure, 2000).show(); } }); } }); 3. 校验安全签名 小程序具有签名校验机制,防止恶意程序篡改下载到设备的小程序包。通过调用 MPNebula 接口设置验签参数即可开启此机制。如果您使用的基线是 10.1.60 或以上版本,需要额外开启容器配置,详情参见 H5 容器配置。 说明: 请在第一次打开离线包前调用 MPNebula 接口,否则将会导致公钥初始化失败。关于公钥与私钥,参见 配置离线包 > 密钥管理。 无论客户端是否开启签名校验,在被判断为 root 的手机上都会强制进行签名校验。 /** * @param publicKey 验签公钥 */ public static void enableAppVerification(final String publicKey) 4. 删除本地小程序 Nebula 提供了删除本地应用信息的接口。当本地应用信息被删除后,再次打开应用时会重新请求服务端下载、更新本地小程序的信息。 public class MPNebula { // appId 为离线包或小程序的应用 ID public static boolean deleteAppInfo(String appId); } 说明:此 API 在 10.1.68 系列和 10.1.60 系列支持的最低基线版本分别为 10.1.68.8 和 10.1.60.14 。 操作步骤-iOS 预置小程序包。 a. 在 mPaaS 控制台发布小程序包并下载 AMR 文件和配置文件。 b. 新建一个独立的 bundle,如 DemoCustomPresetApps.bundle,将从发布平台下载的 .amr 离线包和 h5_json.json 文件添加到此 bundle 中。 重要:目前发布平台仅支持下载单个离线包的 h5_json.json 配置文件。当预置多个小程序包时,需要将不同 h5_json.json中的 data 数据手动合并到一个配置文件中。 c. 在初始化小程序时,在initNebulaWithCustomPresetApplistPath 接口,设置预置小程序离线包路径为上一步中创建的 bundle。 - (void)application:(UIApplication *)application beforeDidFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // 初始化 rpc [MPRpcInterface initRpc]; // 初始化容器 // [MPNebulaAdapterInterface initNebula]; // 自定义jsapi路径和预置小程序包信息 NSString *presetApplistPath = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"DemoCustomPresetApps.bundle/h5_json.json"] ofType:nil]; NSString *appPackagePath = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"DemoCustomPresetApps.bundle"] ofType:nil]; NSString *pluginsJsapisPath = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"DemoCustomPlugins.bundle/Poseidon-UserDefine-Extra-Config.plist"] ofType:nil]; [MPNebulaAdapterInterface initNebulaWithCustomPresetApplistPath:presetApplistPath customPresetAppPackagePath:appPackagePath customPluginsJsapisPath:pluginsJsapisPath]; } 2. 启动小程序 与非预置小程序类似,进入对应的页面时,调用 Nebula 容器提供的接口方法加载小程序。 [MPNebulaAdapterInterface startTinyAppWithId:@"2020121720201217" params:nil]; 3. 更新小程序。 默认情况下,每次打开应用,小程序 SDK 都会尝试检查是否有可更新的版本。出于减少服务端压力的考虑,该检查有时间间隔限制,默认为 30 分钟。如果想立即检查最新可用版本,可调用下方的代码来请求更新。一般情况下,可以在应用启动或者用户登录后调用。 -(void)application:(UIApplication *)application afterDidFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ //全量更新本地小程序包信息 [[MPNebulaAdapterInterface shareInstance] requestAllNebulaApps:^(NSDictionary *data, NSError *error) { NSLog(@"[mpaas] nebula rpc data :%@", data); }]; } 4. 校验安全签名。 小程序具有签名校验机制,防止恶意程序篡改下载到设备的小程序包。通过调用 小程序 接口设置验签参数即可开启此机制。 说明: 请在第一次打开小程序包前调用 MPNebulaAdapterInterface 接口,否则将会导致公钥初始化失败。关于公钥与私钥,请参见 配置小程序包 > 密钥管理。 开启验签 [MPNebulaAdapterInterface shareInstance].nebulaNeedVerify = YES; 5. 删除本地小程序。 Nebula 提供了删除本地应用信息的接口。当本地应用信息被删除后,再次打开应用时会重新请求服务端下载、更新本地小程序的信息。 /** * @brief 删除本地应用信息(包括包信息、amr以及安装目录) * * @date 2019-02-28 * * @return */ -(void)clearAllAppInfo:(NSString *)appId; //使用方法 [[NBServiceGet() appCenter] clearAllAppInfo:@"2020199503242811"]; 结语 mPaaS 小程序源自于支付宝小程序框架,亿级线上业务体量的锤炼,安全性媲美支付宝原生能力。不仅面向自有 App 投放小程序,更可快速构建打包,覆盖支付宝、淘宝、钉钉等应用。 通过使用上述预置小程序的方案,预置小程序不仅可以最大程度地摆脱网络环境对 mPaaS 小程序页面的影响,还能深度体验用户体验、实现动态更新。 撰文:刘启洋、滕宏才 - END -

优秀的个人博客,低调大师

配置管理 ACM 在可用服务 AHAS 流控降级组件中的应用场景

应用配置管理(Application Configuration Management,简称 ACM)是一款应用配置中心产品。基于ACM您可以在微服务、DevOps、大数据等场景下极大地减轻配置管理的工作量,同时保证配置的安全合规。ACM 有着丰富的使用场景,本文将介绍其在 AHAS 流控降级 中的应用。 什么是 AHAS 流控降级 AHAS 流控降级 是面向分布式服务架构的专业流量控制组件,主要以流量为切入点,从流量控制、熔断降级、系统保护等多个维度帮助您保障服务的稳定性,同时提供强大的聚合监控和历史监控查询功能。在 AHAS 流控降级中,我们需要针对不同的资源(比如服务接口、方法)配置不同的规则(流控规则、降级规则、系统保护规则等)。由于流量的不确定性,我们的规则也需要根据流量的实时情况进行动态管理。AHAS 流控降级使用了 AC

优秀的个人博客,低调大师

2018 展望 | 区块链:第一个(泡)峰(沫)后,要迈几道坎?

每到岁末年初,36氪都希望对接下来一年会发生什么,做一系列预判。一年前,我们推出了22篇针对不同行业重点公司的“2017看点”,并最终集结为颇受欢迎的《研究了50家影响力公司,我们预判了23个未来 | 36氪2017看点集合》。 “2018展望”这个系列,相比“2017看点”又有升级:我们要求我们的每位行业资深记者,在预判未来一年时,都要采访数名KOL——他们认为这个行业里有料的人,可能是投资人、创业者、管理者或者分析师。我们会在文章前面提炼出关键的几个观点,在文章后半部分放上他们原汁原味的回答。 “忽如一夜春风来,人人皆谈区块链”,作为2018年开年的第一个“风口”,区块链在被部分投资人看好,甚至被认为是“下一代互联网”的同时,也引发了同样庞大而激烈的质疑:它是更多通过币市投机而进入大众视野,因此大众对它的认知更多与币市的上涨和下跌

资源下载

更多资源
优质分享App

优质分享App

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

用户登录
用户注册