@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
|
@@ -18,9 +18,9 @@ TUIKit SwiftUI 提供了一套完整的即时通信 UI 组件,向下依赖 Ato
|
|
|
18
18
|
|
|
19
19
|
- 一个有效的腾讯云账号及 Chat 应用。可参见 开通服务 从控制台获取以下信息:
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
- SDKAppID:App 在控制台获取的 Chat 应用的 ID,为应用的唯一标识。
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
- SDKSecretKey:应用的密钥。
|
|
24
24
|
|
|
25
25
|
> **说明:**
|
|
26
26
|
>
|
|
@@ -61,11 +61,11 @@ chat/
|
|
|
61
61
|
|
|
62
62
|
2. 修改您 Podfile 中每个组件的本地路径。path 是 TUIKit_iOS_SwiftUI 文件夹相对于您工程 Podfile 文件的位置,常见的有:
|
|
63
63
|
|
|
64
|
-
|
|
64
|
+
- TUIKit_iOS_SwiftUI 文件夹位于您工程 Podfile 文件**父目录**: `pod 'AtomicX/Chat', :path => '../TUIKit_iOS_SwiftUI/atomic-x/AtomicX.podspec'`
|
|
65
65
|
|
|
66
|
-
|
|
66
|
+
- TUIKit_iOS_SwiftUI 文件夹位于您工程 Podfile 文件**当前目录**: `pod 'AtomicX/Chat', :path => './TUIKit_iOS_SwiftUI/atomic-x/AtomicX.podspec'`
|
|
67
67
|
|
|
68
|
-
|
|
68
|
+
- TUIKit_iOS_SwiftUI 文件夹位于您工程 Podfile 文件**子目录**: `pod 'AtomicX/Chat', :path => '/TUIKit_iOS_SwiftUI/atomic-x/AtomicX.podspec'`
|
|
69
69
|
|
|
70
70
|
以 Podfile 跟 TUIKit_iOS_SwiftUI 是同级目录为例,Podfile 中添加:
|
|
71
71
|
|
|
@@ -122,9 +122,9 @@ chat/
|
|
|
122
122
|
|
|
123
123
|
在项目的 Build Settings 中添加以下配置:
|
|
124
124
|
|
|
125
|
-
|
|
125
|
+
- Swift Language Version: Swift 5。
|
|
126
126
|
|
|
127
|
-
|
|
127
|
+
- iOS Deployment Target: 14.0 或更高。
|
|
128
128
|
|
|
129
129
|
2. **配置 Info.plist**
|
|
130
130
|
|
|
@@ -168,108 +168,18 @@ LoginStore.shared.login(sdkAppID: sdkAppID, userID: userID, userSig: userSig, co
|
|
|
168
168
|
> 在正式的生产环境中,请在您的服务端生成 UserSig,在需要 UserSig 时由您的 App 向业务服务器发起请求获取动态 UserSig 来进行鉴权。详见 服务端生成 UserSig。
|
|
169
169
|
>
|
|
170
170
|
|
|
171
|
-
### 步骤3
|
|
172
|
-
|
|
173
|
-
您可以基于 TUIKit SwiftUI 中的 ConversationList 组件,构建一个会话列表页面。ConversationList 内建的功能是:
|
|
174
|
-
- 展示用户的会话列表,包含单聊和群聊会话。
|
|
175
|
-
|
|
176
|
-
- 支持用户操作单个会话:置顶、删除、清空会话消息等。
|
|
177
|
-
|
|
178
|
-
将 ConversationList 封装为会话列表页,可参考 `chat/uikit/ConversationsPage.swift` 文件里的实现,`ConversationsPage` 主要做了以下工作:
|
|
179
|
-
|
|
180
|
-
1. 在 ConversationList 上方添加了 headerView。
|
|
181
|
-
|
|
182
|
-
2. 实现点击会话列表 cell 事件。
|
|
183
|
-
|
|
184
|
-
3. 支持创建会话和群组功能:
|
|
185
|
-
|
|
186
|
-
1. 点击右上角 "+" 按钮可以创建新会话或群组。
|
|
187
|
-
|
|
188
|
-
2. 支持从联系人列表选择好友创建单聊。
|
|
189
|
-
|
|
190
|
-
3. 支持选择多个好友创建群聊。
|
|
191
|
-
|
|
192
|
-
核心示例代码如下所示:
|
|
193
|
-
|
|
194
|
-
``` swift
|
|
195
|
-
import AtomicX
|
|
196
|
-
import AtomicXCore
|
|
197
|
-
import SwiftUI
|
|
198
|
-
|
|
199
|
-
public struct ConversationsPage: View {
|
|
200
|
-
...
|
|
201
|
-
|
|
202
|
-
public var body: some View {
|
|
203
|
-
VStack(spacing: 0) {
|
|
204
|
-
headerView
|
|
205
|
-
ConversationList(
|
|
206
|
-
onConversationClick: { conversation in
|
|
207
|
-
// Customize onConversationClick event
|
|
208
|
-
onShowMessage?(NavigationInfo(conversation: conversation))
|
|
209
|
-
}
|
|
210
|
-
)
|
|
211
|
-
.environmentObject(themeState)
|
|
212
|
-
}
|
|
213
|
-
.onReceive(contactListStore.state.subscribe(StatePublisherSelector(keyPath: \ContactListState.friendList))) { friendList in
|
|
214
|
-
if self.friendList != friendList {
|
|
215
|
-
self.friendList = friendList
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
.onAppear {
|
|
219
|
-
contactListStore.fetchFriendList(completion: { _ in })
|
|
220
|
-
}
|
|
221
|
-
.overlay(
|
|
222
|
-
// Click + to show this menu.
|
|
223
|
-
ChatsMenuOverlay(
|
|
224
|
-
showChatsMenu: $showChatsMenu,
|
|
225
|
-
showStartConversation: $showStartConversation,
|
|
226
|
-
showUserPicker: $showUserPicker
|
|
227
|
-
)
|
|
228
|
-
)
|
|
229
|
-
...
|
|
230
|
-
}
|
|
231
|
-
...
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
private var headerView: some View {
|
|
235
|
-
HStack {
|
|
236
|
-
Text(LocalizedChatString("TabChats"))
|
|
237
|
-
.font(.system(size: 34, weight: .semibold))
|
|
238
|
-
.tracking(0.3)
|
|
239
|
-
.foregroundColor(themeState.colors.textColorPrimary)
|
|
240
|
-
.background(themeState.colors.listColorDefault)
|
|
241
|
-
.padding(.leading, 16)
|
|
242
|
-
Spacer()
|
|
243
|
-
if AppBuilderConfig.shared.enableCreateConversation {
|
|
244
|
-
Button(action: {
|
|
245
|
-
showChatsMenu.toggle()
|
|
246
|
-
}) {
|
|
247
|
-
Image(systemName: "plus")
|
|
248
|
-
.font(.system(size: 20))
|
|
249
|
-
.foregroundColor(themeState.colors.buttonColorPrimaryDefault)
|
|
250
|
-
.frame(width: 28, height: 28)
|
|
251
|
-
.cornerRadius(14)
|
|
252
|
-
}
|
|
253
|
-
.padding(.trailing, 16)
|
|
254
|
-
}
|
|
255
|
-
}
|
|
256
|
-
.padding(.top, 12)
|
|
257
|
-
.padding(.bottom, 16)
|
|
258
|
-
}
|
|
259
|
-
```
|
|
260
|
-
|
|
261
|
-
### 步骤4:构建聊天界面
|
|
171
|
+
### 步骤3:构建聊天界面
|
|
262
172
|
|
|
263
173
|
您可以基于 TUIKit SwiftUI 中的 MessageList、MessageInput 组件,构建一个聊天页面。
|
|
264
174
|
- MessageList 内建的功能是:
|
|
265
175
|
|
|
266
|
-
|
|
176
|
+
- 展示单聊或群聊消息列表。
|
|
267
177
|
|
|
268
|
-
|
|
178
|
+
- 支持对单条消息操作:查看图片消息大图、播放视频或语音消息、复制文本消息、撤回消息、删除消息等。
|
|
269
179
|
|
|
270
180
|
- MessageInput 内建的功能是:
|
|
271
181
|
|
|
272
|
-
|
|
182
|
+
- 支持用户组建并发送多种类型的消息:文本、表情、图片、语音、视频、文件等。
|
|
273
183
|
|
|
274
184
|
将 MessageList 和 MessageInput 组装为聊天页,可参考 `chat/uikit/ChatPage.swift` 文件里的实现,`ChatPage` 主要做了以下工作:
|
|
275
185
|
|
|
@@ -373,184 +283,7 @@ LoginStore.shared.login(sdkAppID: sdkAppID, userID: userID, userSig: userSig, co
|
|
|
373
283
|
}
|
|
374
284
|
```
|
|
375
285
|
|
|
376
|
-
### 步骤
|
|
377
|
-
|
|
378
|
-
您可以基于 TUIKit SwiftUI 中的 ContactList 组件,构建一个联系人页面。ContactList 内建的功能是:
|
|
379
|
-
- 查看好友申请列表。
|
|
380
|
-
|
|
381
|
-
- 查看已加入的群列表。
|
|
382
|
-
|
|
383
|
-
- 处理群组邀请和申请。
|
|
384
|
-
|
|
385
|
-
- 管理黑名单列表。
|
|
386
|
-
|
|
387
|
-
- 查看好友。
|
|
388
|
-
|
|
389
|
-
将 ContactList 封装为联系人列表页,可参考 `chat/uikit/ContactsPage.swift` 文件里的实现,`ContactsPage` 主要做了以下工作:
|
|
390
|
-
|
|
391
|
-
1. 在 ContactList 上方添加了 headerView。
|
|
392
|
-
|
|
393
|
-
2. 实现点击联系人列表 cell 事件。
|
|
394
|
-
|
|
395
|
-
3. 支持添加联系人和添加群组:
|
|
396
|
-
|
|
397
|
-
1. 点击右上角 "+" 按钮可以添加联系人或群组。
|
|
398
|
-
|
|
399
|
-
2. 支持根据 UserID 搜索目标联系人。
|
|
400
|
-
|
|
401
|
-
3. 支持根据 GroupID 搜索目标群组。
|
|
402
|
-
|
|
403
|
-
核心示例代码如下所示:
|
|
404
|
-
|
|
405
|
-
``` swift
|
|
406
|
-
import AtomicX
|
|
407
|
-
import AtomicXCore
|
|
408
|
-
import SwiftUI
|
|
409
|
-
|
|
410
|
-
public struct ContactsPage: View {
|
|
411
|
-
...
|
|
412
|
-
|
|
413
|
-
public var body: some View {
|
|
414
|
-
VStack(spacing: 0) {
|
|
415
|
-
headerView
|
|
416
|
-
ContactList(
|
|
417
|
-
contactStore: contactStore,
|
|
418
|
-
onShowMessage: onShowMessage,
|
|
419
|
-
onContactClick: onContactClick,
|
|
420
|
-
onGroupClick: onGroupClick,
|
|
421
|
-
onNewFriendsClick: onNewFriendsClick,
|
|
422
|
-
onGroupApplicationsClick: onGroupApplicationsClick,
|
|
423
|
-
onGroupListClick: onGroupListClick,
|
|
424
|
-
onBlackListClick: onBlackListClick
|
|
425
|
-
)
|
|
426
|
-
}
|
|
427
|
-
.overlay(
|
|
428
|
-
Group {
|
|
429
|
-
if showAddContactMenu {
|
|
430
|
-
VStack {
|
|
431
|
-
HStack {
|
|
432
|
-
Spacer()
|
|
433
|
-
AddContactPopView(
|
|
434
|
-
onDismiss: {
|
|
435
|
-
showAddContactMenu = false
|
|
436
|
-
},
|
|
437
|
-
onShowAddFriend: {
|
|
438
|
-
showAddFriend = true
|
|
439
|
-
},
|
|
440
|
-
onShowJoinGroup: {
|
|
441
|
-
showJoinGroup = true
|
|
442
|
-
}
|
|
443
|
-
)
|
|
444
|
-
.padding(.trailing, 16)
|
|
445
|
-
.padding(.top, 50)
|
|
446
|
-
}
|
|
447
|
-
Spacer()
|
|
448
|
-
}
|
|
449
|
-
.background(
|
|
450
|
-
Color.clear
|
|
451
|
-
.contentShape(Rectangle())
|
|
452
|
-
.onTapGesture {
|
|
453
|
-
showAddContactMenu = false
|
|
454
|
-
}
|
|
455
|
-
)
|
|
456
|
-
.animation(.easeInOut(duration: 0.2), value: showAddContactMenu)
|
|
457
|
-
}
|
|
458
|
-
}
|
|
459
|
-
)
|
|
460
|
-
.sheet(isPresented: $showAddFriend) {
|
|
461
|
-
AddFriendView(contactStore: contactStore)
|
|
462
|
-
}
|
|
463
|
-
.sheet(isPresented: $showJoinGroup) {
|
|
464
|
-
JoinGroupView(contactStore: contactStore)
|
|
465
|
-
}
|
|
466
|
-
}
|
|
467
|
-
|
|
468
|
-
private var headerView: some View {
|
|
469
|
-
HStack {
|
|
470
|
-
Text(LocalizedChatString("TabContacts"))
|
|
471
|
-
.font(.system(size: 34, weight: .semibold))
|
|
472
|
-
.tracking(0.3)
|
|
473
|
-
.foregroundColor(themeState.colors.textColorPrimary)
|
|
474
|
-
.padding(.leading, 16)
|
|
475
|
-
Spacer()
|
|
476
|
-
Button(action: {
|
|
477
|
-
showAddContactMenu = true
|
|
478
|
-
}) {
|
|
479
|
-
Image(systemName: "plus")
|
|
480
|
-
.font(.system(size: 20))
|
|
481
|
-
.foregroundColor(themeState.colors.buttonColorPrimaryDefault)
|
|
482
|
-
.frame(width: 28, height: 28)
|
|
483
|
-
.cornerRadius(14)
|
|
484
|
-
}
|
|
485
|
-
.padding(.trailing, 16)
|
|
486
|
-
}
|
|
487
|
-
.padding(.top, 12)
|
|
488
|
-
.padding(.bottom, 16)
|
|
489
|
-
}
|
|
490
|
-
|
|
491
|
-
...
|
|
492
|
-
}
|
|
493
|
-
```
|
|
494
|
-
|
|
495
|
-
### 步骤6:完善界面间的跳转逻辑
|
|
496
|
-
|
|
497
|
-
ConversationsPage、ChatPage、ContactsPage 中暴露了一些用户点击事件,您可以自定义事件来实现页面间的交互:
|
|
498
|
-
| Page | 回调 | 建议跳转逻辑 |
|
|
499
|
-
| --- | --- | --- |
|
|
500
|
-
| <strong>ConversationsPage</strong> | <code>onConversationClick: ((NavigationInfo) -> Void)?</code> | 点击会话列表中的会话时触发,建议跳转到聊天页面(ChatPage)。 |
|
|
501
|
-
| <strong>ContactPage</strong> | <code>onContactClick: ((AZOrderedListItem) -> Void)?</code> | 点击联系人 cell 时触发,建议跳转联系人详情页面(C2CChatSetting)。 |
|
|
502
|
-
| <code>onGroupClick: ((AZOrderedListItem) -> Void)?</code> | 点击群组 cell 时触发,建议跳转群聊页面(ChatPage)。 | |
|
|
503
|
-
| <strong>ChatPage</strong> | <code>onBack: (() -> Void)?</code> | 点击返回按钮时触发,建议返回上一级页面。 |
|
|
504
|
-
| <code>onUserAvatarClick: ((String) -> Void)?</code> | 点击消息中的用户头像时触发,建议跳转用户信息页(C2CChatSetting)。 | |
|
|
505
|
-
| <code>onNavigationAvatarClick: (() -> Void)?</code> | 点击导航栏中的头像时触发,建议跳转用户信息页(C2CChatSetting)或群聊信息页(GroupChatSetting)。 | |
|
|
506
|
-
|
|
507
|
-
**chat/demo/ChatDemo/Pages/HomePage.swift** 作为上述 Page 的粘合层,实现了各个 Page 的回调事件,核心示例代码如下:
|
|
508
|
-
``` swift
|
|
509
|
-
// 点击会话列表 cell 跳转
|
|
510
|
-
ConversationsPage(
|
|
511
|
-
onConversationClick: { navigationInfo in
|
|
512
|
-
showChatPage(conversation: navigationInfo.conversation, locateMessage: navigationInfo.locateMessage)
|
|
513
|
-
}
|
|
514
|
-
)
|
|
515
|
-
|
|
516
|
-
// 点击联系人页面跳转
|
|
517
|
-
ContactsPage(
|
|
518
|
-
onContactClick: { user in
|
|
519
|
-
showContactDetail(user)
|
|
520
|
-
},
|
|
521
|
-
onGroupClick: { group in
|
|
522
|
-
let conversation = createConversationFromGroup(group)
|
|
523
|
-
showChatPage(conversation: conversation)
|
|
524
|
-
}
|
|
525
|
-
)
|
|
526
|
-
|
|
527
|
-
// ChatNavPage 是在 ChatPage 外层封装了导航栏的页面,位于 Demo 层,用于演示跳转
|
|
528
|
-
// 开发者可按需参考 ChatNavPage 封装 ChatPage。
|
|
529
|
-
ChatNavPage(
|
|
530
|
-
conversation: conversation,
|
|
531
|
-
locateMessage: currentLocateMessage,
|
|
532
|
-
onBack: {
|
|
533
|
-
dismissChatPage()
|
|
534
|
-
},
|
|
535
|
-
onContactDelete: {
|
|
536
|
-
dismissChatPage()
|
|
537
|
-
},
|
|
538
|
-
onGroupDelete: {
|
|
539
|
-
dismissChatPage()
|
|
540
|
-
},
|
|
541
|
-
onNavigateToChat: { newConversation in
|
|
542
|
-
// First dismiss current chat page, then navigate to the new chat
|
|
543
|
-
dismissChatPage()
|
|
544
|
-
DispatchQueue.main.asyncAfter(deadline: .now() + 0.3) {
|
|
545
|
-
showChatPage(conversation: newConversation)
|
|
546
|
-
}
|
|
547
|
-
}
|
|
548
|
-
)
|
|
549
|
-
```
|
|
550
|
-
|
|
551
|
-
您可以参考上述回调说明及参考代码,实现 Page 之间交互逻辑。
|
|
552
|
-
|
|
553
|
-
### 步骤7:接入智能客服 Desk 用户端(可选)
|
|
286
|
+
### 步骤4:接入智能客服 Desk 用户端
|
|
554
287
|
|
|
555
288
|
若需同时集成智能客服 Desk 用户端,请先 [开通智能客服 Desk 服务](https://cloud.tencent.com/document/product/269/96059),并根据 [iOS 接入智能客服用户端](https://cloud.tencent.com/document/product/269/110808) 文档完成 `TencentCloudAIDeskCustomer` 包引入和配置,即可在您的应用中引入客服会话能力。
|
|
556
289
|
``` objectivec
|
|
@@ -188,13 +188,39 @@ function ChatLayout({ texts }: { texts: { emptyTitle: string; emptySub: string }
|
|
|
188
188
|
const { theme } = useUIKit();
|
|
189
189
|
const isDark = theme === 'dark';
|
|
190
190
|
|
|
191
|
-
const { activeConversation } = useChatContext();
|
|
191
|
+
const { activeConversation, sendMessage } = useChatContext();
|
|
192
|
+
|
|
193
|
+
const defaultOpenConversationID = 'C2Cadministrator';
|
|
194
|
+
|
|
195
|
+
// 仅发送一次欢迎语
|
|
196
|
+
const sendWelcomeMessageOnce = useRef(false);
|
|
192
197
|
|
|
193
198
|
useEffect(() => {
|
|
194
199
|
setIsChatSettingShow(false);
|
|
195
200
|
setIsSearchInChatShow(false);
|
|
196
201
|
}, [activeConversation?.conversationID]);
|
|
197
202
|
|
|
203
|
+
// 应用创建(组件挂载)时仅发送一次欢迎语;切换会话不会重复发送。
|
|
204
|
+
useEffect(() => {
|
|
205
|
+
const timer = setTimeout(() => {
|
|
206
|
+
if (activeConversation?.conversationID === defaultOpenConversationID && !sendWelcomeMessageOnce.current) {
|
|
207
|
+
sendMessage({
|
|
208
|
+
type: 'textMessage',
|
|
209
|
+
text: `欢迎体验 Chat React 桌面端WEB应用 Demo~
|
|
210
|
+
|
|
211
|
+
您可以按照以下顺序体验 IM 的核心功能:
|
|
212
|
+
1. 在输入框内发送一条文本消息。
|
|
213
|
+
2. 输入框上的工具栏支持,语音通话、视频通话、图片、视频、文件发送等扩展功能。
|
|
214
|
+
3. 如果您想添加好友,可以前往联系人页面点击"添加好友/群聊"。
|
|
215
|
+
`,
|
|
216
|
+
});
|
|
217
|
+
sendWelcomeMessageOnce.current = true;
|
|
218
|
+
}
|
|
219
|
+
}, 1000);
|
|
220
|
+
return () => clearTimeout(timer);
|
|
221
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
222
|
+
}, [activeConversation?.conversationID]);
|
|
223
|
+
|
|
198
224
|
return (
|
|
199
225
|
<div className={`chat-layout ${isDark ? 'dark' : ''}`}>
|
|
200
226
|
<SideTab activeTab={activeTab} onTabChange={setActiveTab} />
|
|
@@ -21,7 +21,7 @@ TUIKit 是一款基于腾讯云 IM SDK 和 UTS 原生渲染技术的 uni-app UI
|
|
|
21
21
|
> H5 和小程序项目,如有需要请参考以下替代方案:
|
|
22
22
|
>
|
|
23
23
|
> - 打包 Web H5,可参考:Web H5(Vue3)。
|
|
24
|
-
> - 打包小程序,可参考:uni-app
|
|
24
|
+
> - 打包小程序,可参考:uni-app 标准版(Vue3/Vue2)。
|
|
25
25
|
> - 接入过程中遇到任何卡点或有改进建议,欢迎通过 [UniApp Atomicx 接入体验反馈](https://wj.qq.com/s2/26120470/621d/) 反馈,官方会及时跟进处理。
|
|
26
26
|
|
|
27
27
|
## 集成步骤
|
|
@@ -472,6 +472,10 @@ import { initCallService } from '@/uni_modules/tuikit-atomic-x/server/callServic
|
|
|
472
472
|
initCallService();
|
|
473
473
|
```
|
|
474
474
|
|
|
475
|
+
## AI 助手:知识咨询与代码集成
|
|
476
|
+
|
|
477
|
+
在接入 IM SDK 过程中,您可以通过 MCP 使用 AI 助手,快速完成知识咨询、报错排查和 UIKit 集成代码生成。支持 Web/Android/iOS/Flutter/uni-app 等平台,答案基于官方文档。适用于查询 SDK API、UI 组件用法、服务端 API 与 IM 产品配置等场景,[立即体验,提出您的第一个问题](https://cloud.tencent.com/document/product/269/126983)。
|
|
478
|
+
|
|
475
479
|
## 常见问题
|
|
476
480
|
|
|
477
481
|
### 技术兼容性类
|
|
@@ -135,11 +135,6 @@ login({
|
|
|
135
135
|
});
|
|
136
136
|
</script>
|
|
137
137
|
|
|
138
|
-
<style>
|
|
139
|
-
body { margin: 0; padding: 0; font-family: Inter, Avenir, Helvetica, Arial, sans-serif; }
|
|
140
|
-
#app { width: 100vw; height: 100vh; }
|
|
141
|
-
#app > div { display: flex; align-items: center; justify-content: center; }
|
|
142
|
-
</style>
|
|
143
138
|
```
|
|
144
139
|
|
|
145
140
|
#### 2.2 搭建聊天页面
|
|
@@ -156,7 +151,7 @@ body { margin: 0; padding: 0; font-family: Inter, Avenir, Helvetica, Arial, sans
|
|
|
156
151
|
</div>
|
|
157
152
|
|
|
158
153
|
<div v-show="activeTab === 'conversations'" class="chat-panel">
|
|
159
|
-
<Chat :PlaceholderEmpty="EmptyChatTpl">
|
|
154
|
+
<Chat :conversationID="defaultOpenConversationID" :PlaceholderEmpty="EmptyChatTpl">
|
|
160
155
|
<ChatHeader>
|
|
161
156
|
<template #ChatHeaderRight>
|
|
162
157
|
<button class="icon-btn" @click="settingOpen = !settingOpen">
|
|
@@ -207,7 +202,7 @@ body { margin: 0; padding: 0; font-family: Inter, Avenir, Helvetica, Arial, sans
|
|
|
207
202
|
</template>
|
|
208
203
|
|
|
209
204
|
<script setup lang="ts">
|
|
210
|
-
import { ref, watch } from 'vue';
|
|
205
|
+
import { ref, watch, onMounted } from 'vue';
|
|
211
206
|
import {
|
|
212
207
|
Chat, Search, ChatHeader, MessageList, MessageInput,
|
|
213
208
|
ConversationList, ContactList, ContactInfo, ChatSetting,
|
|
@@ -218,11 +213,29 @@ import {
|
|
|
218
213
|
import { IconMenu, IconSearch } from '@tencentcloud/uikit-base-component-vue3';
|
|
219
214
|
import SideTab from './SideTab.vue';
|
|
220
215
|
|
|
221
|
-
const { activeConversation } = useChatContext();
|
|
216
|
+
const { activeConversation, sendMessage } = useChatContext();
|
|
222
217
|
|
|
223
218
|
const activeTab = ref<'conversations' | 'contacts'>('conversations');
|
|
224
219
|
const settingOpen = ref(false);
|
|
225
220
|
const searchOpen = ref(false);
|
|
221
|
+
const defaultOpenConversationID = ref('C2Cadministrator');
|
|
222
|
+
|
|
223
|
+
onMounted(() => {
|
|
224
|
+
setTimeout(() => {
|
|
225
|
+
if (activeConversation.value?.conversationID === defaultOpenConversationID.value) {
|
|
226
|
+
sendMessage({
|
|
227
|
+
type: 'textMessage',
|
|
228
|
+
text: `欢迎体验 Chat Vue3 桌面端WEB应用 Demo~
|
|
229
|
+
|
|
230
|
+
您可以按照以下顺序体验 IM 的核心功能:
|
|
231
|
+
1. 在输入框内发送一条文本消息。
|
|
232
|
+
2. 输入框上的工具栏支持,语音通话、视频通话、快速会议、图片、视频、文件发送等扩展功能。
|
|
233
|
+
3. 如果您想添加好友,可以前往联系人页面点击"添加好友/群聊"。
|
|
234
|
+
`
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
}, 1000);
|
|
238
|
+
});
|
|
226
239
|
|
|
227
240
|
watch(() => activeConversation.value?.conversationID, () => {
|
|
228
241
|
settingOpen.value = false;
|
|
@@ -243,26 +256,6 @@ const EmptyChatTpl = { template: `
|
|
|
243
256
|
`};
|
|
244
257
|
</script>
|
|
245
258
|
|
|
246
|
-
<style scoped>
|
|
247
|
-
.chat-layout { height: 60vh; aspect-ratio: 16/9; display: flex; border-radius: 16px; box-shadow: 0 20px 60px rgba(0,0,0,.3), 0 0 0 1px rgba(255,255,255,.1); overflow: hidden; }
|
|
248
|
-
@media (max-width: 1920px) { .chat-layout { height: 80vh; } }
|
|
249
|
-
.list-panel { width: 300px; display: flex; flex-direction: column; border-right: 1px solid var(--stroke-color-primary); overflow: hidden; }
|
|
250
|
-
.detail-panel { flex: 1; }
|
|
251
|
-
.icon-btn { padding: 4px 6px; display: flex; align-items: center; justify-content: center; border: none; background: transparent; border-radius: 4px; font-size: 20px; color: var(--text-color-primary); cursor: pointer; outline: none; }
|
|
252
|
-
.icon-btn:hover { background-color: var(--button-color-secondary-hover); }
|
|
253
|
-
.toolbar { display: flex; justify-content: space-between; align-items: center; }
|
|
254
|
-
.toolbar-left { display: flex; align-items: center; gap: 4px; }
|
|
255
|
-
.search-sidebar { border-left: 1px solid var(--stroke-color-primary); display: flex; flex-direction: column; flex: 0 0 300px; }
|
|
256
|
-
.search-sidebar-header { display: flex; align-items: center; justify-content: space-between; padding: 12px 16px; border-bottom: 1px solid var(--stroke-color-primary); }
|
|
257
|
-
.search-sidebar-title { font-size: 16px; font-weight: 500; color: var(--text-color-primary); }
|
|
258
|
-
.chat-panel { flex: 1; position: relative; display: flex; }
|
|
259
|
-
.float-sidebar { position: absolute; right: 0; top: 0; bottom: 0; min-width: 300px; max-width: 400px; display: flex; flex-direction: column; background-color: var(--bg-color-operate); box-shadow: -2px 0 8px rgba(0,0,0,.04), -4px 0 16px rgba(0,0,0,.06); overflow: auto; z-index: 1000; }
|
|
260
|
-
.empty-chat { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px; background-color: var(--bg-color-operate); border-left: 1px solid rgba(0,0,0,.08); }
|
|
261
|
-
</style>
|
|
262
|
-
|
|
263
|
-
<style>
|
|
264
|
-
#app { text-align: start; }
|
|
265
|
-
</style>
|
|
266
259
|
```
|
|
267
260
|
|
|
268
261
|
#### 2.3 引入侧边导航
|
|
@@ -328,9 +321,6 @@ const handleTabChange = (tab: 'conversations' | 'contacts') => {
|
|
|
328
321
|
};
|
|
329
322
|
</script>
|
|
330
323
|
|
|
331
|
-
<style scoped>
|
|
332
|
-
.side-tab{width:72px;height:100vh;background:var(--bg-color-function);display:flex;flex-direction:column;align-items:center;padding:20px 0;transition:background 0.3s;}.avatar-wrapper{position:relative;margin-bottom:24px;cursor:pointer;}.avatar-wrapper:hover:deep(.avatar){transform:scale(1.05);box-shadow:0 4px 12px rgba(0,0,0,0.15);}.tooltip{position:absolute;left:60px;top:50%;transform:translateY(-50%);padding:8px 12px;background:rgba(0,0,0,0.85);color:#fff;border-radius:6px;white-space:nowrap;opacity:0;visibility:hidden;pointer-events:none;transition:all 0.3s;z-index:1000;}.tooltip::before{content:'';position:absolute;left:-6px;top:50%;transform:translateY(-50%);border:6px solid transparent;border-right-color:rgba(0,0,0,0.85);}.avatar-wrapper:hover .tooltip{opacity:1;visibility:visible;}.tooltip-name{font-size:14px;font-weight:500;margin-bottom:4px;}.tooltip-id{font-size:12px;opacity:0.8;}.tabs{display:flex;flex-direction:column;gap:16px;}.tab-item{width:48px;height:48px;display:flex;align-items:center;justify-content:center;border-radius:12px;cursor:pointer;transition:all 0.3s;color:var(--text-color-primary);}.tab-item:hover{background:rgba(0,0,0,0.05);}.tab-item.active{background:var(--button-color-primary-default);color:var(--text-color-button);}.side-tab.dark{background:#1a1a1a;}.side-tab.dark .avatar-wrapper:hover:deep(.avatar){box-shadow:0 4px 12px rgba(255,255,255,0.2);}.side-tab.dark .tooltip{background:rgba(255,255,255,0.95);color:#1a1a1a;}.side-tab.dark .tooltip::before{border-right-color:rgba(255,255,255,0.95);}.side-tab.dark .tab-item:hover{background:rgba(255,255,255,0.1);}.side-tab.dark .tab-item.active{background:#1890ff;color:#fff;}
|
|
333
|
-
</style>
|
|
334
324
|
```
|
|
335
325
|
|
|
336
326
|
### 步骤3:获取 SDKAppID、userID 和 userSig
|
|
@@ -142,6 +142,10 @@ class AnchorActivity : AppCompatActivity() {
|
|
|
142
142
|
}
|
|
143
143
|
```
|
|
144
144
|
|
|
145
|
+
## AI 助手:知识咨询与代码集成
|
|
146
|
+
|
|
147
|
+
您在接入直播与语聊 SDK 过程中,可以通过 MCP 使用 AI 助手,快速完成知识咨询、报错排查和集成代码生成。支持 Web/Android/iOS/Flutter/uni-app/HarmonyOS 等平台,答案基于官方文档。适用于查询 AtomicXCore SDK 和 UI 组件用法以及集成文档等场景,[立即体验,提出您的第一个问题](https://cloud.tencent.com/document/product/647/129285)。
|
|
148
|
+
|
|
145
149
|
## 自定义您的界面布局
|
|
146
150
|
|
|
147
151
|
`TUILiveKit` 支持灵活定制开播页与直播页的功能和样式,您可根据业务需求调整布局、隐藏 / 显示功能模块。
|
|
@@ -263,6 +263,10 @@ extension YourAnchorPrepareViewController : AnchorPrepareViewDelegate {
|
|
|
263
263
|
|
|
264
264
|
###
|
|
265
265
|
|
|
266
|
+
## AI 助手:知识咨询与代码集成
|
|
267
|
+
|
|
268
|
+
您在接入直播与语聊 SDK 过程中,可以通过 MCP 使用 AI 助手,快速完成知识咨询、报错排查和集成代码生成。支持 Web/Android/iOS/Flutter/uni-app/HarmonyOS 等平台,答案基于官方文档。适用于查询 AtomicXCore SDK 和 UI 组件用法以及集成文档等场景,[立即体验,提出您的第一个问题](https://cloud.tencent.com/document/product/647/129285)。
|
|
269
|
+
|
|
266
270
|
## 自定义您的界面布局
|
|
267
271
|
|
|
268
272
|
`TUILiveKit` 支持灵活定制开播页与直播页的功能和样式,您可根据业务需求调整布局、隐藏 / 显示功能模块。
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
|
|
27
27
|
- **CocoaPods 环境**:已安装 CocoaPods 环境。如果您尚未安装,请参见 [CocoaPods 官网安装](https://guides.cocoapods.org/using/getting-started.html),或按以下步骤操作:
|
|
28
28
|
|
|
29
|
-
|
|
29
|
+
- **使用 gem 安装 CocoaPods**:在终端中执行 `sudo gem install cocoapods` 命令进行安装。
|
|
30
30
|
|
|
31
31
|
> **提示:**
|
|
32
32
|
>
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
### 步骤 1:通过 CocoaPods 导入组件
|
|
39
39
|
1. **添加 Pod 依赖:**
|
|
40
40
|
|
|
41
|
-
|
|
41
|
+
- **若项目已有 Podfile 文件。**
|
|
42
42
|
|
|
43
43
|
在您项目的 `Podfile` 文件中添加 `pod 'TUILiveKit'` 依赖。例如:
|
|
44
44
|
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
|
|
51
51
|
end
|
|
52
52
|
```
|
|
53
|
-
|
|
53
|
+
- **若项目没有 Podfile 文件。**
|
|
54
54
|
|
|
55
55
|
在终端中通过 `cd` 命令切换到您的 `.xcodeproj` 目录下,然后执行 `pod init` 命令创建 `Podfile` 文件,创建完成后,在您的 `Podfile` 文件中添加 `pod 'TUILiveKit'` 依赖。例如:
|
|
56
56
|
|
|
@@ -77,11 +77,10 @@ onMounted(async () => {
|
|
|
77
77
|
});
|
|
78
78
|
</script>
|
|
79
79
|
|
|
80
|
-
<style scoped>:global(*),:global(::after),:global(::before){box-sizing:border-box;margin:0}.container{display:flex;flex-direction:column;height:100vh;width:100vw;background:var(--bg-color-default)}.header{display:flex;align-items:center;flex-shrink:0}.title{margin:0;font-size:16px;font-weight:600;color:var(--text-color-primary);letter-spacing:-.5px}.main{flex:1;padding:24px;overflow-y:auto;min-height:0}</style>
|
|
81
80
|
```
|
|
82
81
|
|
|
83
82
|
> **注意:**
|
|
84
|
-
> 若您需要实现直播列表到进入直播间的跳转逻辑,可参考本文中 指定直播间 部分内容。
|
|
83
|
+
> 若您需要实现直播列表到进入直播间的跳转逻辑,可参考本文中 [指定直播间](#61f1bbc9-1f23-4b69-aceb-7ab3f35a0ec2) 部分内容。
|
|
85
84
|
>
|
|
86
85
|
|
|
87
86
|
## 启动项目
|
|
@@ -151,7 +150,7 @@ app.mount('#app');
|
|
|
151
150
|
|
|
152
151
|
#### 步骤3:配置 live-list 文件
|
|
153
152
|
|
|
154
|
-
您需要将以下内容合并到上文中的 步骤3 内容中,进行直播列表到观看页面的跳转。
|
|
153
|
+
您需要将以下内容合并到上文中的 [步骤3](#c1b852bc-da02-4c9f-bb11-2a63582ce978) 内容中,进行直播列表到观看页面的跳转。
|
|
155
154
|
``` typescript
|
|
156
155
|
// live-list.vue 可增量添加至您的代码中
|
|
157
156
|
<template>
|
|
@@ -213,7 +212,7 @@ import { UIKitProvider } from '@tencentcloud/uikit-base-component-vue3';
|
|
|
213
212
|
|
|
214
213
|
### 设置昵称及头像
|
|
215
214
|
|
|
216
|
-
如果您需要自定义昵称或头像,可以在 步骤 3 中的示例代码中通过 [setSelfInfo](https://web.sdk.qcloud.com/trtc/live/web/doc/zh/index.html#setSelfInfo) 进行设置,具体示例如下:
|
|
215
|
+
如果您需要自定义昵称或头像,可以在 [步骤 3](#c1b852bc-da02-4c9f-bb11-2a63582ce978) 中的示例代码中通过 [setSelfInfo](https://web.sdk.qcloud.com/trtc/live/web/doc/zh/index.html#setSelfInfo) 进行设置,具体示例如下:
|
|
217
216
|
``` typescript
|
|
218
217
|
import { useLoginState } from 'tuikit-atomicx-vue3';
|
|
219
218
|
|
|
@@ -87,7 +87,6 @@ onMounted(async () => {
|
|
|
87
87
|
|
|
88
88
|
</script>
|
|
89
89
|
|
|
90
|
-
<style>html,body,#app{height:100%;width:100%;margin:0;padding:0;overflow:hidden}:global(body){font-size:15px;line-height:1.6;text-rendering:optimizeLegibility;}:global(*),:global(*::before),:global(*::after){box-sizing:border-box;margin:0;}.container{display:grid;grid-template-columns:1fr 320px;height:100%;width:100%;gap:16px;padding:16px;background:var(--bg-color-default);box-sizing:border-box;overflow:hidden;}.live{display:flex;flex-direction:column;background:var(--bg-color-operate);border-radius:12px;overflow:hidden;box-shadow:0 2px 8px var(--shadow-color);}.header{display:flex;align-items:center;gap:12px;padding:16px;border-bottom:1px solid var(--stroke-color-primary);}.back-btn{cursor:pointer;color:var(--text-color-tertiary);transition:color 0.2s;}.back-btn:hover{color:var(--text-color-link-hover);}.avatar{border:1px solid var(--uikit-color-white-7);}.user-name{color:var(--text-color-primary);font-weight:500;}.player{flex:1;background:var(--uikit-color-black-1);min-height:0;}.sidebar{display:flex;flex-direction:column;gap:16px;height:100%;overflow:hidden;}.audience{display:flex;flex-direction:column;background:var(--bg-color-operate);border-radius:12px;overflow:hidden;box-shadow:0 2px 8px var(--shadow-color);flex:1;min-height:0;}.barrage{display:flex;flex-direction:column;background:var(--bg-color-operate);border-radius:12px;overflow:hidden;box-shadow:0 2px 8px var(--shadow-color);flex:1;min-height:0;}.section-header{padding:16px;border-bottom:1px solid var(--stroke-color-primary);background:var(--bg-color-operate);}.section-header h3{margin:0;font-size:16px;font-weight:600;color:var(--text-color-primary);}.section-header span{font-weight:400;color:var(--text-color-secondary);font-size:14px;}.list{flex:1;min-height:0;overflow-y:auto;}.input{border-top:1px solid var(--stroke-color-primary);flex-shrink:0;height:48px;}@media (max-width:1200px){.container{grid-template-columns:1fr;grid-template-rows:60% 20% 20%;gap:12px;}.sidebar{gap:12px;}.audience,.barrage{min-height:200px;}}@media (max-width:768px){.container{padding:8px;gap:8px;grid-template-rows:50% 25% 25%;}.header,.section-header{padding:12px;}.sidebar{gap:8px;}}</style>
|
|
91
90
|
```
|
|
92
91
|
|
|
93
92
|
### 启动并运行示例
|
|
@@ -121,7 +121,6 @@ onMounted(async () => {
|
|
|
121
121
|
|
|
122
122
|
</script>
|
|
123
123
|
|
|
124
|
-
<style>html,body,#app{height:100%;width:100%;margin:0;padding:0;overflow:hidden}:global(body){font-size:15px;line-height:1.6;text-rendering:optimizeLegibility;}:global(*),:global(*::before),:global(*::after){box-sizing:border-box;margin:0;}.container{display:grid;grid-template-columns:1fr 320px;height:100%;width:100%;gap:16px;padding:16px;background:var(--bg-color-default);box-sizing:border-box;overflow:hidden;}.live{display:flex;flex-direction:column;background:var(--bg-color-operate);border-radius:12px;overflow:hidden;box-shadow:0 2px 8px var(--shadow-color);}.header{display:flex;align-items:center;gap:12px;padding:16px;border-bottom:1px solid var(--stroke-color-primary);}.back-btn{cursor:pointer;color:var(--text-color-tertiary);transition:color 0.2s;}.back-btn:hover{color:var(--text-color-link-hover);}.avatar{border:1px solid var(--uikit-color-white-7);}.user-name{color:var(--text-color-primary);font-weight:500;}.player{flex:1;background:var(--uikit-color-black-1);min-height:0;}.sidebar{display:flex;flex-direction:column;gap:16px;height:100%;overflow:hidden;}.audience{display:flex;flex-direction:column;background:var(--bg-color-operate);border-radius:12px;overflow:hidden;box-shadow:0 2px 8px var(--shadow-color);flex:1;min-height:0;}.barrage{display:flex;flex-direction:column;background:var(--bg-color-operate);border-radius:12px;overflow:hidden;box-shadow:0 2px 8px var(--shadow-color);flex:1;min-height:0;}.section-header{padding:16px;border-bottom:1px solid var(--stroke-color-primary);background:var(--bg-color-operate);}.section-header h3{margin:0;font-size:16px;font-weight:600;color:var(--text-color-primary);}.section-header span{font-weight:400;color:var(--text-color-secondary);font-size:14px;}.list{flex:1;min-height:0;overflow-y:auto;}.input{border-top:1px solid var(--stroke-color-primary);flex-shrink:0;height:48px;}@media (max-width:1200px){.container{grid-template-columns:1fr;grid-template-rows:60% 20% 20%;gap:12px;}.sidebar{gap:12px;}.audience,.barrage{min-height:200px;}}@media (max-width:768px){.container{padding:8px;gap:8px;grid-template-rows:50% 25% 25%;}.header,.section-header{padding:12px;}.sidebar{gap:8px;}}</style>
|
|
125
124
|
```
|
|
126
125
|
|
|
127
126
|
#### 核心 API 参数说明
|