@tencentcloud/sdk-mcp 1.7.3 → 1.7.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +23 -0
- package/README.md +22 -23
- package/knowledge/path-meta.js +23 -1
- package/package.json +1 -1
- package/resource/index/manifest.json +1 -1
- package/resource/integration/callkit/preset/android/integration.md +4 -0
- package/resource/integration/callkit/preset/flutter/integration.md +8 -4
- package/resource/integration/callkit/preset/ios/integration.md +16 -15
- package/resource/integration/callkit/preset/react/integration.md +2 -2
- package/resource/integration/callkit/preset/vue/integration.md +9 -12
- package/resource/integration/chat/preset/android/integration.md +5 -147
- package/resource/integration/chat/preset/flutter/integration.md +22 -130
- package/resource/integration/chat/preset/ios/integration.md +12 -279
- package/resource/integration/chat/preset/react/integration.md +27 -1
- package/resource/integration/chat/preset/uni-app/integration.md +5 -1
- package/resource/integration/chat/preset/vue/integration.md +21 -31
- package/resource/integration/livekit/preset/live/android/live-host-integration.md +4 -0
- package/resource/integration/livekit/preset/live/ios/live-host-integration.md +4 -0
- package/resource/integration/livekit/preset/live/ios/prepare-integration.md +3 -3
- package/resource/integration/livekit/preset/live/vue/live-list-integration.md +3 -4
- package/resource/integration/livekit/preset/live/vue/live-player-desk-integration.md +0 -1
- package/resource/integration/livekit/preset/live/vue/live-player-h5-integration.md +0 -1
- package/resource/integration/livekit/preset/live/vue/live-pusher-integration.md +4 -9
- package/resource/integration/roomkit/preset/vue/integration.md +152 -652
- package/resource/knowledge/callkit/best-practice/android/video-chat-dating.md +490 -0
- package/resource/knowledge/callkit/best-practice/flutter/android-keep-call-alive-background.md +79 -0
- package/resource/knowledge/callkit/best-practice/flutter/background-incoming-call-no-notification.md +99 -0
- package/resource/knowledge/callkit/best-practice/flutter/ios-keep-call-alive-background.md +93 -0
- package/resource/knowledge/callkit/best-practice/flutter/ios-startup-crash-version-voip.md +68 -0
- package/resource/knowledge/callkit/core-sdk/android/answer-call.md +2 -2
- package/resource/knowledge/callkit/core-sdk/android/make-call.md +5 -5
- package/resource/knowledge/callkit/core-sdk/flutter/answer-call.md +7 -7
- package/resource/knowledge/callkit/core-sdk/flutter/make-call.md +10 -10
- package/resource/knowledge/callkit/core-sdk/flutter/offline-push.md +1 -1
- package/resource/knowledge/callkit/core-sdk/ios/answer-call.md +18 -16
- package/resource/knowledge/callkit/core-sdk/ios/make-call.md +16 -14
- package/resource/knowledge/callkit/core-sdk/miniprogram/call-engine.md +19 -19
- package/resource/knowledge/callkit/core-sdk/miniprogram/call-event.md +16 -16
- package/resource/knowledge/callkit/core-sdk/uni-app/answer-call.md +2 -86
- package/resource/knowledge/callkit/core-sdk/uni-app/make-call.md +2 -104
- package/resource/knowledge/callkit/core-sdk/web/call-event.md +2 -2
- package/resource/knowledge/callkit/faq/android.md +4 -4
- package/resource/knowledge/callkit/faq/common.md +4 -4
- package/resource/knowledge/callkit/faq/error-code.md +62 -36
- package/resource/knowledge/callkit/faq/uniapp-miniprogram.md +1 -1
- package/resource/knowledge/callkit/preset/android/api.md +10 -10
- package/resource/knowledge/callkit/preset/harmonyos/api.md +362 -0
- package/resource/knowledge/callkit/preset/harmonyos/integration.md +322 -0
- package/resource/knowledge/callkit/preset/ios/api.md +9 -9
- package/resource/knowledge/callkit/preset/miniprogram/api-uniapp.md +293 -0
- package/resource/knowledge/callkit/preset/miniprogram/api.md +19 -19
- package/resource/knowledge/callkit/preset/miniprogram/integration.md +292 -0
- package/resource/knowledge/callkit/preset/miniprogram/uniapp-integration.md +521 -0
- package/resource/knowledge/callkit/preset/uni-app/api.md +49 -0
- package/resource/knowledge/callkit/preset/uni-app/integration.md +353 -0
- package/resource/knowledge/chat/preset/android-view/integration.md +54 -102
- package/resource/knowledge/chat/preset/ios/features/language.md +5 -5
- package/resource/knowledge/chat/preset/ios-uikit/integration.md +194 -926
- package/resource/knowledge/chat/preset/react/features/search.md +9 -214
- package/resource/knowledge/chat/preset/react/h5/integration.md +965 -0
- package/resource/knowledge/chat/preset/vue/features/chat-header.md +0 -36
- package/resource/knowledge/chat/preset/vue/features/contact-list.md +0 -34
- package/resource/knowledge/chat/preset/vue/features/conversation-list.md +0 -39
- package/resource/knowledge/chat/preset/vue/features/conversation-preview.md +0 -74
- package/resource/knowledge/chat/preset/vue/features/message-input.md +4 -4
- package/resource/knowledge/chat/preset/vue/features/search.md +9 -790
- package/resource/knowledge/chat/preset/vue/h5/integration.md +724 -0
- package/resource/knowledge/livekit/core-sdk/features/android/audience-list.md +3 -3
- package/resource/knowledge/livekit/core-sdk/features/android/live-list.md +3 -3
- package/resource/knowledge/livekit/core-sdk/features/flutter/audience-list.md +3 -3
- package/resource/knowledge/livekit/core-sdk/features/flutter/live-list.md +3 -3
- package/resource/knowledge/livekit/core-sdk/features/ios/audience-list.md +3 -3
- package/resource/knowledge/livekit/core-sdk/features/ios/live-list.md +3 -3
- package/resource/knowledge/livekit/core-sdk/features/uni-app/audience-list.md +3 -3
- package/resource/knowledge/livekit/core-sdk/features/uni-app/live-list.md +3 -170
- package/resource/knowledge/livekit/core-sdk/live/android/co-guest-interaction.md +1 -1
- package/resource/knowledge/livekit/core-sdk/live/android/host-interaction.md +3 -3
- package/resource/knowledge/livekit/core-sdk/live/flutter/co-guest-interaction.md +1 -1
- package/resource/knowledge/livekit/core-sdk/live/flutter/host-interaction.md +3 -3
- package/resource/knowledge/livekit/core-sdk/live/flutter/integration.md +3 -3
- package/resource/knowledge/livekit/core-sdk/live/ios/co-guest-interaction.md +1 -1
- package/resource/knowledge/livekit/core-sdk/live/ios/host-interaction.md +3 -3
- package/resource/knowledge/livekit/core-sdk/live/ios/integration.md +2 -2
- package/resource/knowledge/livekit/core-sdk/live/uni-app/co-guest-interaction.md +13 -78
- package/resource/knowledge/livekit/core-sdk/live/uni-app/host-interaction.md +5 -70
- package/resource/knowledge/livekit/core-sdk/live/uni-app/integration.md +10 -10
- package/resource/knowledge/livekit/core-sdk/voice/android/co-guest-interaction.md +1 -1
- package/resource/knowledge/livekit/core-sdk/voice/android/host-interaction.md +4 -4
- package/resource/knowledge/livekit/core-sdk/voice/flutter/co-guest-interaction.md +1 -1
- package/resource/knowledge/livekit/core-sdk/voice/ios/co-guest-interaction.md +1 -1
- package/resource/knowledge/livekit/core-sdk/voice/ios/host-interaction.md +4 -4
- package/resource/knowledge/livekit/core-sdk/voice/uni-app/integration.md +7 -7
- package/resource/knowledge/livekit/preset/live/vue/features/barrage.md +1 -24
- package/resource/knowledge/livekit/preset/live/vue/features/live-audience-list.md +0 -3
- package/resource/knowledge/livekit/preset/live/vue/features/live-view.md +0 -5
- package/resource/knowledge/push/api-reference/harmonyos.md +9 -9
- package/resource/knowledge/push/api-reference/unity.md +10 -10
- package/resource/knowledge/push/api-reference/unreal-engine.md +11 -11
- package/resource/knowledge/push/config/donut.md +3 -3
- package/resource/knowledge/push/config/harmonyos.md +12 -12
- package/resource/knowledge/push/config/ios.md +2 -2
- package/resource/knowledge/push/integration/android.md +90 -1067
- package/resource/knowledge/push/integration/donut.md +11 -11
- package/resource/knowledge/push/integration/flutter.md +38 -24
- package/resource/knowledge/push/integration/harmonyos.md +1 -11
- package/resource/knowledge/push/integration/ios.md +29 -40
- package/resource/knowledge/push/integration/react-native.md +1 -1
- package/resource/knowledge/push/integration/uni-app.md +1 -1
- package/resource/knowledge/push/integration/unity.md +4 -4
- package/resource/knowledge/push/integration/unreal-engine.md +9 -9
- package/resource/knowledge/roomkit/core-sdk/android/room-state.md +6 -6
- package/resource/knowledge/roomkit/core-sdk/android/schedule-room.md +13 -13
- package/resource/knowledge/roomkit/core-sdk/flutter/room-state.md +5 -5
- package/resource/knowledge/roomkit/core-sdk/flutter/schedule-room.md +4 -4
- package/resource/knowledge/roomkit/core-sdk/ios/room-state.md +6 -6
- package/resource/knowledge/roomkit/core-sdk/ios/schedule-room.md +4 -4
- package/resource/knowledge/roomkit/core-sdk/vue/device-detection.md +0 -9
- package/resource/knowledge/roomkit/core-sdk/vue/free-beauty-panel.md +0 -9
- package/resource/knowledge/roomkit/core-sdk/vue/recording.md +3 -3
- package/resource/knowledge/roomkit/core-sdk/vue/room-chat.md +0 -3
- package/resource/knowledge/roomkit/core-sdk/vue/room-view.md +0 -16
- package/resource/knowledge/roomkit/core-sdk/vue/schedule-room.md +0 -3
- package/resource/knowledge/roomkit/core-sdk/vue/virtual-background.md +3 -6
- package/resource/knowledge/roomkit/core-sdk/vue/whiteboard-annotation.md +0 -15
- package/resource/knowledge/roomkit/preset/android/integration.md +5 -202
- package/resource/knowledge/roomkit/preset/flutter/integration.md +17 -13
- package/resource/knowledge/roomkit/preset/harmonyos/integration.md +10 -2
- package/resource/knowledge/roomkit/preset/ios/integration.md +7 -204
- package/resource/knowledge/roomkit/preset/react/integration.md +0 -202
- package/resource/knowledge/roomkit/preset/uniapp-app/integration.md +244 -500
- package/resource/knowledge/rtcengine/web/plugin/42-advanced-realtime-transcriber.md +25 -6
- package/server.js +1 -1
- package/utils/preflight-route.js +203 -185
- package/utils/report-cls-client.js +1 -1
- package/utils/report-es-client.js +1 -1
|
@@ -261,11 +261,11 @@ class LiveRoomManager(
|
|
|
261
261
|
|
|
262
262
|
- **更新机制与频率控制:**
|
|
263
263
|
|
|
264
|
-
|
|
264
|
+
- 无论是即时触发还是延迟触发,所有的人数变更通知都是以消息的形式在房间内广播的。
|
|
265
265
|
|
|
266
|
-
|
|
266
|
+
- 房间内每秒的消息总量有上限,单房间消息频控是**每秒 40 条消息**。
|
|
267
267
|
|
|
268
|
-
|
|
268
|
+
- **关键点: 在"弹幕风暴"或礼物刷屏等消息流量极高的场景下,如果房间内的消息速率超过了 40条/秒 的阈值,为了保证核心消息(例如弹幕)的送达,人数变更的消息可能会被频控策略丢弃**。
|
|
269
269
|
|
|
270
270
|
**这对开发者意味着什么?**
|
|
271
271
|
|
|
@@ -514,10 +514,10 @@ class YourAudienceActivity : AppCompatActivity() {
|
|
|
514
514
|
|
|
515
515
|
- **数量与大小限制**:
|
|
516
516
|
|
|
517
|
-
|
|
517
|
+
- 单个房间最多支持 **10** 个 key。
|
|
518
518
|
|
|
519
|
-
|
|
519
|
+
- 每个 key 的长度不超过 **50 字节**,每个 value 的长度不超过 **2KB**。
|
|
520
520
|
|
|
521
|
-
|
|
521
|
+
- 单个房间所有 value 的总大小不超过 **16KB**。
|
|
522
522
|
|
|
523
523
|
- **冲突解决**: `metaData` 的更新机制是"后来者覆盖"。如果多个管理员在短时间内修改同一个 key,最后一次的修改会生效。建议在业务设计上避免多人同时修改同一个关键信息。
|
|
@@ -251,11 +251,11 @@ class LiveRoomManager {
|
|
|
251
251
|
|
|
252
252
|
- **更新机制与频率控制:**
|
|
253
253
|
|
|
254
|
-
|
|
254
|
+
- 无论是即时触发还是延迟触发,所有的人数变更通知都是以消息的形式在房间内广播的。
|
|
255
255
|
|
|
256
|
-
|
|
256
|
+
- 房间内每秒的消息总量有上限,单房间消息频控是**每秒 40 条消息**。
|
|
257
257
|
|
|
258
|
-
|
|
258
|
+
- **关键点:**在"弹幕风暴"或礼物刷屏等消息流量极高的场景下,如果房间内的消息速率超过了 40条/秒 的阈值,为了保证核心消息(例如弹幕)的送达,**人数变更的消息可能会被频控策略丢弃**。
|
|
259
259
|
|
|
260
260
|
**这对开发者意味着什么?**
|
|
261
261
|
|
|
@@ -718,10 +718,10 @@ class _ProductCardWidgetState extends State<ProductCardWidget> {
|
|
|
718
718
|
|
|
719
719
|
- **数量与大小限制:**
|
|
720
720
|
|
|
721
|
-
|
|
721
|
+
- 单个房间最多支持 **10** 个 key。
|
|
722
722
|
|
|
723
|
-
|
|
723
|
+
- 每个 key 的长度不超过 **50 字节**,每个 value 的长度不超过 **2KB**。
|
|
724
724
|
|
|
725
|
-
|
|
725
|
+
- 单个房间所有 value 的总大小不超过 **16KB**。
|
|
726
726
|
|
|
727
727
|
- **冲突解决**:`metaData` 的更新机制是"后来者覆盖"。如果多个管理员在短时间内修改同一个 key,最后一次的修改会生效。建议在业务设计上避免多人同时修改同一个关键信息。
|
|
@@ -254,11 +254,11 @@ class LiveRoomManager {
|
|
|
254
254
|
|
|
255
255
|
- **更新机制与频率控制:**
|
|
256
256
|
|
|
257
|
-
|
|
257
|
+
- 无论是即时触发还是延迟触发,所有的人数变更通知都是以消息的形式在房间内广播的。
|
|
258
258
|
|
|
259
|
-
|
|
259
|
+
- 房间内每秒的消息总量有上限,单房间消息频控是**每秒 40 条消息**。
|
|
260
260
|
|
|
261
|
-
|
|
261
|
+
- **关键点:**在“弹幕风暴”或礼物刷屏等消息流量极高的场景下,如果房间内的消息速率超过了 40条/秒 的阈值,为了保证核心消息(例如弹幕)的送达,**人数变更的消息可能会被频控策略丢弃**。
|
|
262
262
|
|
|
263
263
|
**这对开发者意味着什么?**
|
|
264
264
|
|
|
@@ -395,10 +395,10 @@ class YourAudienceViewController: UIViewController {
|
|
|
395
395
|
|
|
396
396
|
- **数量与大小限制**:
|
|
397
397
|
|
|
398
|
-
|
|
398
|
+
- 单个房间最多支持 **10** 个 key。
|
|
399
399
|
|
|
400
|
-
|
|
400
|
+
- 每个 key 的长度不超过 **50 字节**,每个 value 的长度不超过 **2KB**。
|
|
401
401
|
|
|
402
|
-
|
|
402
|
+
- 单个房间所有 value 的总大小不超过 **16KB**。
|
|
403
403
|
|
|
404
404
|
- **冲突解决**: `metaData` 的更新机制是“后来者覆盖”。如果多个管理员在短时间内修改同一个 key,最后一次的修改会生效。建议在业务设计上避免多人同时修改同一个关键信息。
|
|
@@ -206,11 +206,11 @@ onMounted(() => {
|
|
|
206
206
|
|
|
207
207
|
- **更新机制与频率控制:**
|
|
208
208
|
|
|
209
|
-
|
|
209
|
+
- 无论是即时触发还是延迟触发,所有的人数变更通知都是以消息的形式在房间内广播的。
|
|
210
210
|
|
|
211
|
-
|
|
211
|
+
- 房间内每秒的消息总量有上限,单房间消息频控是**每秒 40 条消息**。
|
|
212
212
|
|
|
213
|
-
|
|
213
|
+
- **关键点:**在“弹幕风暴”或礼物刷屏等消息流量极高的场景下,如果房间内的消息速率超过了 40条/秒 的阈值,为了保证核心消息(例如弹幕)的送达,**人数变更的消息可能会被频控策略丢弃**。
|
|
214
214
|
|
|
215
215
|
**这对开发者意味着什么?**
|
|
216
216
|
|
|
@@ -78,68 +78,6 @@ const handleJoinLive = (live: any) => {
|
|
|
78
78
|
|
|
79
79
|
</script>
|
|
80
80
|
|
|
81
|
-
<style scoped>
|
|
82
|
-
.live-list {
|
|
83
|
-
flex: 1;
|
|
84
|
-
background: #fff;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
.list {
|
|
88
|
-
width: 100%;
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
.row {
|
|
92
|
-
flex-direction: row;
|
|
93
|
-
padding: 0 32rpx 16rpx;
|
|
94
|
-
justify-content: space-between;
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
.card {
|
|
98
|
-
width: 48%;
|
|
99
|
-
height: 320rpx;
|
|
100
|
-
background: #f5f5f5;
|
|
101
|
-
border-radius: 12rpx;
|
|
102
|
-
overflow: hidden;
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
.cover {
|
|
106
|
-
width: 100%;
|
|
107
|
-
height: 220rpx;
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
.info {
|
|
111
|
-
flex: 1;
|
|
112
|
-
padding: 12rpx;
|
|
113
|
-
flex-direction: column;
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
.title {
|
|
117
|
-
font-size: 26rpx;
|
|
118
|
-
font-weight: 600;
|
|
119
|
-
color: #000;
|
|
120
|
-
lines: 1;
|
|
121
|
-
text-overflow: ellipsis;
|
|
122
|
-
overflow: hidden;
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
.owner {
|
|
126
|
-
font-size: 22rpx;
|
|
127
|
-
color: #666;
|
|
128
|
-
margin-top: 4rpx;
|
|
129
|
-
lines: 1;
|
|
130
|
-
text-overflow: ellipsis;
|
|
131
|
-
overflow: hidden;
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
.count {
|
|
135
|
-
font-size: 20rpx;
|
|
136
|
-
color: #999;
|
|
137
|
-
margin-top: 4rpx;
|
|
138
|
-
lines: 1;
|
|
139
|
-
text-overflow: ellipsis;
|
|
140
|
-
overflow: hidden;
|
|
141
|
-
}
|
|
142
|
-
</style>
|
|
143
81
|
```
|
|
144
82
|
|
|
145
83
|
**LiveInfo 参数说明**
|
|
@@ -286,111 +224,6 @@ const handleJoinLive = (live: any) => {
|
|
|
286
224
|
};
|
|
287
225
|
</script>
|
|
288
226
|
|
|
289
|
-
<style scoped>
|
|
290
|
-
.live-list {
|
|
291
|
-
flex: 1;
|
|
292
|
-
background: #fff;
|
|
293
|
-
}
|
|
294
|
-
|
|
295
|
-
/* 分类标签栏 */
|
|
296
|
-
.category-tabs {
|
|
297
|
-
flex-direction: row;
|
|
298
|
-
padding: 16rpx 32rpx;
|
|
299
|
-
background: #f9f9f9;
|
|
300
|
-
border-bottom: 1rpx solid #e8e8e8;
|
|
301
|
-
overflow-x: auto;
|
|
302
|
-
}
|
|
303
|
-
|
|
304
|
-
.tab {
|
|
305
|
-
padding: 8rpx 20rpx;
|
|
306
|
-
margin-right: 12rpx;
|
|
307
|
-
background: #fff;
|
|
308
|
-
border: 1rpx solid #e0e0e0;
|
|
309
|
-
border-radius: 20rpx;
|
|
310
|
-
font-size: 24rpx;
|
|
311
|
-
color: #666;
|
|
312
|
-
white-space: nowrap;
|
|
313
|
-
}
|
|
314
|
-
|
|
315
|
-
.tab.active {
|
|
316
|
-
background: #0468FC;
|
|
317
|
-
border-color: #0468FC;
|
|
318
|
-
color: #fff;
|
|
319
|
-
}
|
|
320
|
-
|
|
321
|
-
.list {
|
|
322
|
-
width: 100%;
|
|
323
|
-
}
|
|
324
|
-
|
|
325
|
-
.row {
|
|
326
|
-
flex-direction: row;
|
|
327
|
-
padding: 0 32rpx 16rpx;
|
|
328
|
-
justify-content: space-between;
|
|
329
|
-
}
|
|
330
|
-
|
|
331
|
-
.card {
|
|
332
|
-
width: 48%;
|
|
333
|
-
height: 320rpx;
|
|
334
|
-
background: #f5f5f5;
|
|
335
|
-
border-radius: 12rpx;
|
|
336
|
-
overflow: hidden;
|
|
337
|
-
position: relative;
|
|
338
|
-
}
|
|
339
|
-
|
|
340
|
-
.cover {
|
|
341
|
-
width: 100%;
|
|
342
|
-
height: 220rpx;
|
|
343
|
-
}
|
|
344
|
-
|
|
345
|
-
/* 分类徽章 */
|
|
346
|
-
.category-badge {
|
|
347
|
-
position: absolute;
|
|
348
|
-
top: 8rpx;
|
|
349
|
-
left: 8rpx;
|
|
350
|
-
background: rgba(4, 104, 252, 0.9);
|
|
351
|
-
border-radius: 4rpx;
|
|
352
|
-
padding: 4rpx 8rpx;
|
|
353
|
-
}
|
|
354
|
-
|
|
355
|
-
.badge-text {
|
|
356
|
-
font-size: 18rpx;
|
|
357
|
-
color: #fff;
|
|
358
|
-
font-weight: 600;
|
|
359
|
-
}
|
|
360
|
-
|
|
361
|
-
.info {
|
|
362
|
-
flex: 1;
|
|
363
|
-
padding: 12rpx;
|
|
364
|
-
flex-direction: column;
|
|
365
|
-
}
|
|
366
|
-
|
|
367
|
-
.title {
|
|
368
|
-
font-size: 26rpx;
|
|
369
|
-
font-weight: 600;
|
|
370
|
-
color: #000;
|
|
371
|
-
lines: 1;
|
|
372
|
-
text-overflow: ellipsis;
|
|
373
|
-
overflow: hidden;
|
|
374
|
-
}
|
|
375
|
-
|
|
376
|
-
.owner {
|
|
377
|
-
font-size: 22rpx;
|
|
378
|
-
color: #666;
|
|
379
|
-
margin-top: 4rpx;
|
|
380
|
-
lines: 1;
|
|
381
|
-
text-overflow: ellipsis;
|
|
382
|
-
overflow: hidden;
|
|
383
|
-
}
|
|
384
|
-
|
|
385
|
-
.count {
|
|
386
|
-
font-size: 20rpx;
|
|
387
|
-
color: #999;
|
|
388
|
-
margin-top: 4rpx;
|
|
389
|
-
lines: 1;
|
|
390
|
-
text-overflow: ellipsis;
|
|
391
|
-
overflow: hidden;
|
|
392
|
-
}
|
|
393
|
-
</style>
|
|
394
227
|
```
|
|
395
228
|
|
|
396
229
|
### 场景二:实现电商直播的商品信息展示
|
|
@@ -453,10 +286,10 @@ watch( currentLive, (newVal, oldVal) => {
|
|
|
453
286
|
|
|
454
287
|
- **数量与大小限制**:
|
|
455
288
|
|
|
456
|
-
|
|
289
|
+
- 单个房间最多支持 **10** 个 key。
|
|
457
290
|
|
|
458
|
-
|
|
291
|
+
- 每个 key 的长度不超过 **50 字节**,每个 value 的长度不超过 **2KB**。
|
|
459
292
|
|
|
460
|
-
|
|
293
|
+
- 单个房间所有 value 的总大小不超过 **16KB**。
|
|
461
294
|
|
|
462
295
|
- **冲突解决**: `metaData` 的更新机制是“后来者覆盖”。如果多个管理员在短时间内修改同一个 key,最后一次的修改会生效。建议在业务设计上避免多人同时修改同一个关键信息。
|
|
@@ -315,7 +315,7 @@
|
|
|
315
315
|
|
|
316
316
|
### 运行效果
|
|
317
317
|
|
|
318
|
-
当您集成以上功能实现后,请分别使用两个观众与主播进行连麦操作,观众 A 同时打开摄像头和麦克风,观众 B 只打开麦克风,运行效果如下,您可以参考下一章节 完善 UI 细节 来定制您想要的 UI 逻辑。
|
|
318
|
+
当您集成以上功能实现后,请分别使用两个观众与主播进行连麦操作,观众 A 同时打开摄像头和麦克风,观众 B 只打开麦克风,运行效果如下,您可以参考下一章节 [完善 UI 细节](#.E5.AE.8C.E5.96.84-ui-.E7.BB.86.E8.8A.82) 来定制您想要的 UI 逻辑。
|
|
319
319
|
|
|
320
320
|
## 完善 UI 细节
|
|
321
321
|
|
|
@@ -232,7 +232,7 @@
|
|
|
232
232
|
|
|
233
233
|
### 运行效果
|
|
234
234
|
|
|
235
|
-
当您集成以上功能实现后,请分别使用主播 A 和主播 B 进行对应操作,运行效果如下,您可以参考下一章节 完善 UI 细节 来定制您想要的 UI 逻辑。
|
|
235
|
+
当您集成以上功能实现后,请分别使用主播 A 和主播 B 进行对应操作,运行效果如下,您可以参考下一章节 [完善 UI 细节](#.E5.AE.8C.E5.96.84-ui-.E7.BB.86.E8.8A.82) 来定制您想要的 UI 逻辑。
|
|
236
236
|
|
|
237
237
|
## 完善 UI 细节
|
|
238
238
|
|
|
@@ -508,9 +508,9 @@
|
|
|
508
508
|
#### 关键流程说明
|
|
509
509
|
1. **获取 PK 状态**:
|
|
510
510
|
|
|
511
|
-
|
|
511
|
+
- 回调配置:您可以通过配置 PK 状态回调,由 LiveKit 后台在 PK 开始、结束时,主动通知您的系统 PK 状态。
|
|
512
512
|
|
|
513
|
-
|
|
513
|
+
- 主动查询:您的后台服务可主动调用 PK 状态查询 接口,随时查询当前 PK 状态。
|
|
514
514
|
|
|
515
515
|
2. **PK 分数计算**:您的后台服务根据业务规则(如上述示例),计算 PK 分数增量。
|
|
516
516
|
|
|
@@ -278,7 +278,7 @@
|
|
|
278
278
|
|
|
279
279
|
### 运行效果
|
|
280
280
|
|
|
281
|
-
当您集成以上功能实现后,请分别使用两个观众与主播进行连麦操作,观众 A 同时打开摄像头和麦克风,观众 B 只打开麦克风,运行效果如下,您可以参考下一章节 完善 UI 细节 来定制您想要的 UI 逻辑。
|
|
281
|
+
当您集成以上功能实现后,请分别使用两个观众与主播进行连麦操作,观众 A 同时打开摄像头和麦克风,观众 B 只打开麦克风,运行效果如下,您可以参考下一章节 [完善 UI 细节](#.E5.AE.8C.E5.96.84-ui-.E7.BB.86.E8.8A.82) 来定制您想要的 UI 逻辑。
|
|
282
282
|
|
|
283
283
|
## 完善 UI 细节
|
|
284
284
|
|
|
@@ -289,7 +289,7 @@
|
|
|
289
289
|
|
|
290
290
|
### 运行效果
|
|
291
291
|
|
|
292
|
-
当您集成以上功能实现后,请分别使用主播 A 和主播 B 进行对应操作,运行效果如下,您可以参考下一章节 完善 UI 细节 来定制 UI 逻辑。
|
|
292
|
+
当您集成以上功能实现后,请分别使用主播 A 和主播 B 进行对应操作,运行效果如下,您可以参考下一章节 [完善 UI 细节](#.E5.AE.8C.E5.96.84-ui-.E7.BB.86.E8.8A.82) 来定制 UI 逻辑。
|
|
293
293
|
|
|
294
294
|
## 完善 UI 细节
|
|
295
295
|
|
|
@@ -809,9 +809,9 @@ class _FullCustomLiveWidgetState extends State<FullCustomLiveWidget> {
|
|
|
809
809
|
#### 关键流程说明
|
|
810
810
|
1. **获取 PK 状态**:
|
|
811
811
|
|
|
812
|
-
|
|
812
|
+
- 回调配置:您可以通过配置 PK 状态回调,由 LiveKit 后台在 PK 开始、结束时,主动通知您的系统 PK 状态。
|
|
813
813
|
|
|
814
|
-
|
|
814
|
+
- 主动查询:您的后台服务可主动调用 PK 状态查询 接口,随时查询当前 PK 状态。
|
|
815
815
|
|
|
816
816
|
2. **PK 分数计算**:您的后台服务根据业务规则(如上述示例),计算 PK 分数增量。
|
|
817
817
|
|
|
@@ -139,9 +139,9 @@ void main() async {
|
|
|
139
139
|
|
|
140
140
|
这是最关键的一步。我们需要根据 `_isLiveStarted` 的状态选择不同的组件:
|
|
141
141
|
|
|
142
|
-
|
|
142
|
+
- **预览态:**使用 `VideoView` + `setLocalVideoView`(直接渲染本地采集数据)。
|
|
143
143
|
|
|
144
|
-
|
|
144
|
+
- **直播态:**使用 `LiveCoreWidget`(渲染直播间流数据)。
|
|
145
145
|
|
|
146
146
|
``` java
|
|
147
147
|
// 3.1 封装预览视图组件
|
|
@@ -599,7 +599,7 @@ class _YourAudiencePageState extends State<YourAudiencePage> {
|
|
|
599
599
|
|
|
600
600
|
### 运行效果
|
|
601
601
|
|
|
602
|
-
集成 **LiveCoreWidget** 后,您将得到一个纯净的视频渲染视图,它已具备完整的直播业务能力,但没有任何交互 UI。您可以参考下一章节 丰富直播场景 来完善直播场景。
|
|
602
|
+
集成 **LiveCoreWidget** 后,您将得到一个纯净的视频渲染视图,它已具备完整的直播业务能力,但没有任何交互 UI。您可以参考下一章节 [丰富直播场景](#.E4.B8.B0.E5.AF.8C.E7.9B.B4.E6.92.AD.E5.9C.BA.E6.99.AF) 来完善直播场景。
|
|
603
603
|
|
|
604
604
|
|**布局类型**|**动态宫格布局**|**浮动小窗布局**|**固定宫格布局**|**固定小窗布局**|
|
|
605
605
|
|---------|---------|---------|---------|---------|
|
|
@@ -236,7 +236,7 @@
|
|
|
236
236
|
|
|
237
237
|
### 运行效果
|
|
238
238
|
|
|
239
|
-
当您集成以上功能实现后,请分别使用两个观众与主播进行连麦操作,观众 A 同时打开摄像头和麦克风,观众 B 只打开麦克风,运行效果如下,您可以参考下一章节 完善 UI 细节 来定制您想要的 UI 逻辑。
|
|
239
|
+
当您集成以上功能实现后,请分别使用两个观众与主播进行连麦操作,观众 A 同时打开摄像头和麦克风,观众 B 只打开麦克风,运行效果如下,您可以参考下一章节 [完善 UI 细节](#736c00b3-02dc-494b-838d-226439fd3e15) 来定制您想要的 UI 逻辑。
|
|
240
240
|
|
|
241
241
|
## 完善 UI 细节
|
|
242
242
|
|
|
@@ -191,7 +191,7 @@
|
|
|
191
191
|
|
|
192
192
|
### 运行效果
|
|
193
193
|
|
|
194
|
-
当您集成以上功能实现后,请分别使用主播 A 和主播 B 进行对应操作,运行效果如下,您可以参考下一章节 完善 UI 细节 来定制您想要的 UI 逻辑。
|
|
194
|
+
当您集成以上功能实现后,请分别使用主播 A 和主播 B 进行对应操作,运行效果如下,您可以参考下一章节 [完善 UI 细节](#6fe270da-d3b3-4785-bdc2-53b59d6d9cc0) 来定制您想要的 UI 逻辑。
|
|
195
195
|
|
|
196
196
|
## 完善 UI 细节
|
|
197
197
|
|
|
@@ -441,9 +441,9 @@
|
|
|
441
441
|
#### 关键流程说明
|
|
442
442
|
1. **获取 PK 状态**:
|
|
443
443
|
|
|
444
|
-
|
|
444
|
+
- 回调配置:您可以通过配置 PK 状态回调,由 LiveKit 后台在 PK 开始、结束时,主动通知您的系统 PK 状态。
|
|
445
445
|
|
|
446
|
-
|
|
446
|
+
- 主动查询:您的后台服务可主动调用 PK 状态查询 接口,随时查询当前 PK 状态。
|
|
447
447
|
|
|
448
448
|
2. **PK 分数计算**:您的后台服务根据业务规则(如上述示例),计算 PK 分数增量。
|
|
449
449
|
|
|
@@ -171,7 +171,7 @@ func application(_ application: UIApplication, didFinishLaunchingWithOptions lau
|
|
|
171
171
|
|`isMessageDisable`|`Bool`|选填|是否禁言(`true`:是,`false`:否)。|
|
|
172
172
|
|`isPublicVisible`|`Bool`|选填|是否公开可见(`true`:是,`false`:否)。|
|
|
173
173
|
|`seatMode`|`TakeSeatMode`|选填|上麦模式(`.free`:自由上麦,`.apply`:申请上麦)。|
|
|
174
|
-
|`seatTemplate`|SeatLayoutTemplate|必填|麦位布局模板。|
|
|
174
|
+
|`seatTemplate`|[SeatLayoutTemplate](#id)|必填|麦位布局模板。|
|
|
175
175
|
|`coverURL`|`String`|选填|直播间的封面图片地址。|
|
|
176
176
|
|`backgroundURL`|`String`|选填|直播间的背景图片地址。|
|
|
177
177
|
|`categoryList`|`[NSNumber]`|选填|直播间的分类标签列表。|
|
|
@@ -363,7 +363,7 @@ class YourAudienceViewController: UIViewController {
|
|
|
363
363
|
|
|
364
364
|
### 运行效果
|
|
365
365
|
|
|
366
|
-
集成 **LiveCoreView** 后,您将得到一个纯净的视频渲染视图,它已具备完整的直播业务能力,但没有任何交互 UI。您可以参考下一章节 丰富直播场景 来完善直播场景。
|
|
366
|
+
集成 **LiveCoreView** 后,您将得到一个纯净的视频渲染视图,它已具备完整的直播业务能力,但没有任何交互 UI。您可以参考下一章节 [丰富直播场景](#82dbc44c-8a8e-40e2-89b9-66070f4beb72) 来完善直播场景。
|
|
367
367
|
| | <strong>动态宫格布局</strong> | <strong>浮动小窗布局</strong> | <strong>固定宫格布局</strong> | <strong>固定小窗布局</strong> |
|
|
368
368
|
| --- | --- | --- | --- | --- |
|
|
369
369
|
| <strong>模板取值</strong> | .videoDynamicGrid9Seats | .videoDynamicFloat7Seats | .videoFixedGrid9Seats | .videoFixedFloat7Seats |
|
|
@@ -309,7 +309,7 @@
|
|
|
309
309
|
|
|
310
310
|
### 运行效果
|
|
311
311
|
|
|
312
|
-
当您集成以上功能实现后,请分别使用两个观众与主播进行连麦操作,观众 A 同时打开摄像头和麦克风,观众 B 只打开麦克风,运行效果如下,您可以参考下一章节 完善 UI 细节 来定制您想要的 UI 逻辑。
|
|
312
|
+
当您集成以上功能实现后,请分别使用两个观众与主播进行连麦操作,观众 A 同时打开摄像头和麦克风,观众 B 只打开麦克风,运行效果如下,您可以参考下一章节 [完善 UI 细节](#.E5.AE.8C.E5.96.84-ui-.E7.BB.86.E8.8A.82) 来定制您想要的 UI 逻辑。
|
|
313
313
|
|
|
314
314
|
## 完善 UI 细节
|
|
315
315
|
|
|
@@ -324,9 +324,9 @@
|
|
|
324
324
|
|
|
325
325
|
这个组件是我们的“UI 贴纸”,它只负责根据数据渲染 UI,不关心视频。
|
|
326
326
|
|
|
327
|
-
|
|
327
|
+
- 在您的 `components` 目录下,创建一个新文件 `ParticipantOverlay.vue`。
|
|
328
328
|
|
|
329
|
-
|
|
329
|
+
- 将以下代码复制到文件中。
|
|
330
330
|
|
|
331
331
|
``` typescript
|
|
332
332
|
<template>
|
|
@@ -378,52 +378,14 @@
|
|
|
378
378
|
};
|
|
379
379
|
</script>
|
|
380
380
|
|
|
381
|
-
<style scoped>
|
|
382
|
-
.overlay-container {
|
|
383
|
-
pointer-events: none;
|
|
384
|
-
}
|
|
385
|
-
|
|
386
|
-
.participant-ui-container {
|
|
387
|
-
overflow: hidden;
|
|
388
|
-
}
|
|
389
|
-
.avatar-placeholder {
|
|
390
|
-
display: flex;
|
|
391
|
-
flex-direction: column;
|
|
392
|
-
justify-content: center;
|
|
393
|
-
align-items: center;
|
|
394
|
-
background-color: #2E323A;
|
|
395
|
-
}
|
|
396
|
-
.avatar-image {
|
|
397
|
-
width: 160rpx;
|
|
398
|
-
height: 160rpx;
|
|
399
|
-
border-radius: 80rpx;
|
|
400
|
-
}
|
|
401
|
-
.avatar-name {
|
|
402
|
-
margin-top: 20rpx;
|
|
403
|
-
font-size: 28rpx;
|
|
404
|
-
color: #FFFFFF;
|
|
405
|
-
}
|
|
406
|
-
.nickname-bar {
|
|
407
|
-
position: absolute;
|
|
408
|
-
left: 10rpx;
|
|
409
|
-
bottom: 10rpx;
|
|
410
|
-
background-color: rgba(0, 0, 0, 0.5);
|
|
411
|
-
padding: 4rpx 16rpx;
|
|
412
|
-
border-radius: 20rpx;
|
|
413
|
-
}
|
|
414
|
-
.nickname-text {
|
|
415
|
-
color: #FFFFFF;
|
|
416
|
-
font-size: 24rpx;
|
|
417
|
-
}
|
|
418
|
-
</style>
|
|
419
381
|
```
|
|
420
382
|
- **步骤 2**:在直播间页面中组合所有组件
|
|
421
383
|
|
|
422
384
|
这是将视频层和 `UI` 层“叠”在一起的关键步骤,同时需要解决 `nvue` 的布局问题。
|
|
423
385
|
|
|
424
|
-
|
|
386
|
+
- 打开您的直播间页面文件
|
|
425
387
|
|
|
426
|
-
|
|
388
|
+
- 按照以下结构和样式进行修改。
|
|
427
389
|
|
|
428
390
|
``` typescript
|
|
429
391
|
<template>
|
|
@@ -466,33 +428,6 @@
|
|
|
466
428
|
});
|
|
467
429
|
</script>
|
|
468
430
|
|
|
469
|
-
<style scoped>
|
|
470
|
-
.page-container {
|
|
471
|
-
flex: 1;
|
|
472
|
-
background-color: #000;
|
|
473
|
-
}
|
|
474
|
-
|
|
475
|
-
.live-container {
|
|
476
|
-
flex: 1;
|
|
477
|
-
position: relative;
|
|
478
|
-
}
|
|
479
|
-
.video-layer,
|
|
480
|
-
.ui-layer {
|
|
481
|
-
position: absolute;
|
|
482
|
-
top: 0;
|
|
483
|
-
left: 0;
|
|
484
|
-
right: 0;
|
|
485
|
-
bottom: 0;
|
|
486
|
-
}
|
|
487
|
-
|
|
488
|
-
.video-layer {
|
|
489
|
-
z-index: 1;
|
|
490
|
-
}
|
|
491
|
-
|
|
492
|
-
.ui-layer {
|
|
493
|
-
z-index: 2;
|
|
494
|
-
}
|
|
495
|
-
</style>
|
|
496
431
|
```
|
|
497
432
|
|
|
498
433
|
## API 文档
|
|
@@ -514,9 +449,9 @@
|
|
|
514
449
|
|
|
515
450
|
- 解决方案:
|
|
516
451
|
|
|
517
|
-
|
|
452
|
+
- 使用 `Flex` 布局:从页面的最外层根 `<view>` 开始,使用 `flex: 1` 样式,让容器逐层向下“撑满”可用空间。
|
|
518
453
|
|
|
519
|
-
|
|
454
|
+
- 使用绝对定位:对于需要覆盖的层(例如 `LiveCoreView` 和自定义的 `ParticipantOverlay`),将其父容器设置为 `position: relative` 和 `flex: 1`,然后将这些覆盖层设置为 `position: absolute` 并配合 `top: 0; left: 0; right: 0; bottom: 0;`,让它们从四个方向贴紧父容器边缘,这是在 `nvue` 中实现“占满”效果最可靠的方法。
|
|
520
455
|
|
|
521
456
|
### 自定义的昵称/头像 UI 与视频画面位置错乱
|
|
522
457
|
- 问题描述: 按照“完善 `UI` 细节”章节添加了 `ParticipantOverlay` 组件后,显示的昵称条或头像占位图没有精确地覆盖在对应的视频小窗上,存在偏移或尺寸不匹配。
|
|
@@ -525,9 +460,9 @@
|
|
|
525
460
|
|
|
526
461
|
- 解决方案:
|
|
527
462
|
|
|
528
|
-
|
|
463
|
+
- 确保 `scale` 值正确计算:必须在父页面中正确计算 `scale` 值。通常的计算方式是:`scaleX = 屏幕实际宽度 / 设计稿宽度。`
|
|
529
464
|
|
|
530
|
-
|
|
465
|
+
- 确保 `scale` 值正确传递:将计算好的 `scale` 对象传递给 `<ParticipantOverlay>` 组件。
|
|
531
466
|
|
|
532
467
|
### 连麦功能无响应(申请/邀请/接受/拒绝均失败)
|
|
533
468
|
- 问题描述: 调用 `applyForSeat`, `acceptApplication`, `inviteToSeat` 等 `CoGuestState` 提供的方法后,没有任何效果,也没有收到预期的回调。
|
|
@@ -536,9 +471,9 @@
|
|
|
536
471
|
|
|
537
472
|
- 解决方案:
|
|
538
473
|
|
|
539
|
-
|
|
474
|
+
- 校验 `liveID`:确保在调用 `useCoGuestState(liveID)` 和所有相关方法(例如 `applyForSeat({ liveID, ... })`)时,使用的 `liveID` 是当前直播间真实且有效的 `ID`。
|
|
540
475
|
|
|
541
|
-
|
|
476
|
+
- 保持 `liveID` 一致:在整个页面的生命周期中,所有与 `CoGuestState` 相关的操作都必须使用同一个 `liveID`。
|
|
542
477
|
|
|
543
478
|
### 无法接收到连麦相关的事件通知
|
|
544
479
|
- 问题描述: 观众端收不到主播的邀请(`onHostInvitationReceived`),或者主播端收不到观众的申请(`onGuestApplicationReceived`)。
|
|
@@ -547,9 +482,9 @@
|
|
|
547
482
|
|
|
548
483
|
- 解决方案: 确保在页面初始化时(例如在 `onMounted` 钩子中),根据角色(主播/观众)调用相应的方法来注册监听器:
|
|
549
484
|
|
|
550
|
-
|
|
485
|
+
- 主播端:调用 `addCoGuestHostListener` 来监听 `onGuestApplicationReceived`、`onHostInvitationResponded` 等事件。
|
|
551
486
|
|
|
552
|
-
|
|
487
|
+
- 观众端:调用 `addCoGuestGuestListener` 来监听 `onGuestApplicationResponded`、`onHostInvitationReceived` 等事件。
|
|
553
488
|
|
|
554
489
|
### 连麦成功后,对方看不到我的画面或听不到我的声音
|
|
555
490
|
- 问题描述: 作为观众,上麦申请被主播同意后,虽然麦位列表中有我,但我的视频画面没有出现,或者麦克风图标显示为关闭状态。
|