如何为自有APP构建一个小程序运行环境,让第三方合作伙伴以小程序的形式入驻,打造一个私有化的小程序开放平台
如何通过嵌入小程序SDK,为自己的APP构建一个第三方小程序运行环境,第三方合作伙伴无需二次开发,就可以把微信小程序运行在自己的APP中。
今天分享一个真实的客户案例,分享如何通过嵌入小程序SDK,为自己的APP构建一个第三方小程序运行环境,第三方合作伙伴无需二次开发,就可以把微信小程序运行在自己的APP中。
一、案例背景
客户的主力APP是一个本地政务融媒体APP,主要就是把本地新闻、政务信息发布到手机上,方便市民获取本地资讯。但持续面临一个问题,就是只做新闻资讯,用户用完就走了,留存很低,盈利方式也只有开屏广告、展示广告少数几种方式。
后来客户想要在新闻之外,新增更多的内容服务。例如本地市民还有很多日常需求,找附近的餐饮、预约挂号、查社保、叫家政服务。如果这些服务都能在APP里找到,对APP的日活会有很大的帮助。
不过这些也不可能是一个开发团队全部做,核心还是引入第三方服务商,本地有影响力的一些商户、医院、家政公司,他们已经有了自己的小程序,有的是微信小程序,有的是支付宝小程序。如果要求他们针对客户的APP单独开发一套,技术成本高,商户配合意愿也低。
后来找到一个比较务实的方案:不去要求商户重新开发,而是在APP里构建一套小程序运行环境,让商户现有的微信小程序可以直接在APP里跑起来,不需要二次开发。这样迁移成本几乎是零,可以快速接入大量本地服务。
接下来分享一下实践经验~
二、技术选型
2.1 常见的几条路径
- 纯原生开发。第三方服务商提供API,然后在APP里自己做界面调用API。这种方式体验可控,但每次接入新服务商都要从零开发,工作量很大,而且很难标准化。
- H5内嵌。在APP里开个WebView,加载服务商的H5页面。这个方式接入成本低,但体验差,H5调不了原生能力,支付、地图、拍照这些功能做起来很勉强,用户感知到的就是"在浏览器里打开网页"。
- 小程序容器。在APP里嵌入一个小程序运行时SDK,第三方服务商的小程序代码可以直接运行在容器runtime 里,调用的都是原生能力,体验会比H5好很多,这也是很多团队乐意选择的方案。
2.2 技术优势

小程序容器方案有一个核心优势:微信小程序在国内的开发者生态已经非常成熟,大量的本地服务商已经有现成的小程序。FinClip技术架构与微信小程序的高度兼容,微信里的小程序可以直接在小程序运行时环境中运行,不需要对商户的代码做任何修改。
2.3 技术选型评估表
| 维度 | 原生开发 | H5内嵌 | 小程序容器 |
|---|---|---|---|
| 接入一个新商户 | 2-4周 | 3-5天 | 1-2天 |
| 用户体验 | 好 | 差 | 接近原生 |
| 商户代码改动 | 完全重新开发 | 不需要 | 不需要 |
| 支付/地图等原生能力 | 支持 | 有限支持 | 支持 |
| 统一管理能力 | 弱 | 弱 | 强 |
| 接入成本 | 高 | 低 | 低 |
三、Runtime架构设计
3.1 整体架构
引入第三方小程序生态之后,APP的技术架构从原来的"新闻+基础服务"变成了三层结构:
┌─────────────────────────────────┐
│ 宿主APP(原生开发) │ ← 负责新闻资讯、用户账号
├─────────────────────────────────┤
│ 小程序容器层(FinClip SDK) │ ← 负责小程序加载、渲染、API桥接
├─────────────────────────────────┤
│ 第三方小程序(商户/机构/服务商) │ ← 餐饮、挂号、家政、租车、相亲等本地服务
└─────────────────────────────────┘
宿主APP负责整体的交互框架、新闻内容呈现和用户账号体系。小程序容器层负责加载和运行第三方小程序,提供原生能力的API桥接。第三方小程序由各个服务商独立开发和维护,平台负责接入审核和分发。
3.2 SDK初始化
小程序容器SDK接入宿主APP,初始化工作主要集中在两步。
1、SDK初始化配置。在APP启动时完成容器初始化,设置平台标识、容器权限范围、离线包存储策略。不同平台初始化方式略有不同,Android和iOS各有一套标准接入流程。
2、定义扩展API。根据本地服务的业务需求,在容器层定义了一套扩展API,比如获取当前定位信息、调起支付、查询本地社保信息等。第三方小程序通过这层扩展API访问宿主APP的能力,而不是直接调用宿主底层。
3.3 安全沙箱隔离
安全沙箱是小程序运行时中最重要的一个技术门槛。
第三方小程序运行在安全沙箱内,意思是每个小程序都在独立的运行环境里跑,有自己独立的存储空间,有受限的API调用权限。具体来说:
一个小程序无法访问另一个小程序的数据,也不能直接读取宿主APP的用户数据。小程序能调用哪些API,由manifest里声明的权限决定,没有声明的权限默认不开放。运行时行为由平台统一监控,异常调用会被检测和阻止。
这个机制对平台方来说是必须的。目前接入的第三方服务商有大有小,有的技术团队能力弱,有的代码不够规范,安全沙箱把他们的行为约束在可控范围内,不至于影响整个APP的稳定性。
3.4 与微信小程序生态的兼容性
目前的SDK最大的优势就是对微信小程序生态的兼容度比较高。微信里的小程序可以几乎无缝地在小程序容器里运行。
如果本地商户如果已经有微信小程序,不需要改动一行代码,就可以把同一个包体同时提交到微信和私有化的小程序平台。
四、第三方入驻流程

