首页 > 编程语言 >反向兼容问题:多平台小程序如何集成到自自有app

反向兼容问题:多平台小程序如何集成到自自有app

时间:2023-10-24 15:11:38浏览次数:28  
标签:支付宝 字节 兼容问题 comp app 程序 兼容 反向 FinClip

说到小程序,大部分的读者第一反应,可能是微信小程序、支付宝小程序。确实,以前小程序这种生态只有巨头才玩的起。 但现在,任何企业,甚至是个人,都能低成本地在自己的App添加运行小程序的能力,可以自主建设小程序生态、发布管理小程序内容。 小程序类技术的企业商用,意味着:企业拥有了和互联网平台们类似的技术,能够以小程序这种技术载体、内容格式来开发自己的商业软件,从而享受这种技术带来的敏捷、轻量、极度松散耦合的好处。

需求背景:我们团队正在给客户提供App开发服务,客户的App中需要大量接入第三方的小程序服务:资讯、购物、打车、生活缴费等,外部小程序来自于微信、支付宝、字节等多个平台。

客户需求:APP可兼容多平台小程序,最大程度降低双方的接入成本,减少对接工作。

当前方案

一、技术架构

首先说说技术架构,由于项目最开始的需求就是要搭建平台生态,有大量的第三方应用引入需求,因此我们团队在最初选择架构的时候,采用的是“Native+小程序”的混合开发模式。通过在App里嵌入一个小程序runtime去实现,在自己的APP内完成小程序功能的接入,开发,甚至通过小程序runtime 可以实现跨APP的功能互通,这些都是基于小程序的灵活性来实现的。

二、多平台小程序的兼容处理

我们的项目选择了目前市面上比较成熟的小程序runtime FinClip SDK,微信、支付宝、字节的小程序兼容也是基于FinClip 去实现的。下面分别看看对不同小程序的兼容情况。

官方提供了一整套的IDE工具以简化小程序的开发、测试和部署。(可以下载试试:FinClip  Studio)以下截图都是官方提供的IDE工具中的操作步骤。

微信小程序的支持度非常高,在此就不做赘述了,基本是都是可以直接跑的。主要看看支付宝和字节小程序的兼容情况。

支付宝小程序导入案例

首先拿到合作方支付宝小程序代码包之后,导入IDE进行兼容性检查。

使用 FinClip Studio 导入支付宝小程序时界面

支付宝小程序代码包通过兼容性检查

支付宝小程序能够在 FinClip Studio 中编译预览

 

兼容情况

node_modules 中的库需要先使用 构建 npm
扩展组件在开发兼容中

运行问题

目前在运行过程中也发现一些小问题,比如:部分 API 未实现,可以使用 canIUse 来判断兼容性,不兼容的 API 暂时避免使用。不支持 lottie 组件、 slot-scope、Page 的 events,Component 的 rootEvents
也希望官方尽快适配吧。

字节小程序导入示例

使用 FinClip Studio 导入字节小程序时界面

字节小程序代码包通过兼容性检查

字节小程序能够在 FinClip Studio 中编译预览

兼容情况
node_modules 中的库需要先使用 构建 npm

运行情况

字节小程序也有类似的情况部分 API 未实现,实践来看还是又一些其他的兼容问题:

生命周期执行时机不一致

字节小程序生命周期触发顺序:Page onl oad -> Component created -> Component attached -> Page onShow
finclip 小程序生命周期触发顺序:Component created -> Component attached -> Page onl oad -> Page onShow

组件嵌套生命周期执行会不一致

示例代码

  <comp-a>
    <comp-b/>
  </comp-a>

 

像 page 中的这种结构,finclip 的方案是 comp-b 属于 page 的,所以不管 comp-a 中是否有 slot 节点,都会去创建 comp-b,只是不会渲染到页面上(这样会触发 created、attached,不会触发 ready)。

字节的方案是需要渲染才创建,相当于 comp-b 是属于 comp-a 的,当 comp-a 没有 slot 节点的时候就不会执行 comp-b 的生命周期。

运行下来,目前平台提供了对于抖音小程序与支付宝小程序的兼容支持,但是由于 FinClip 的编译校验过程比抖音与支付宝更加严格,在实际编译过程中,有部分代码需要变更或修改造成一些不便,也希望官方能够尽快完善。

 

