同一份内容要分发到 iOS 音频端、iOS、安卓端、H5 与跨端,如果各端各写一套内容逻辑,口径必然分叉
项目概览
项目背景
这是一套影音内容的多端产品矩阵,共 13 个仓库,覆盖 2022 至 2026 年。终端形态包括 iOS 音频端(Swift)、iOS 端(Objective-C)、安卓端、H5 与运营端(Vue,存在多个并行版本),以及 Flutter 跨端应用(Dart),后端接口服务用 Java 编写。多个产品线接入同一套内容接口。这些仓库不是同一时间起步的,产品线之间有先后,也各自受过当时技术选型的影响。
客户当时的状态
影音内容类产品的麻烦通常不在某一个端,而在于端多之后的一致性。用户今天在手机上听到第 20 分钟,明天换设备打开,如果进度接不上,体验就断了。内容侧同理:运营在后台调整了推荐位与播放列表,如果各端各自缓存、各自解释数据,同一份内容在不同端看到的结果就会不一样。另外,历史上积累下来的多个前端版本并行存在,改动分散在几套代码里,维护成本被放大,也没有人能一口说清影响范围。还有一个现实约束:内容运营的节奏比研发快,运营做一次调整如果要各端都改代码,排期就永远排不完。
我们的做法与取舍
第一个取舍是把内容接口收敛成一套。各端只做展示差异,不做内容规则。代价是接口层设计要求更高、联调更频繁,收益是新增一个端不必重写内容逻辑。
第二个取舍是把收听进度与播放列表放到服务端维护。这比各端本地存储复杂,也需要处理冲突,但用户换设备之后体验才是连续的——这一点不值得为了省事而让步。
第三个取舍是接受多版本前端并存,先收敛接口而不是立即合并代码。合并会带来大量回归风险,短期内保留并行、用统一接口约束各版本,是更稳妥的路径。
系统怎么承载这条链路
服务层承载内容数据、收听进度与播放列表状态;iOS 音频端、iOS 端、安卓端、H5 与 Flutter 跨端各自接入同一套接口;运营端负责推荐位与播放列表编排,内容调整通过接口一次性下发,而不是逐端配置。
交付状态与边界
代码处于持续维护状态,最近一次提交在 2026 年(具体月份未披露)。需要说清楚的是边界:内容版权与授权由内容方按协议提供,平台不承担版权审核责任;音视频源文件的存储与分发以既有或签约方案为准;第三方渠道的账号与结算规则按其平台规则执行,系统不改写这些规则。各仓库活跃度并不一致,我们按实际情况说明。
项目信息
某音视频内容平台项目
文化与传媒
未披露
Swift(iOS 音频端)/ Objective-C(iOS)/ Java(安卓端与接口服务)/ Vue(H5 与运营端,多版本)/ Dart(Flutter 跨端)
影音内容多端产品矩阵
CHALLENGES
客户当时面对的现实
收听进度与播放列表要跨端接续,用户换设备后状态必须接得上
多个产品线共用同一套内容接口,接口一改会同时影响所有端
H5 与运营端存在多个 Vue 版本并行,版本管理本身占用维护成本
CAPABILITIES
我们交付的能力
端一多,一致性就成了主要问题
内容多端分发
iOS 音频端(Swift)、iOS 端(Objective-C)、安卓端、H5 与 Flutter 跨端各自有对应实现,共用同一套内容接口。
进度与列表同步
收听进度与播放列表状态由服务端维护,换设备后可以接续上次的位置。
推荐位运营
运营端负责推荐位与播放列表的编排,改动通过接口下发给各端,而不是逐端配置。
统一内容接口
多个产品线接入同一套内容接口,内容规则只有一份,不随端和产品线扩散。
SCOPE
交付范围
以下范围按本项目实际交付内容与边界整理,不属于这次范围的部分一并列出。
已交付
- iOS 音频端(Swift)与 iOS 端(Objective-C)
- 安卓端与后端接口服务(Java)
- H5 与运营端(Vue,多个版本并行)
- Flutter 跨端应用(Dart)
- 内容接口、收听进度与播放列表同步机制
不在本次范围
- 内容版权与授权:内容由内容方按协议提供,平台不承担版权审核责任
- 音视频源文件的存储与分发:以既有或签约的存储与分发方案为准
- 第三方渠道的账号与结算规则:按其平台规则执行,不由系统改写
ARCHITECTURE
分层技术架构
公开口径归纳为三层:接入层是 iOS、安卓、H5 与跨端四类终端;服务层是 Java 接口服务,承载内容数据与用户状态;运营层是 Vue 运营端,负责推荐位与播放列表编排。
多端接入层
覆盖用户实际使用的各类设备
内容服务层
让内容规则与用户状态只有一份
运营层
内容调整一次下发,各端同步生效
DELIVERY
交付过程
分阶段推进,每个阶段都有可验收的产出,客户在早期就能看到实际效果。
端与内容边界梳理
明确要覆盖哪些端、内容数据由谁维护、状态如何同步。
接口服务与内容模型
搭建统一内容接口,确定内容与播放列表的数据结构。
多端落地
iOS、安卓、H5、运营端与跨端应用分别接入同一套接口。
同步与运营能力
收听进度跨端同步、推荐位与播放列表运营能力落地。
FACTS
可核验的交付事实
以下内容来自本项目实际交付物;未经验证的指标不予展示。
覆盖多条内容产品线
Swift / Objective-C / Java / Vue / Dart
仓库覆盖的年份跨度
TRANSFER
这套做法适不适合你
案例的用处不是证明"我们做过",而是让你判断"在我们这种条件下能不能做成"。下面三句是我们对这一单的判断,写下来供你对照自己的情况。
适合什么情况
适合内容要覆盖多类终端、且用户会在设备之间切换的产品。
什么情况下别照搬
若只做一个端、用户不会跨设备使用,做统一内容接口与状态同步属于过度设计。
如果要试,第一步做什么
先把内容数据与用户状态的接口边界画出来,再决定各端做什么。
RELATED SERVICES
相关服务
从实际业务问题出发,查看对应服务的适用场景、交付物与不含项;具体范围仍需单独确认。
FAQ
常见问题
以下是同类项目沟通中出现频率最高的问题,答案就是我们实际的做法。
多端产品最难的为什么不是界面?
多个产品线共用一套内容接口,会不会互相拖累?
H5 和运营端为什么会有多个版本?
这套东西现在还在维护吗?
做多端内容产品第一步做什么?
本页最后更新:2026年9月24日