R4.04.2mini-program host constraints设计

小程序与超级应用内的规范约束

别名: 小程序 · 超级应用 · 宿主 · 胶囊按钮

概念解释

微信、支付宝、抖音里的小程序不是完整的独立应用,而是寄住在超级应用里的客人。宿主拥有窗口壳:右上角胶囊(更多、关闭)、分享、转发、支付和登录入口。客人跑在宿主划定的页面栈、接口白名单和生命周期里——可被宿主随时回收,不能替换胶囊,也不能绕过宿主去调起自己的支付页或系统分享。这些是架构上的平台要求,不是客人自己的视觉偏好。

它处理的是「客人相对宿主少了哪些主权」,不是国内平台和国际平台在发现方式、扫码、聊天里办服务等方面的对照。把小程序当成能全屏接管、能自定义导航栏到与宿主对打的原生应用来设计,会在真机上被宿主裁掉。

机制

主权被切成两层。窗口级的关闭、更多菜单、标题区和状态栏 overlapping 的那一条带,由宿主绘制和命中;客人只在剩下的内容区排版。分享和转发走宿主面板,是因为传播发生在宿主的社交图里,客人没有自己的好友关系链可写。登录和支付走宿主接口,是因为凭证和资金账户在宿主侧——客人拿到的是令牌和结果码,不是用户密码,也不是银行卡号。

页面栈深度、后台存活时间和可调用的设备能力被宿主设上限,是为了让超级应用本身仍像一个能被系统调度的进程,而不是被客人拖成常驻操作系统。客人用自己的导航栏去「盖住」胶囊,或在页面里画一个假的关闭按钮,命中测试仍落在宿主控件上,用户按到的是宿主的关闭而不是客人想做的返回。生命周期上,宿主可以在客人不可见时销毁它:本地未通过宿主存储接口写下的状态,回来时不在了。

边界

少数小程序会以半屏、直播间浮层或扫码即用的瞬时形态出现,页面栈几乎不存在,约束仍在:胶囊或宿主关闭方式还是出口。独立 App 里嵌的 H5 不是小程序,不受胶囊模型约束,但也不自动获得宿主的支付和关系链。不同宿主(微信、支付宝、抖音)的接口白名单和分享面板不一样,不能把在一个宿主里被允许的能力抄到另一个宿主还假设能过审。桌面端超级应用的小程序窗口可以更接近独立窗,但账号和支付仍走宿主,不能因此当成完整应用去要系统级权限。

怎么落地

  • 把导航、关闭和分享当成宿主壳的一部分来排版:为胶囊留出不可占用的右上区域,主操作放在内容区,不要自绘一个会和胶囊抢点击的关闭。
  • 登录、支付、分享只走宿主提供的接口和面板;需要的用户信息按宿主的授权范围申请,不要在客人页里再做一套账号密码表。
  • 把关键状态写进宿主允许的存储,并按「随时会被销毁」来设计恢复,而不是假设后台常驻。
  • 验证:在真机宿主里打开小程序,点胶囊的更多和关闭、走一次宿主分享和一次宿主支付(或沙箱),再把小程序切到后台足够久后回来。任何自绘关闭无效、分享面板不是宿主的、支付被拦、或回来后草稿丢失,都说明客人把宿主主权当成了自己的。

延伸

  • 同组R4.04.1 分布式与多设备流转的交互模型 · R4.04.3 与国际平台惯例的差异点 · R4.04.4 一次开发多端部署要求布局按能力而非屏幕描述 · R4.04.5 服务卡片把功能前置到桌面层 · R4.04.6 系统统一承接账号与支付改变了流程边界
  • 相邻R4.06 平台惯例与品牌一致性的冲突 · R4.07 应用商店审核
  • 站内检索mini-program · super-app · host chrome · capsule button

同组卡片

快捷操作

分享

分享当前页面

ios_share

https://hci.top/zh/handbook/R4.04.2