南京儿医在线 x mPaaS | H5 性能体验太卡,我们换了小程序试一试

简介: mPaaS 小程序接入过程实操

封面图0723.jpg

技术选型从 HTML5 到小程序,走过逐步熟悉产品的阶段后,即可获得飞升的研发效能和流畅体验。

瞰聆信息科技有限公司是一家专注移动医疗的公司,聚焦于采用移动化的技术手段实现医疗高效协作和精细化敏捷管理。业务服务结合国内医院的实际情况进行创新,致力于构建国内细分领域最先进的产品和解决方案。

「南京儿医在线」是瞰聆科技为南京儿童医院开发的官方就医 App,支持线上线下一体化就医体验。本文介绍了其如何通过接入 mPaaS 小程序从而提升应用体验性能的故事。

项目背景

瞰聆成立以来,业务大多集中在移动端对外开放。而在 App 发展初期,我们所服务的受众人群以 B 端医生为主,考虑到医院端业务量大、场景丰富、产品线广,同时项目需要支持“微信公众号”及“支付宝公众号”。

因此我们采用了「原生 App 作为容器 + HTML5」的技术选型支撑业务开发:App 提供统一的用户认证体系,在线加载 HTML5 页面,并对 HTML5 提供相应的 JSSDK。由此,医疗相关的业务我们基本统一使用 HTML5 开发,期望做到一端开发,两端适配。

然而,跑了一段时间之后,我们发现纯 HTML5 开发的方式,性能体验问题较大。比如,HTML5 页面在用户手机上经常出现打不开、一直加载中、卡顿等问题。

当然,面向 toB 类的业务还好,医生用户群的体量相对可控,能够针对性优化解决性能问题。但一旦业务面向 toC,如若我们的 App 持续出现性能问题,随之而来的就是不可控的患者投诉和差评,既影响用户体验,也对公司的品牌有所伤害。

评估“南京儿医在线”App 的用户体量将持续增长,我们决定不再忍受纯 HTML5 开发的模式,重新改造 App,势必输出一款能够满足消费级市场要求的应用。

接触 mPaaS 之前,实际上我们也尝试过其他跨平台的解决方案,如 Cordova、Uni-App、Flutter,甚至还有个人开发者输出的微信小程序框架 Hera。测试了一段时间之后:

  • Cordova 的性能无法满足要求,兼容性也有不少问题;
  • Uni-App 倾向于纯 HTML5 开发模式,评估后不太适合与原生 App 结合;
  • Flutter 现阶段生态还有待完善,且对应的学习成本较高,不适合我们团队。

最终我们把目光投向了小程序。

小程序针对浏览器内核进行了优化,分离渲染和逻辑执行引擎,再加上对渲染层做了一些优化。除了首次下载需要花一些时间,之后的体验已经非常接近原生应用。虽然个人开发者的 Hera 框架也提供了我们一些思路,但由于后续开发扩展的东西太多,如扩展 API、HTML5 端 SDK、离线下载策略、渲染优化……很显然,短时间内我们无法完成。

接入 mPaaS 过程回顾

经过一系列调研之后,我们发现 mPaaS 小程序与我们当前的需求不谋而合,同时也已沉淀了很多大客户案例。于是我们决定接入测试 mPaaS,通过 mPaaS 小程序来提升 App 性能体验。

当然,在对接测试过程中,我们确实也踩了不少坑,借助 mPaaS 技术团队的支持,问题逐一得到解决。而对我们而言,实际上是逐步熟悉产品、积累经验的过程。下面列举一些有代表性的问题,供大家参考:

1.初期对接阶段,安卓端遇到加载在线 HTML5/小程序报【网络不给力,请稍后再试】的问题。调试下来发现有个 RPC 请求报 7001,验签未通过。最后提了工单,开发同学提示需求将安装包上传至 mPaaS 控制台,并下载新的配置文件 ‘Ant-mpaas-xxxxx.config’,覆盖原来的配置文件。(实际上是我们需要将安装包的签名做更新,修改其中 ‘base64’ 字段内容)
这个问题反映出由于我们前期没有熟读文档,对问题的判断以及解决思路不够清晰,由此走了很多弯路。因此,开发者一定要通读文档,了解接入流程,从而能够更好地提升接入效率。