标签:支付宝,字节,兼容问题,comp,app,程序,兼容,反向,FinClip
From: https://www.cnblogs.com/Xxx1m/p/17784850.html

相关文章

  • uniapp h5低版本Android显示空白
    前言:uniapp写的H5访问一直空白,打包app就可以正常显示,排查说是箭头函数低版本不支持,一顿操作npm,还是一样空白。最后:需要发行打包h5才能正常访问,服了也没告诉我啊。注:打包出来访问报错UncaughtSyntaxError:Unexpectedtoken'<',访问空白问题,在manifest.json文件中添加如图所示......
  • LambdaUpdateWrapper 自定义修改
    当我们想要在原有的数据上添加新的数据的时候,我们需要一个更新操作,但是<Iservice>接口一般是根据ID进行修改当我们需要根据指定的条件设置值时,就需要自己写SQL但是这个办法会出现SQL错误并且很麻烦所以我们可以自定义一个wrapper来进行修改。 这是全部的代码 这是我们要......
  • java动态创建es 及mapping
    publicCreateIndexResponsecreateIndexWithMapping(Stringindex,Map<String,String>mapping){CreateIndexResponseresponse=null;try{CreateIndexRequestrequest=newCreateIndexRequest(index);request.settings(Settings.b......
  • Apple开发_打印一个实例对象中的属性与值,包括在父类中的
    #import<objc/runtime.h>//打印一个实例对象中的属性与值,包括在父类中的-(void)print_Self_Properties{//DEBUG模式下打印日志,当前行#ifdefDEBUGunsignedintcount=0;Classgc_class=[selfclass];GCLog(@"统计开始⌛️")NSMutabl......
  • 直播带货APP开发指南:从创意到实现
    在数字时代,直播带货成为了一个热门的商业模式,吸引了数百万消费者和企业。随着社交媒体和电子商务的快速发展,许多企业和个体创业者都开始探索直播带货APP的开发。本文将引导您完成直播带货APP的开发,从创意阶段到实际实现。一、理解直播带货的概念在着手开发之前,您需要深入了解什么是......
  • uniapp引入H5调试vConsole
    在真机环境下调试移动端H5的时候,无法像浏览器一样打开控制台进行console调试,那么我们可以在前端项目中引入vconsole,便于我们在真机环境下调试移动端H5项目vConsole是一个轻量、可拓展、针对手机网页的前端开发者调试面板。详细文档可查看:https://gitee.com/mirrors/vConsole/功......
  • hc32f4a0 bootloader跳转app后中断异常
    起因从HC32F460上移植bootloader到HC32F4A0上后,应用程序无法正常使用。主要代码如下:voidexecute_user_code(uint32_tappxaddr){uint32_tJumpAddress;sram_size=(*(uint32_t*)appxaddr)-0x1FFF8000;//differentsramadresswithotherMCUif(sram_size<=0x......
  • uniapp项目引入uView-ui
    通过npm下载//如果您的根目录没有package.json文件的话,请先执行如下命令://npminit-ynpminstalluview-ui//更新//npmupdateuview-ui配置步骤1.引入uView主JS库在项目根目录中的main.js中,引入并使用uView的JS库,注意这两行要放在importVue之后。//main.j......
  • [924] ArcGIS Pro Mapping Module - arcpy.mp
    ref:Introductiontoarcpy.mpref:Gettingstartedwitharcpy.mptutorialref:Guidelinesforarcpy.mpref:Alphabeticallistofarcpy.mpfunctionsref:Alphabeticallistofarcpy.mpclassesref:SQLreferenceforqueryexpressionsusedinArcGISThefol......
  • uboot配置usbhost及代码初步分析--Apple的学习笔记
    一,前言之前uboot没配置过usb,但是现在uboot基于DM模型基本和linuxdriver类似了。那么为了学习linuxdriver,我可以先学习uboot来做技术储备也是一样的。而且usb在uboot上应该也有用武之地,所以有必要进行刻意练习。二,分析1,之前对发现driver用了wraper的方式来打包进行绑定,我理解唯一......