4.1 商户入驻审核
第三方服务商想在APP里上线小程序,要过平台的审核。审核分两个阶段。
第一阶段是资质审核。平台运营方要审核商户的营业执照、行业资质、服务能力。
第二阶段是技术审核。商户提交小程序包之后,平台要检查代码包签名是否有效、manifest声明的权限是否合理、有没有明显的数据外传行为、隐私协议文档是否合规。审核通过后,商户的小程序才会在APP里展示。
4.2 多租户账号体系
平台运营方在管理后台为每个入驻的商户创建独立账号,账号之间数据完全隔离。一个商户的开发者只能看到自己提交的小程序和数据,看不到其他商户的任何内容。
4.3 商户分级管理
平台根据商户的资质、服务规模和合作深度,给商户分配不同的能力等级。
高等级商户可以申请调用敏感接口,比如连接商户自有的会员系统、调取特定的用户信息字段。低等级商户只能使用基础API,比如展示内容、调起支付等。权限等级由平台运营方在管理后台配置,商户提交申请后,平台审批通过即可生效。
分级管理的好处是,优质商户有更大的发挥空间,同时新入驻的或者规模较小的商户不会因为权限开放过多带来安全风险。
五、安全与合规
5.1 数据不出本地
考虑到新闻媒体的安全性,选择了完全的私有化部署,在私有化部署模式下,行为数据默认存储在企业自有服务器,不经过任何第三方。
5.2 权限管控
第三方小程序能调用哪些能力,由manifest声明和平台审批双重控制。
一个小程序想获取用户位置、调起支付、访问通讯录,这些都要在manifest里声明。没有声明的权限,容器层会直接拒绝调用。平台运营方在审核阶段会检查权限声明是否合理,如果发现申请了和业务无关的权限,会要求商户修改。
用户每次调用敏感权限前,会弹出授权提示,明确告知用户这个操作会用到什么数据。用户拒绝授权,小程序就不能调用对应的能力。
5.3 运行时行为审计
安全沙箱在运行时记录每个小程序的API调用日志,包括某个小程序在某个时间段调用了哪些接口、有没有异常的数据读写行为、崩溃和错误的详细记录。
六、常见问题
问题一:如何降低二次开发成本
商户最关心的就是入驻难度,毕竟很多团队的开发能力不够强;
目前做法是,优先接入已有微信小程序的商户,微信里的小程序可以直接在平台运行,商户不需要改一行代码。通过官方提供的接入文档,商户的技术人员对照文档做一个包体提交和配置,从提交到上线一般两三天能完成。
对于没有微信小程序、但有开发能力想新开发的商户,建议直接用微信小程序的开发工具链,不需要学习新的框架,开发完成后可以同时提交到微信和私有化小程序开发平台,一套代码两边用。
对于没有开发能力的个体工商户,平台上提供小程序模板工具,可以通过配置的方式快速生成一个基本的小程序,不需要写代码。模板覆盖餐饮、民宿、家政等几个本地高频场景。
问题二:如何进行热更新
政务融媒体类APP,对内容发布有一定合规要求,不能像微信小程序那样随时随意更新。每次更新小程序包,平台运营方要先审核,审核通过才能发布。
整个流程是这样的:商户在管理后台提交小程序更新申请,平台运营方审核更新内容,确认没问题之后在后台发布,用户下次打开小程序时SDK自动拉取最新包,不需要重新下载APP。
这个流程从提交到全量生效,通常在一到两天内。如果审核过程中发现有问题,会打回给商户修改,所以商户在提交之前做好自测,能节省不少来回时间。
如果遇到紧急情况,比如商户发现小程序有严重bug需要立即修复,支持运营方后台直接操作紧急回滚,同时通知商户尽快修改后重新提交审核。
问题三:如何打通账号体系
账号体系是第三方入驻场景里比较复杂的问题。商户入驻之后,用户在某个小程序里的行为记录归属于商户,不是平台方。同时,平台方也希望能识别用户在不同小程序里的身份,避免用户每次进不同小程序都要重新登录。
目前针对接入的商户,账号体系处理方式有三种。

- 微信授权登录。用户第一次使用某个小程序时,调起微信授权,获取昵称和头像,不需要再注册账号。这个方式体验最顺,但对商户来说,拿到的用户信息有限,不一定能满足精细化运营需求。
- 平台统一账号。通过建立了一套自有的账号体系,用户注册一次,访问所有小程序都复用这个身份。商户想获取用户手机号等更多信息,可以通过平台的统一授权接口获取。这个方式对平台方来说用户数据可控,但增加了用户的注册步骤,有一定流失风险。
- 商户自有会员系统对接。规模较大的商户,比如连锁餐饮、区域医院,他们有自己的会员体系,希望能和自有平台打通,实现会员积分、优惠等能力的互通。这个需要单独对接,技术成本相对高一些,目前只接了几个重点合作商户。
对于大多数本地生活服务类小程序,微信授权登录是最低成本的接入方式,用户的接受度也比较高。自有会员系统对接作为增值服务,先让商户跑起来更重要。
感兴趣的话可以在首页注册,试用体验更多功能