2.离线包实时更新。mPaaS 离线包默认每隔 30 分钟自动更新。但我们偶有紧急业务调整或者 Bug 需快速修复,希望用户打开的时候就能加载最新的包。
基于这个需求,我们自主实现了一个实时更新机制。
大致思路是启动的时候即刻检测是否有离线包更新,如果有,便请求下载,然后重新渲染页面。(当然这种机制相对消耗流量,也并非常规做法,我们仍在持续优化中。)如果对实现方法感兴趣,大家可以参考我同事的这篇文章:《mPaaS 集成:基于内嵌 View 形式优化首页更新》

3.键盘样式问题。fixed 定位中的输入框弹出的键盘会把输入框顶上去,而输入框内容保持不动(如下图所示)
经过排查后,核心原因在于一开始我们没有获取键盘的展开缩起(高度变化)的状态,对应的解决方案即通过配置属性即可:enableNative="false"

1.jpg


(原本应该在体重输入框的,键盘弹起后,跑到了下面输入框)

4.接口仅支持 GET、POST 请求。原因是由于支付宝小程序限制。
目前我们采取的方式是后台接口添加 GET/POST 支持,比如 PATCH/USER,用 POST 便变成 POST/USER/PATCH。
当然,还有个办法是 App 提供 JSAPI,网络通信交给 App 来做,前端调用 JSAPI 来实现。

5.iOS 端小程序标题不显示。这个问题从接入开始,持续到项目近上线最终被解决,具体表现是 iOS 端小程序不显示默认标题,小程序手动调用 ‘my.setNavigationBar’ 设置的方可显示。期间我们尝试了很多方案,虽然定位问题在客户端,但始终没有找到问题。
最终通过 mPaaS 开发同学发现其中一个叫 SSZipArchive 的 pod 库,影响了框架的执行,删掉了这个引用解决了问题。

6.关于依赖库冲突/报错问题。
建议大家可以根据 mPaaS 官方文档,尽量使用 mPaaS 自身的依赖,挨个排查替换即可。

7.多个小程序之间跳转问题。在实际需求中,有小程序跳 HTML5 再跳小程序等需求。而后我们发现 App 端只能同时存在一个小程序,无法实现小程序互跳。具体表现即,跳转小程序之前必须关掉当前小程序,否则跳转无效。
后来通过提工单,并通过对比文档发现,有一个参数设置可以实现多个小程序互跳:在创建小程序的时候通过 startTinyAppWithId 方法传入启动参数即可实现:@{@"startMultApp":@"YES",@"appClearTop":@NO}

全新的开发体验

借助 mPaaS 开发同学的帮助,我们的问题最终都得到了解决,项目也成功上线。上线之后,我们对部分家长用户进行了回访,家长的评价都是新 App 的体验非常流畅、好用。

在第一个版本之后,我们又进行了几次版本迭代。迭代开发过程中,我们的客户端只需关注与“HTML5/小程序”的交互接口扩展,HTML5/小程序端更多关注业务开发,需要什么接口,和客户端约定一下协议即可,几乎实现了和客户端的“分离”开发。

业务开发完成后,可以在支付宝小程序 IDE 上一键发版提测,非常方便。上线也只需在 mPaaS 控制台手动发布一下版本即可,实现了秒级更新。

接着还有新同事参与进来开发了医生端的新业务。基于之前的积累,以及 mPaaS 小程序的开发文档,大家很快就能上手。几天时间就开发出了一个在线开处方的应用,mPaaS 大大地提高了我们的研发效率。

综合来看,mPaaS 帮助我们解决了最为头疼的性能体验问题,让我们可以集中精力进行业务模块的开发。

当然,mPaaS 带来的价值还有很多。它不光解放了我们的客户端,让客户端可以专注在 App 容器,不断丰富平台能力,比如统一 UI 组件库、身份认证体系、IM 通信、音视频直播等等;而且统一了我们的前端开发规范,让我们得以在统一的平台上进行业务开发,形成自己的规范,有利于代码的沉淀和管理。

文章插图0723.jpg

「南京儿医在线」应用界面

未来展望

对瞰聆来说,医疗业务是我们的生命线。

我们只有不断地迭代、创新,才能做出真正有价值的产品,满足用户和客户的要求。项目上线才是开始,我们后面要面对的问题还有很多。

基于 mPaaS,后续我们希望进一步接入其他能力,比如移动端日志上传,帮助我们获得用户端 Bug 报错;比如热修复,帮助我们实现无感更新。

最后,我们感谢 mPaaS 团队的无私贡献,感谢节假日还在帮助我们解决问题的开发同学。mPaaS 还在不断完善,我们相信 mPaaS 是一个可以依靠的平台,mPaaS 未来一定会更加强大!

