直播列表(uni-app 客户端)

最近更新时间:2025-10-21 10:12:51

我的收藏
本文将指导您如何快速集成直播列表页,体验查看直播列表以及预览直播间信息功能。

功能预览



直播列表页接入

步骤1:集成核心文件

已集成核心文件请忽略,已经按照 代码集成指引 将 TUILiveKit 的 pagesuni_modules等核心文件拷贝到了您的项目中。

步骤2:完成登录

已登录请忽略该步骤,您的应用已经调用了 登录接口 并成功登录。这是使用所有功能的基础

步骤3:制作并使用自定义基座

已制作自定义基座请忽略,由于直播功能依赖原生插件,您必须在 HBuilderX 中为您的项目制作并使用自定义调试基座来运行。

步骤4:注册直播列表页面

现在,您需要在 pages.json 文件中告诉您的应用,这个新页面是存在的。
打开您项目根目录下的 pages.json 文件,在 "pages" 数组中,添加以下对象来注册直播列表页。
{
"pages": [
// ... 您项目已有的其他页面配置
{
"path": "pages/livelist/index",
"style": {
"navigationBarTitleText": "在线直播"
}
},
]
// ... 其他配置
}


步骤5:跳转直播列表页面

在您需要展示直播列表的地方(具体由您的业务决定,在其点击事件里执行),调用 uni.navigateTouni.redirectTo 方法,即可进入直播列表页面
// 示例:在一个按钮的点击事件中
function startBroadcast() {
uni.redirectTo({
url: '/pages/livelist/index', // URL 对应 pages.json 中配置的 path
});
}

定制您的 UI

根据上述功能展示图,我们也支持您根据项目需求对直播列表页面进行 UI 定制能力。主要可供定制的能力如下表所示。
类别
功能
描述
直播间列表
自定义直播间列表区域展示
支持:
直播间信息文字调整大小、字体、颜色
修改每行展示直播间数量

直播间信息文字调整大小、字体、颜色

uniapp 官方对 nvue 页面限制字体的大小和颜色只能在 text 标签上设置,对于您想修改的文字,直接修改其 css 样式即可,下方示例以 “直播间名称” 为例
<text class="live-title" :lines="1">{{ live.liveName }}</text>
.live-title {
font-size: 28rpx;
font-weight: 500;
color: #fff;
margin-bottom: 8rpx;
lines: 1;
max-width: 400rpx;
overflow: hidden;
text-overflow: ellipsis;
}
修改其 css 属性:
<text class="live-title" :lines="1">{{ live.liveName }}</text>
.live-title {
font-size: 35rpx;
font-weight: 500;
color: pink;
margin-bottom: 8rpx;
lines: 1;
max-width: 400rpx;
overflow: hidden;
text-overflow: ellipsis;
}
最终效果如下:


修改每行展示直播间数量

通过设置每行展示的元素数量来修改每行展示的直播间数量:
<cell v-for="(row, rowIndex) in groupedLiveList" :key="`row-${rowIndex}-${row[0]?.liveId || 'empty'}`">
......
</cell>
const groupedLiveList = computed(() => {
const groups = [];
for (let i = 0; i < liveList.value.length; i += 2) {
const row = liveList.value.slice(i, i + 2); // 将直播列表分组,每行两个元素
groups.push(row);
}
return groups;
});
修改每行展示的直播间数量,示例为每行展示一个:
<cell v-for="(row, rowIndex) in groupedLiveList" :key="`row-${rowIndex}-${row[0]?.liveId || 'empty'}`">
......
</cell>

const groupedLiveList = computed(() => {
const groups = [];
for (let i = 0; i < liveList.value.length; i += 1) {
const row = liveList.value.slice(i, i + 1); // 将直播列表分组,每行一个元素
groups.push(row);
}
return groups;
});
最终效果:


指定直播间

由于涉及到直播列表到直播间的跳转逻辑,请确保您已经集成了观众观看页若您有自己的业务逻辑处理,请确保最终跳转到观众观看页面时,携带上您想观看的直播间 liveId,示例代码如下。
// 在您自己的业务逻辑中增加如下跳转逻辑
const handleJoinLive = (live) => {
uni.$liveId = live.liveId;
uni.redirectTo({ url: `/pages/audience/index?liveId=${live.liveId}`});
};

其他参考文档