导读:本文首先引入百度小程序开源生态介绍,随后在发展道路中遇到厂商浏览器合作场景,引出小程序分发保障的痛点和挑战,接着分别从分发通路、能力检测、能力匹配以及能力干预方面详细探讨了具体的方案和设计,最后对建设之路中的设计思路和思考进行了总结。
全文字,预计阅读时间14分钟
一、业务介绍
1.1小程序开源整体介绍
百度从做智能小程序的第一天开始就打造真正开源开放的生态,我们的愿景是:定义移动时代最佳体验,建设智能小程序行业标准,打破孤岛,共建开源、开放、繁荣的小程序行业生态。百度智能小程序的生态玩家有三类,分别是:联盟合作伙伴、开发者和用户。对于联盟合作伙伴,满足合作伙伴的生态共建、流量共享、商业共赢诉求,使得合作伙伴App内缺失场景得到高效补充,拉动合作伙伴App用户使用时长,共享小程序的变现收入。对于开发者,满足了开发者一次开发,多端运行诉求,使得开发者流量获取更加便捷高效、并且增加开发者商业收入。对于用户,满足用户的无需跳出即可享受一站式服务诉求。百度搜索做为小程序的十分重要分发入口,通过构建统一的小程序行业生态,提升百度的搜索生态中的用户体验、服务闭环。
百度智能小程序开源的架构是如何支撑起整个联盟生态运转的呢?
如图所示,小程序开源联盟的整个业务架构分位四层。包括:联盟宿主层、对外联盟赋能层、中间服务层、基础建设层。
联盟宿主层。百度智能小程序已经接入非常丰富的联盟宿主,包括OPPO浏览器、VIVO浏览器、小米浏览器、爱奇艺、百度极速版等等。对外联盟赋能层,百度智能小程序开源联盟主要通过开源联盟平台对宿主提供入场能力、经营能力、资源输出能力,以支持开源生态成员的入驻、配置、集成、准入检测、小程序信息、物料信息、分佣、订单信息、运营等诉求。宿主通过资源输出模块拿到小程序以及物料的数据后,可以在自己的App内场探索可落地的场景并进行资源的分发。内部中间服务层,主要是承上启下的服务,封装基础服务,并支撑对外联盟赋能层对基础业务数据的获取。主要包含:小程序开源宿主管理、能力资产管理、分发管理、订单及分佣管理、数据管理等。基础建设层,主要包含小程序开源框架、数据服务、小程序/物料服务、包服务以及安全加固等方案的落地。
1.2小程序开源与厂商合作介绍
随着百度小程序开源联盟的不断发展,也吸引了头部手机厂商。小程序开源与厂商共建了丰富的业务场景,不仅包含厂商的浏览器场景,还有桌面锁屏、负一屏、全局搜等多种场景。如此多样化的场景建设中,我们面临的共性挑战是:如何保障厂商线上分发质量、如何建设一条从厂商浏览器到百度搜索到小程序的全流程分发管控通路,从而可以精准、实时的管控厂商浏览器的小程序分发。
具体我们是如何考虑并建设的呢?下面将详细介绍下。
二、整体技术建设思路介绍
2.1小程序开源分发保障技术要点
1.背景介绍
开源保障核心围绕的对象为宿主与小程序,核心目的是为了保障小程序在宿主上的分发质量。
为什么会存在分发质量问题?宿主在入驻开源后需要集成开源SDK并进行相关能力的开发,在这些流程完成后宿主就获得了相应的宿主能力。小程序是基于swanjs开发框架进行的开发,swanjs这套运行时框架底层同样是依赖开源SDK运行,因此在小程序完成开发后小程序本身也获得或依赖了相关能力。因为不同的宿主能力支持情况不同,就会导致同一个小程序在不同宿主上分发时可能遇到某个宿主不支持小程序使用到的某个能力,进而导致该小程序无法在宿主上正常打开或者降级为H5打开,导致用户体验受损。
因此需要有一套开源保障方案来提前发现宿主与小程序之间能力不匹配情况,进而确保系统能够自由管控小程序在宿主上分发全过程。
2.技术要点
要实现小程序在宿主上分发通路建设,核心涉及端流程打通、能力与定级流打通及最终分发流打通三大板块,如下图所示:
1)端流程包含宿主端流程和小程序端流程打通
a、宿主端流程:
宿主入驻开源,入驻成功后宿主需要集成开源SDK与开发,宿主开发完成后即可打包发布宿主App;同时宿主包在发布前需要经过宿主能力测试,通过下载宿主工具进行CTS能力测试并产出宿主能力支持情况。
b、小程序端流程:
开发者进行小程序开发,开发完成后操作小程序包版本发布上线,之后小程序开源保障模块会订阅小程序发版动作,同时拉取小程序包信息执行小程序能力扫描测试,并产出小程序能力使用情况。
2)能力与定级流
在宿主与小程序分别完成接入与能力扫描后,开源保障系统就可以分别基于宿主与小程序能力扫描结果进行解析,产出最终的宿主和小程序能力使用情况并存储。同时开源保障系统可以基于宿主能力与小程序能力分别对宿主和小程序进行能力定级,计算出宿主与小程序当前能达到哪个等级,并给宿主和小程序分别打上等级标识。
3)分发流
主要由小程序分发端实现,主要根据用户在开源保障系统中配置的分发策略,基于策略计算小程序是否满足在宿主上分发条件。
3.名词解释
SWANJS:小程序前端运行时框架。
能力:能力指的是小程序开源系统中,对百度APP或者说开源SDK中所封装并支持的各种API、组件、框架等系统能力的统称,详细可参考小程序开发者文档