特别鸣谢:特别鸣谢:熊晨良、李俊、陈刚、徐精华

END

关于 mPaaS 小程序

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

上阿里云搜索“mPaaS”.jpg

动态-logo.gif


公众号媒体导流矩阵.jpg

相关文章
|
1月前
|
移动开发 前端开发 Android开发
mPaaS 常见问题之移动开发平台 mpaas的H5 前端 Kylin 框架引入vant后包特别大如何解决
mPaaS(移动平台即服务,Mobile Platform as a Service)是阿里巴巴集团提供的一套移动开发解决方案,它包含了一系列移动开发、测试、监控和运营的工具和服务。以下是mPaaS常见问题的汇总,旨在帮助开发者和企业用户解决在使用mPaaS产品过程中遇到的各种挑战
39 0
|
1月前
|
移动开发 监控 小程序
mPaaS常见问题之音视频通话微信小程序通话界面录制为画中画模式如何解决
mPaaS(移动平台即服务,Mobile Platform as a Service)是阿里巴巴集团提供的一套移动开发解决方案,它包含了一系列移动开发、测试、监控和运营的工具和服务。以下是mPaaS常见问题的汇总,旨在帮助开发者和企业用户解决在使用mPaaS产品过程中遇到的各种挑战
27 0
|
2月前
|
缓存 小程序 Android开发
mPaaS问题之更改包名之后就进不了小程序如何解决
mPaaS小程序是阿里巴巴移动平台服务(mPaaS)推出的一种轻量级应用解决方案,旨在帮助开发者快速构建跨平台的小程序应用;本合集将聚焦mPaaS小程序的开发流程、技术架构和最佳实践,以及如何解决开发中遇到的问题,从而助力开发者高效打造和维护小程序应用。
65 1
|
18天前
|
移动开发 小程序 前端开发
H5和小程序有什么区别
H5和小程序有什么区别
|
1月前
|
移动开发 安全 小程序
mpaas常见问题之小程序容器,跑起来后一直提示 "网络不给力, 请稍后再试"如何解决
mPaaS(移动平台即服务,Mobile Platform as a Service)是阿里巴巴集团提供的一套移动开发解决方案,它包含了一系列移动开发、测试、监控和运营的工具和服务。以下是mPaaS常见问题的汇总,旨在帮助开发者和企业用户解决在使用mPaaS产品过程中遇到的各种挑战
22 0
|
1月前
|
移动开发 负载均衡 小程序
代驾app开发丨代驾系统开发玩法详情丨代驾系统开发网页版/H5/小程序及源码部署
**司机/代驾员端**:司机可以通过APP接收订单,查看订单详情、路线和导航,提供现场服务并进行确认。
|
2月前
|
数据采集 机器学习/深度学习 移动开发
uniapp+springboot医院智能导诊系统源码,自动兼容小程序与H5版本
技术架构:Uniapp+springboot+redis+mybatis plus+mysql+RocketMQ
74 0
|
2月前
|
小程序 Android开发 iOS开发
mPaaS问题之Ios调小程序报错如何解决
mPaaS小程序是阿里巴巴移动平台服务(mPaaS)推出的一种轻量级应用解决方案,旨在帮助开发者快速构建跨平台的小程序应用;本合集将聚焦mPaaS小程序的开发流程、技术架构和最佳实践,以及如何解决开发中遇到的问题,从而助力开发者高效打造和维护小程序应用。
46 0
mPaaS问题之Ios调小程序报错如何解决
|
2月前
|
小程序 安全 算法
mPaaS问题之使用小程序传参数报错如何解决
mPaaS小程序是阿里巴巴移动平台服务(mPaaS)推出的一种轻量级应用解决方案,旨在帮助开发者快速构建跨平台的小程序应用;本合集将聚焦mPaaS小程序的开发流程、技术架构和最佳实践,以及如何解决开发中遇到的问题,从而助力开发者高效打造和维护小程序应用。
38 2
|
4月前
|
Web App开发 移动开发 小程序
"项目中mpaas升级到10.2.3 适配Android 14之后 app中的H5以及小程序都访问不了,
"项目中mpaas升级到10.2.3 适配Android 14之后 app中的H5以及小程序都访问不了,显示“网络不给力,请稍后再试”,预发内网版本不能使用,线上版本可以正常使用,这个是什么原因啊,是某些参数没有配置吗,还是说是一些参数改错了?
59 2

相关产品

  • 移动开发平台 mPaaS