@tencent-rtc/mcp 1.4.7 → 1.6.0

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.
Files changed (553) hide show
  1. package/cursor-setting.png +0 -0
  2. package/index.js +0 -1
  3. package/knowledge/bm25-cache.js +73 -0
  4. package/knowledge/bm25.js +147 -0
  5. package/knowledge/build-index.js +69 -0
  6. package/knowledge/chunker.js +167 -0
  7. package/knowledge/content-loader.js +39 -0
  8. package/knowledge/doc-url-resolver.js +142 -0
  9. package/knowledge/extractors.js +25 -0
  10. package/knowledge/path-meta.js +184 -0
  11. package/knowledge/search/exact-lookup.js +497 -0
  12. package/knowledge/search/filter-pool.js +104 -0
  13. package/knowledge/search/product-scope-intent.js +40 -0
  14. package/knowledge/search/requires-framework.js +81 -0
  15. package/knowledge/search/search-knowledge.js +229 -0
  16. package/mcp-server-prompt.png +0 -0
  17. package/package.json +1 -1
  18. package/resource/_schema/feature-aliases.yaml +10 -0
  19. package/resource/_schema/goal-tags.yaml +72 -0
  20. package/resource/_schema/products.yaml +19 -0
  21. package/resource/_schema/trtc-intents.yaml +27 -0
  22. package/resource/_schema/types.yaml +43 -0
  23. package/resource/index/component-slugs.json +1 -0
  24. package/resource/index/doc-source-urls.json +1 -0
  25. package/resource/index/manifest.json +1 -0
  26. package/resource/{doc → integration}/callkit/preset/android/integration.md +34 -28
  27. package/resource/integration/callkit/preset/flutter/integration.md +346 -0
  28. package/resource/integration/callkit/preset/ios/integration.md +408 -0
  29. package/resource/integration/callkit/preset/react/integration.md +362 -0
  30. package/resource/integration/callkit/preset/vue/integration.md +356 -0
  31. package/resource/integration/chat/preset/android/integration.md +500 -0
  32. package/resource/integration/chat/preset/flutter/integration.md +370 -0
  33. package/resource/integration/chat/preset/ios/integration.md +566 -0
  34. package/resource/integration/chat/preset/react/integration.md +490 -0
  35. package/resource/integration/chat/preset/vue/integration.md +504 -0
  36. package/resource/{doc → integration}/livekit/preset/live/vue/live-list-integration.md +26 -22
  37. package/resource/{doc → integration}/livekit/preset/live/vue/live-player-desk-integration.md +22 -18
  38. package/resource/integration/livekit/preset/live/vue/live-player-h5-integration.md +309 -0
  39. package/resource/{doc → integration}/livekit/preset/live/vue/live-pusher-integration.md +47 -39
  40. package/resource/integration/roomkit/preset/vue/integration.md +562 -0
  41. package/resource/knowledge/callkit/core-sdk/android/answer-call.md +828 -0
  42. package/resource/knowledge/callkit/core-sdk/android/make-call.md +897 -0
  43. package/resource/knowledge/callkit/core-sdk/android/offline-push.md +363 -0
  44. package/resource/knowledge/callkit/core-sdk/flutter/answer-call.md +1111 -0
  45. package/resource/knowledge/callkit/core-sdk/flutter/make-call.md +1132 -0
  46. package/resource/{doc → knowledge}/callkit/core-sdk/flutter/offline-push.md +174 -151
  47. package/resource/knowledge/callkit/core-sdk/ios/answer-call.md +1084 -0
  48. package/resource/knowledge/callkit/core-sdk/ios/make-call.md +1252 -0
  49. package/resource/knowledge/callkit/core-sdk/ios/offline-push.md +534 -0
  50. package/resource/knowledge/callkit/core-sdk/uni-app/answer-call.md +953 -0
  51. package/resource/knowledge/callkit/core-sdk/uni-app/make-call.md +1061 -0
  52. package/resource/knowledge/callkit/faq/android.md +92 -0
  53. package/resource/{doc/callkit/faq/android-faq.md → knowledge/callkit/faq/common.md} +11 -12
  54. package/resource/knowledge/callkit/faq/error-code.md +67 -0
  55. package/resource/knowledge/callkit/faq/flutter.md +52 -0
  56. package/resource/knowledge/callkit/faq/ios.md +104 -0
  57. package/resource/knowledge/callkit/faq/web.md +74 -0
  58. package/resource/knowledge/callkit/preset/android/api.md +412 -0
  59. package/resource/knowledge/callkit/preset/flutter/api.md +22 -0
  60. package/resource/knowledge/callkit/preset/ios/api.md +234 -0
  61. package/resource/knowledge/callkit/preset/web/api.md +83 -0
  62. package/resource/knowledge/chat/preset/android/features/chat-setting.md +74 -0
  63. package/resource/knowledge/chat/preset/android/features/contact-list.md +43 -0
  64. package/resource/knowledge/chat/preset/android/features/conversation-list.md +117 -0
  65. package/resource/knowledge/chat/preset/android/features/language.md +136 -0
  66. package/resource/knowledge/chat/preset/android/features/message-input.md +57 -0
  67. package/resource/knowledge/chat/preset/android/features/message-list.md +142 -0
  68. package/resource/knowledge/chat/preset/android/features/search.md +64 -0
  69. package/resource/knowledge/chat/preset/android/features/theme.md +222 -0
  70. package/resource/knowledge/chat/preset/android-view/integration.md +300 -0
  71. package/resource/knowledge/chat/preset/flutter/features/chat-setting.md +64 -0
  72. package/resource/knowledge/chat/preset/flutter/features/contact-list.md +40 -0
  73. package/resource/knowledge/chat/preset/flutter/features/conversation-list.md +129 -0
  74. package/resource/knowledge/chat/preset/flutter/features/language.md +104 -0
  75. package/resource/knowledge/chat/preset/flutter/features/message-input.md +54 -0
  76. package/resource/knowledge/chat/preset/flutter/features/message-list.md +158 -0
  77. package/resource/knowledge/chat/preset/flutter/features/search.md +59 -0
  78. package/resource/knowledge/chat/preset/flutter/features/theme.md +261 -0
  79. package/resource/knowledge/chat/preset/ios/features/chat-setting.md +94 -0
  80. package/resource/knowledge/chat/preset/ios/features/contact-list.md +119 -0
  81. package/resource/knowledge/chat/preset/ios/features/conversation-list.md +134 -0
  82. package/resource/knowledge/chat/preset/ios/features/language.md +125 -0
  83. package/resource/knowledge/chat/preset/ios/features/message-input.md +69 -0
  84. package/resource/knowledge/chat/preset/ios/features/message-list.md +162 -0
  85. package/resource/knowledge/chat/preset/ios/features/search.md +93 -0
  86. package/resource/knowledge/chat/preset/ios/features/theme.md +270 -0
  87. package/resource/{doc/chatkit/ios → knowledge/chat/preset/ios-uikit}/integration.md +160 -158
  88. package/resource/knowledge/chat/preset/react/features/chat-setting.md +101 -0
  89. package/resource/{doc/chatkit/react/components → knowledge/chat/preset/react/features}/contact-list.md +43 -41
  90. package/resource/knowledge/chat/preset/react/features/conversation-actions.md +215 -0
  91. package/resource/knowledge/chat/preset/react/features/conversation-list.md +339 -0
  92. package/resource/knowledge/chat/preset/react/features/conversation-preview.md +101 -0
  93. package/resource/knowledge/chat/preset/react/features/conversation-search.md +61 -0
  94. package/resource/{doc/chatkit/react/components → knowledge/chat/preset/react/features}/message-input.md +117 -156
  95. package/resource/knowledge/chat/preset/react/features/message-list.md +297 -0
  96. package/resource/{doc/chatkit/react/components → knowledge/chat/preset/react/features}/search.md +65 -59
  97. package/resource/knowledge/chat/preset/react/features/theme.md +93 -0
  98. package/resource/knowledge/chat/preset/vue/features/chat-header.md +331 -0
  99. package/resource/knowledge/chat/preset/vue/features/chat-setting.md +79 -0
  100. package/resource/knowledge/chat/preset/vue/features/contact-list.md +277 -0
  101. package/resource/knowledge/chat/preset/vue/features/conversation-actions.md +234 -0
  102. package/resource/knowledge/chat/preset/vue/features/conversation-list.md +331 -0
  103. package/resource/knowledge/chat/preset/vue/features/conversation-preview.md +216 -0
  104. package/resource/{doc/chatkit/vue/components → knowledge/chat/preset/vue/features}/conversation-search.md +13 -13
  105. package/resource/knowledge/chat/preset/vue/features/message-input.md +551 -0
  106. package/resource/knowledge/chat/preset/vue/features/message-list.md +350 -0
  107. package/resource/{doc/chatkit/vue/components → knowledge/chat/preset/vue/features}/search.md +79 -73
  108. package/resource/knowledge/chat/preset/vue/features/theme.md +136 -0
  109. package/resource/knowledge/chat/urls/error-code.md +17 -0
  110. package/resource/knowledge/chat/urls/product.md +43 -0
  111. package/resource/knowledge/chat/urls/restapi.md +204 -0
  112. package/resource/knowledge/chat/urls/sdk/android.md +80 -0
  113. package/resource/knowledge/chat/urls/sdk/flutter.md +71 -0
  114. package/resource/knowledge/chat/urls/sdk/ios.md +80 -0
  115. package/resource/knowledge/chat/urls/sdk/web.md +80 -0
  116. package/resource/knowledge/chat/urls/webhook.md +68 -0
  117. package/resource/knowledge/livekit/core-sdk/api-reference/android/AudioEffectStore.md +286 -0
  118. package/resource/knowledge/livekit/core-sdk/api-reference/android/BarrageStore.md +174 -0
  119. package/resource/knowledge/livekit/core-sdk/api-reference/android/BattleStore.md +329 -0
  120. package/resource/knowledge/livekit/core-sdk/api-reference/android/CameraView.md +55 -0
  121. package/resource/knowledge/livekit/core-sdk/api-reference/android/CoGuestStore.md +434 -0
  122. package/resource/knowledge/livekit/core-sdk/api-reference/android/CoHostStore.md +362 -0
  123. package/resource/knowledge/livekit/core-sdk/api-reference/android/DeviceStore.md +466 -0
  124. package/resource/knowledge/livekit/core-sdk/api-reference/android/GiftStore.md +173 -0
  125. package/resource/knowledge/livekit/core-sdk/api-reference/android/LikeStore.md +51 -0
  126. package/resource/knowledge/livekit/core-sdk/api-reference/android/LiveAudienceStore.md +291 -0
  127. package/resource/knowledge/livekit/core-sdk/api-reference/android/LiveCoreView.md +78 -0
  128. package/resource/knowledge/livekit/core-sdk/api-reference/android/LiveSeatStore.md +488 -0
  129. package/resource/knowledge/livekit/core-sdk/api-reference/android/LoginStore.md +219 -0
  130. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/AudioEffectStore.md +282 -0
  131. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/BarrageStore.md +212 -0
  132. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/BaseBeautyStore.md +153 -0
  133. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/BattleStore.md +312 -0
  134. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/CoGuestStore.md +404 -0
  135. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/CoHostStore.md +334 -0
  136. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/DeviceStore.md +426 -0
  137. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/GiftStore.md +166 -0
  138. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LikeStore.md +52 -0
  139. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LiveAudienceStore.md +281 -0
  140. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LiveCoreView.md +150 -0
  141. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LiveSeatStore.md +438 -0
  142. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LoginStore.md +190 -0
  143. package/resource/knowledge/livekit/core-sdk/api-reference/ios/AudioEffectStore.md +291 -0
  144. package/resource/knowledge/livekit/core-sdk/api-reference/ios/BarrageStore.md +192 -0
  145. package/resource/knowledge/livekit/core-sdk/api-reference/ios/BaseBeautyStore.md +146 -0
  146. package/resource/knowledge/livekit/core-sdk/api-reference/ios/BattleStore.md +309 -0
  147. package/resource/knowledge/livekit/core-sdk/api-reference/ios/CoGuestStore.md +370 -0
  148. package/resource/knowledge/livekit/core-sdk/api-reference/ios/CoHostStore.md +339 -0
  149. package/resource/knowledge/livekit/core-sdk/api-reference/ios/DeviceStore.md +503 -0
  150. package/resource/knowledge/livekit/core-sdk/api-reference/ios/GiftStore.md +188 -0
  151. package/resource/knowledge/livekit/core-sdk/api-reference/ios/LikeStore.md +51 -0
  152. package/resource/knowledge/livekit/core-sdk/api-reference/ios/LiveAudienceStore.md +289 -0
  153. package/resource/knowledge/livekit/core-sdk/api-reference/ios/LiveCoreView.md +78 -0
  154. package/resource/knowledge/livekit/core-sdk/api-reference/ios/LiveSeatStore.md +487 -0
  155. package/resource/knowledge/livekit/core-sdk/api-reference/ios/LoginStore.md +183 -0
  156. package/resource/knowledge/livekit/core-sdk/api-reference/web/index.md +736 -0
  157. package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-audience-list.md +53 -47
  158. package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-audio-effect.md +28 -24
  159. package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-barrage.md +22 -18
  160. package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-base-beauty.md +17 -15
  161. package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-co-guest-interaction.md +19 -18
  162. package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-gift.md +102 -89
  163. package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-host-interaction.md +41 -37
  164. package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-integration.md +45 -43
  165. package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-live-list.md +23 -20
  166. package/resource/{doc → knowledge}/livekit/core-sdk/live/flutter/live-audience-list.md +41 -41
  167. package/resource/{doc → knowledge}/livekit/core-sdk/live/flutter/live-audio-effect.md +70 -69
  168. package/resource/{doc → knowledge}/livekit/core-sdk/live/flutter/live-barrage.md +68 -71
  169. package/resource/{doc → knowledge}/livekit/core-sdk/live/flutter/live-base-beauty.md +43 -47
  170. package/resource/{doc → knowledge}/livekit/core-sdk/live/flutter/live-co-guest-interaction.md +59 -56
  171. package/resource/{doc → knowledge}/livekit/core-sdk/live/flutter/live-gift.md +103 -105
  172. package/resource/knowledge/livekit/core-sdk/live/flutter/live-host-interaction.md +869 -0
  173. package/resource/{doc → knowledge}/livekit/core-sdk/live/flutter/live-integration.md +84 -87
  174. package/resource/{doc → knowledge}/livekit/core-sdk/live/flutter/live-live-list.md +43 -40
  175. package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-audience-list.md +11 -10
  176. package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-audio-effect.md +28 -24
  177. package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-barrage.md +22 -18
  178. package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-base-beauty.md +15 -14
  179. package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-co-guest-interaction.md +19 -18
  180. package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-gift.md +54 -50
  181. package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-host-interaction.md +41 -37
  182. package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-integration.md +40 -40
  183. package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-live-list.md +19 -18
  184. package/resource/{doc → knowledge}/livekit/core-sdk/voice/android/voice-audience-list.md +53 -47
  185. package/resource/{doc → knowledge}/livekit/core-sdk/voice/android/voice-audio-effect.md +28 -24
  186. package/resource/{doc → knowledge}/livekit/core-sdk/voice/android/voice-barrage.md +22 -18
  187. package/resource/{doc → knowledge}/livekit/core-sdk/voice/android/voice-co-guest-interaction.md +41 -33
  188. package/resource/{doc → knowledge}/livekit/core-sdk/voice/android/voice-gift.md +94 -81
  189. package/resource/{doc → knowledge}/livekit/core-sdk/voice/android/voice-host-interaction.md +35 -30
  190. package/resource/{doc → knowledge}/livekit/core-sdk/voice/android/voice-integration.md +45 -42
  191. package/resource/{doc → knowledge}/livekit/core-sdk/voice/android/voice-room-list.md +23 -20
  192. package/resource/knowledge/livekit/core-sdk/voice/flutter/voice-audience-list.md +260 -0
  193. package/resource/knowledge/livekit/core-sdk/voice/flutter/voice-audio-effect.md +598 -0
  194. package/resource/knowledge/livekit/core-sdk/voice/flutter/voice-barrage.md +490 -0
  195. package/resource/{doc → knowledge}/livekit/core-sdk/voice/flutter/voice-co-guest-interaction.md +65 -59
  196. package/resource/knowledge/livekit/core-sdk/voice/flutter/voice-gift.md +424 -0
  197. package/resource/{doc → knowledge}/livekit/core-sdk/voice/flutter/voice-integration.md +69 -76
  198. package/resource/knowledge/livekit/core-sdk/voice/flutter/voice-room-list.md +726 -0
  199. package/resource/{doc → knowledge}/livekit/core-sdk/voice/ios/voice-audience-list.md +11 -10
  200. package/resource/{doc → knowledge}/livekit/core-sdk/voice/ios/voice-audio-effect.md +28 -24
  201. package/resource/{doc → knowledge}/livekit/core-sdk/voice/ios/voice-barrage.md +22 -18
  202. package/resource/{doc → knowledge}/livekit/core-sdk/voice/ios/voice-co-guest-interaction.md +41 -33
  203. package/resource/{doc → knowledge}/livekit/core-sdk/voice/ios/voice-gift.md +54 -50
  204. package/resource/{doc → knowledge}/livekit/core-sdk/voice/ios/voice-host-interaction.md +35 -30
  205. package/resource/{doc → knowledge}/livekit/core-sdk/voice/ios/voice-integration.md +49 -46
  206. package/resource/{doc → knowledge}/livekit/core-sdk/voice/ios/voice-room-list.md +19 -18
  207. package/resource/knowledge/livekit/faq/error-code.md +193 -0
  208. package/resource/{doc/livekit/preset/live/vue/components → knowledge/livekit/preset/live/vue/features}/barrage.md +56 -53
  209. package/resource/{doc/livekit/preset/live/vue/components → knowledge/livekit/preset/live/vue/features}/live-audience-list.md +22 -21
  210. package/resource/{doc/livekit/preset/live/vue/components → knowledge/livekit/preset/live/vue/features}/live-view.md +34 -32
  211. package/resource/knowledge/push/config/android.md +92 -0
  212. package/resource/knowledge/push/config/harmonyos.md +83 -0
  213. package/resource/knowledge/push/config/ios.md +254 -0
  214. package/resource/knowledge/push/config/react-native.md +254 -0
  215. package/resource/knowledge/push/config/unity.md +209 -0
  216. package/resource/knowledge/push/config/unreal-engine.md +194 -0
  217. package/resource/knowledge/push/integration/android.md +404 -0
  218. package/resource/knowledge/push/integration/flutter.md +465 -0
  219. package/resource/knowledge/push/integration/harmonyos.md +63 -0
  220. package/resource/knowledge/push/integration/ios.md +246 -0
  221. package/resource/knowledge/push/integration/react-native.md +366 -0
  222. package/resource/knowledge/push/integration/uni-app.md +208 -0
  223. package/resource/knowledge/push/integration/unity.md +389 -0
  224. package/resource/knowledge/push/integration/unreal-engine.md +390 -0
  225. package/resource/knowledge/push/overview/prepare.md +60 -0
  226. package/resource/knowledge/roomkit/core-sdk/android/call-user-to-room.md +241 -0
  227. package/resource/knowledge/roomkit/core-sdk/android/room-participant-state.md +588 -0
  228. package/resource/knowledge/roomkit/core-sdk/android/room-state.md +364 -0
  229. package/resource/knowledge/roomkit/core-sdk/android/schedule-room.md +340 -0
  230. package/resource/knowledge/roomkit/core-sdk/flutter/call-user-to-room.md +230 -0
  231. package/resource/knowledge/roomkit/core-sdk/flutter/room-participant-state.md +797 -0
  232. package/resource/knowledge/roomkit/core-sdk/flutter/room-state.md +325 -0
  233. package/resource/knowledge/roomkit/core-sdk/flutter/schedule-room.md +325 -0
  234. package/resource/knowledge/roomkit/core-sdk/ios/call-user-to-room.md +233 -0
  235. package/resource/knowledge/roomkit/core-sdk/ios/room-participant-state.md +569 -0
  236. package/resource/knowledge/roomkit/core-sdk/ios/room-state.md +325 -0
  237. package/resource/knowledge/roomkit/core-sdk/ios/schedule-room.md +322 -0
  238. package/resource/knowledge/roomkit/core-sdk/vue/call-user-to-room.md +221 -0
  239. package/resource/{doc/roomkit/vue/features → knowledge/roomkit/core-sdk/vue}/device-detection.md +49 -48
  240. package/resource/knowledge/roomkit/core-sdk/vue/device-state.md +461 -0
  241. package/resource/knowledge/roomkit/core-sdk/vue/free-beauty-panel.md +216 -0
  242. package/resource/knowledge/roomkit/core-sdk/vue/room-chat.md +370 -0
  243. package/resource/{doc/roomkit/vue/features → knowledge/roomkit/core-sdk/vue}/room-participant-state.md +61 -60
  244. package/resource/knowledge/roomkit/core-sdk/vue/room-state.md +280 -0
  245. package/resource/{doc/roomkit/vue/features → knowledge/roomkit/core-sdk/vue}/room-view.md +57 -56
  246. package/resource/knowledge/roomkit/core-sdk/vue/schedule-room.md +319 -0
  247. package/resource/knowledge/roomkit/core-sdk/vue/screen-share.md +267 -0
  248. package/resource/knowledge/roomkit/core-sdk/vue/virtual-background.md +261 -0
  249. package/resource/knowledge/roomkit/preset/android/integration.md +396 -0
  250. package/resource/knowledge/roomkit/preset/flutter/integration.md +404 -0
  251. package/resource/knowledge/roomkit/preset/ios/integration.md +369 -0
  252. package/resource/knowledge/roomkit/preset/react/integration.md +576 -0
  253. package/resource/knowledge/rtcengine/web/how_to_run_web_sdk_demo.md +44 -0
  254. package/resource/{doc → knowledge}/rtcengine/web/plugin/21-advanced-auto-play-policy.md +8 -2
  255. package/resource/{doc → knowledge}/rtcengine/web/plugin/22-advanced-audio-mixer.md +19 -1
  256. package/resource/{doc → knowledge}/rtcengine/web/plugin/23-advanced-support-detection.md +1 -1
  257. package/resource/{doc → knowledge}/rtcengine/web/plugin/24-advanced-network-quality.md +8 -8
  258. package/resource/{doc → knowledge}/rtcengine/web/plugin/25-advanced-device-change.md +1 -1
  259. package/resource/{doc → knowledge}/rtcengine/web/plugin/26-advanced-publish-cdn-stream.md +6 -6
  260. package/resource/{doc → knowledge}/rtcengine/web/plugin/27-advanced-small-stream.md +3 -3
  261. package/resource/{doc → knowledge}/rtcengine/web/plugin/29-advanced-water-mark.md +18 -0
  262. package/resource/{doc → knowledge}/rtcengine/web/plugin/31-advanced-plugins-overview.md +1 -1
  263. package/resource/{doc → knowledge}/rtcengine/web/plugin/34-advanced-proxy.md +2 -2
  264. package/resource/{doc → knowledge}/rtcengine/web/plugin/35-advanced-ai-denoiser.md +1 -1
  265. package/resource/knowledge/trtc/android/TRTCCloud.md +1915 -0
  266. package/resource/knowledge/trtc/android/TRTCCloudDef.md +1029 -0
  267. package/resource/knowledge/trtc/android/TRTCCloudListener.md +1095 -0
  268. package/resource/knowledge/trtc/android/TRTCStatistics.md +68 -0
  269. package/resource/knowledge/trtc/android/TXAudioEffectManager.md +502 -0
  270. package/resource/knowledge/trtc/android/TXBeautyManager.md +415 -0
  271. package/resource/knowledge/trtc/android/TXDeviceManager.md +169 -0
  272. package/resource/knowledge/trtc/android/TXLiteAVCode.md +125 -0
  273. package/resource/knowledge/trtc/c++/ITRTCCloud.md +2069 -0
  274. package/resource/knowledge/trtc/c++/ITRTCStatistics.md +73 -0
  275. package/resource/knowledge/trtc/c++/ITXAudioEffectManager.md +502 -0
  276. package/resource/knowledge/trtc/c++/ITXDeviceManager.md +391 -0
  277. package/resource/knowledge/trtc/c++/TRTCCloudCallback.md +1191 -0
  278. package/resource/knowledge/trtc/c++/TRTCTypeDef.md +931 -0
  279. package/resource/knowledge/trtc/c++/TXLiteAVCode.md +127 -0
  280. package/resource/knowledge/trtc/ios/TRTCCloud.md +2118 -0
  281. package/resource/knowledge/trtc/ios/TRTCCloudDef.md +975 -0
  282. package/resource/knowledge/trtc/ios/TRTCCloudDelegate.md +1131 -0
  283. package/resource/knowledge/trtc/ios/TRTCStatistics.md +68 -0
  284. package/resource/knowledge/trtc/ios/TXAudioEffectManager.md +423 -0
  285. package/resource/knowledge/trtc/ios/TXBeautyManager.md +416 -0
  286. package/resource/knowledge/trtc/ios/TXDeviceManager.md +387 -0
  287. package/resource/knowledge/trtc/ios/TXLiteAVCode.md +127 -0
  288. package/server-config.js +0 -1
  289. package/server.js +35 -12
  290. package/streamable-http.js +0 -1
  291. package/tools/call/get_native_call_uikit_integration.js +2 -4
  292. package/tools/call/get_native_callkit_core_integration.js +2 -6
  293. package/tools/call/get_web_call_uikit_integration.js +2 -4
  294. package/tools/chat/get_native_chat_uikit_integration.js +2 -4
  295. package/tools/chat/get_web_chat_uikit_integration.js +2 -4
  296. package/tools/common/get_usersig.js +0 -1
  297. package/tools/common/present_framework_choice.js +19 -14
  298. package/tools/common/record_answer.js +19 -26
  299. package/tools/common/record_feedback.js +17 -31
  300. package/tools/common/search_trtc_knowledge.js +44 -0
  301. package/tools/definitions/get_native_call_uikit_integration_def.js +3 -2
  302. package/tools/definitions/get_native_callkit_core_integration_def.js +5 -4
  303. package/tools/definitions/get_native_chat_uikit_integration_def.js +5 -3
  304. package/tools/definitions/get_native_livekit_core_integration_def.js +6 -6
  305. package/tools/definitions/get_usersig_def.js +0 -1
  306. package/tools/definitions/get_web_call_uikit_integration_def.js +4 -3
  307. package/tools/definitions/get_web_chat_uikit_integration_def.js +2 -1
  308. package/tools/definitions/get_web_live_uikit_integration_def.js +5 -6
  309. package/tools/definitions/get_web_room_core_integration_def.js +49 -0
  310. package/tools/definitions/get_web_room_uikit_integration_def.js +5 -5
  311. package/tools/definitions/integration-boundary.js +5 -0
  312. package/tools/definitions/present_framework_choice_def.js +12 -11
  313. package/tools/definitions/record_answer_def.js +19 -18
  314. package/tools/definitions/record_feedback_def.js +14 -14
  315. package/tools/definitions/search_trtc_knowledge_def.js +39 -0
  316. package/tools/index.js +5 -37
  317. package/tools/live/get_native_livekit_core_integration.js +1 -4
  318. package/tools/live/get_web_live_uikit_integration.js +2 -5
  319. package/tools/room/get_web_room_core_integration.js +47 -0
  320. package/tools/room/get_web_room_uikit_integration.js +2 -4
  321. package/utils/generate-structured-result.js +24 -31
  322. package/utils/generate-usersig.js +0 -1
  323. package/utils/get-device-identifier.js +0 -1
  324. package/utils/get-doc-content.js +14 -9
  325. package/utils/http-get.js +0 -1
  326. package/utils/http-post.js +0 -1
  327. package/utils/report-cls-client.js +18 -21
  328. package/utils/report-es-client.js +1 -2
  329. package/index.js.map +0 -1
  330. package/resource/doc/callkit/core-sdk/.gitkeep +0 -0
  331. package/resource/doc/callkit/core-sdk/android/answer-call.md +0 -852
  332. package/resource/doc/callkit/core-sdk/android/make-call.md +0 -954
  333. package/resource/doc/callkit/core-sdk/android/offline-push.md +0 -361
  334. package/resource/doc/callkit/core-sdk/flutter/answer-call.md +0 -1160
  335. package/resource/doc/callkit/core-sdk/flutter/make-call.md +0 -1205
  336. package/resource/doc/callkit/core-sdk/ios/answer-call.md +0 -1090
  337. package/resource/doc/callkit/core-sdk/ios/make-call.md +0 -1248
  338. package/resource/doc/callkit/core-sdk/ios/offline-push.md +0 -485
  339. package/resource/doc/callkit/core-sdk/uni-app/answer-call.md +0 -950
  340. package/resource/doc/callkit/core-sdk/uni-app/make-call.md +0 -1052
  341. package/resource/doc/callkit/faq/common/error-code.md +0 -47
  342. package/resource/doc/callkit/faq/flutter-faq.md +0 -115
  343. package/resource/doc/callkit/faq/ios-faq.md +0 -115
  344. package/resource/doc/callkit/faq/web-faq.md +0 -36
  345. package/resource/doc/callkit/preset/android/api.md +0 -296
  346. package/resource/doc/callkit/preset/flutter/api.md +0 -410
  347. package/resource/doc/callkit/preset/flutter/integration.md +0 -164
  348. package/resource/doc/callkit/preset/ios/api.md +0 -80
  349. package/resource/doc/callkit/preset/ios/integration.md +0 -187
  350. package/resource/doc/callkit/preset/react/api.md +0 -501
  351. package/resource/doc/callkit/preset/react/integration.md +0 -86
  352. package/resource/doc/callkit/preset/vue/api.md +0 -501
  353. package/resource/doc/callkit/preset/vue/integration.md +0 -83
  354. package/resource/doc/chatkit/android/faq.md +0 -111
  355. package/resource/doc/chatkit/android/features/theme.md +0 -219
  356. package/resource/doc/chatkit/android/integration.md +0 -490
  357. package/resource/doc/chatkit/faq/android_sdk/client-api.md +0 -281
  358. package/resource/doc/chatkit/faq/common/product.md +0 -7
  359. package/resource/doc/chatkit/faq/common/server.md +0 -44
  360. package/resource/doc/chatkit/faq/common/server_error_code.md +0 -74
  361. package/resource/doc/chatkit/faq/flutter_sdk/client-api.md +0 -199
  362. package/resource/doc/chatkit/faq/flutter_sdk/faq.md +0 -53
  363. package/resource/doc/chatkit/faq/ios_sdk/client-api.md +0 -235
  364. package/resource/doc/chatkit/faq/web_sdk/error_code.md +0 -47
  365. package/resource/doc/chatkit/faq/web_sdk/faq.md +0 -287
  366. package/resource/doc/chatkit/flutter/faq.md +0 -23
  367. package/resource/doc/chatkit/flutter/features/theme.md +0 -235
  368. package/resource/doc/chatkit/flutter/integration.md +0 -344
  369. package/resource/doc/chatkit/ios/faq.md +0 -111
  370. package/resource/doc/chatkit/ios/features/theme.md +0 -267
  371. package/resource/doc/chatkit/react/components/avatar.md +0 -104
  372. package/resource/doc/chatkit/react/components/chat-header.md +0 -148
  373. package/resource/doc/chatkit/react/components/chat-setting.md +0 -57
  374. package/resource/doc/chatkit/react/components/chat.md +0 -38
  375. package/resource/doc/chatkit/react/components/component-list.md +0 -37
  376. package/resource/doc/chatkit/react/components/conversation-actions.md +0 -174
  377. package/resource/doc/chatkit/react/components/conversation-list.md +0 -333
  378. package/resource/doc/chatkit/react/components/conversation-preview.md +0 -118
  379. package/resource/doc/chatkit/react/components/conversation-search.md +0 -60
  380. package/resource/doc/chatkit/react/components/message-list.md +0 -293
  381. package/resource/doc/chatkit/react/components/tuikit.md +0 -34
  382. package/resource/doc/chatkit/react/faq.md +0 -26
  383. package/resource/doc/chatkit/react/integration.md +0 -416
  384. package/resource/doc/chatkit/vue/components/avatar.md +0 -104
  385. package/resource/doc/chatkit/vue/components/chat-header.md +0 -148
  386. package/resource/doc/chatkit/vue/components/chat-setting.md +0 -62
  387. package/resource/doc/chatkit/vue/components/chat.md +0 -45
  388. package/resource/doc/chatkit/vue/components/component-list.md +0 -87
  389. package/resource/doc/chatkit/vue/components/contact-list.md +0 -271
  390. package/resource/doc/chatkit/vue/components/conversation-actions.md +0 -228
  391. package/resource/doc/chatkit/vue/components/conversation-list.md +0 -320
  392. package/resource/doc/chatkit/vue/components/conversation-preview.md +0 -213
  393. package/resource/doc/chatkit/vue/components/message-input.md +0 -1054
  394. package/resource/doc/chatkit/vue/components/message-list.md +0 -433
  395. package/resource/doc/chatkit/vue/components/tuikit.md +0 -31
  396. package/resource/doc/chatkit/vue/components/userpicker.md +0 -256
  397. package/resource/doc/chatkit/vue/faq.md +0 -36
  398. package/resource/doc/chatkit/vue/integration.md +0 -428
  399. package/resource/doc/livekit/core-sdk/live/flutter/live-host-interaction.md +0 -866
  400. package/resource/doc/livekit/faq/common/error-code.md +0 -88
  401. package/resource/doc/livekit/preset/live/vue/api-reference/index.md +0 -780
  402. package/resource/doc/livekit/preset/live/vue/components/co-guest-panel.md +0 -91
  403. package/resource/doc/livekit/preset/live/vue/components/live-scene-panel.md +0 -112
  404. package/resource/doc/livekit/preset/live/vue/components/stream-mixer.md +0 -215
  405. package/resource/doc/livekit/preset/live/vue/live-player-h5-integration.md +0 -300
  406. package/resource/doc/roomkit/faq/common/error-code.md +0 -67
  407. package/resource/doc/roomkit/vue/features/call-user-to-room.md +0 -220
  408. package/resource/doc/roomkit/vue/features/device-state.md +0 -460
  409. package/resource/doc/roomkit/vue/features/free-beauty-panel.md +0 -215
  410. package/resource/doc/roomkit/vue/features/room-chat.md +0 -369
  411. package/resource/doc/roomkit/vue/features/room-state.md +0 -282
  412. package/resource/doc/roomkit/vue/features/schedule-room.md +0 -318
  413. package/resource/doc/roomkit/vue/features/screen-share.md +0 -265
  414. package/resource/doc/roomkit/vue/features/virtual-background.md +0 -271
  415. package/resource/doc/roomkit/vue/integration.md +0 -315
  416. package/resource/doc/rtcengine/faq/common/error_code.md +0 -1
  417. package/resource/doc/rtcengine/faq/web_sdk/.gitkeep +0 -0
  418. package/resource/doc/rtcengine/web/.gitkeep +0 -0
  419. package/resource/doc/rtcengine/web/how_to_run_web_sdk_demo.md +0 -59
  420. package/resource/doc/trtc/C++/ITRTCCloud.md +0 -1970
  421. package/resource/doc/trtc/C++/ITRTCStatistics.md +0 -70
  422. package/resource/doc/trtc/C++/ITXAudioEffectManager.md +0 -469
  423. package/resource/doc/trtc/C++/ITXDeviceManager.md +0 -387
  424. package/resource/doc/trtc/C++/TRTCCloudCallback.md +0 -1082
  425. package/resource/doc/trtc/C++/TRTCTypeDef.md +0 -925
  426. package/resource/doc/trtc/C++/TXLiteAVCode.md +0 -129
  427. package/resource/doc/trtc/android/TRTCCloud.md +0 -1815
  428. package/resource/doc/trtc/android/TRTCCloudDef.md +0 -992
  429. package/resource/doc/trtc/android/TRTCCloudListener.md +0 -1004
  430. package/resource/doc/trtc/android/TRTCStatistics.md +0 -65
  431. package/resource/doc/trtc/android/TXAudioEffectManager.md +0 -469
  432. package/resource/doc/trtc/android/TXBeautyManager.md +0 -402
  433. package/resource/doc/trtc/android/TXDeviceManager.md +0 -173
  434. package/resource/doc/trtc/android/TXLiteAVCode.md +0 -127
  435. package/resource/doc/trtc/iOS/TRTCCloud.md +0 -2028
  436. package/resource/doc/trtc/iOS/TRTCCloudDef.md +0 -958
  437. package/resource/doc/trtc/iOS/TRTCCloudDelegate.md +0 -1046
  438. package/resource/doc/trtc/iOS/TRTCStatistics.md +0 -65
  439. package/resource/doc/trtc/iOS/TXAudioEffectManager.md +0 -397
  440. package/resource/doc/trtc/iOS/TXBeautyManager.md +0 -403
  441. package/resource/doc/trtc/iOS/TXDeviceManager.md +0 -381
  442. package/resource/doc/trtc/iOS/TXLiteAVCode.md +0 -130
  443. package/server-config.js.map +0 -1
  444. package/server.js.map +0 -1
  445. package/streamable-http.js.map +0 -1
  446. package/tools/call/get_callkit_api.js +0 -33
  447. package/tools/call/get_callkit_api.js.map +0 -1
  448. package/tools/call/get_native_call_uikit_integration.js.map +0 -1
  449. package/tools/call/get_native_callkit_core_integration.js.map +0 -1
  450. package/tools/call/get_web_call_uikit_integration.js.map +0 -1
  451. package/tools/chat/get_native_chat_uikit_feature_detail.js +0 -35
  452. package/tools/chat/get_native_chat_uikit_feature_detail.js.map +0 -1
  453. package/tools/chat/get_native_chat_uikit_integration.js.map +0 -1
  454. package/tools/chat/get_web_chat_uikit_component_detail.js +0 -35
  455. package/tools/chat/get_web_chat_uikit_component_detail.js.map +0 -1
  456. package/tools/chat/get_web_chat_uikit_integration.js.map +0 -1
  457. package/tools/common/get_faq.js +0 -266
  458. package/tools/common/get_faq.js.map +0 -1
  459. package/tools/common/get_usersig.js.map +0 -1
  460. package/tools/common/present_framework_choice.js.map +0 -1
  461. package/tools/common/record_answer.js.map +0 -1
  462. package/tools/common/record_feedback.js.map +0 -1
  463. package/tools/common/record_skill_session.js +0 -69
  464. package/tools/common/record_skill_session.js.map +0 -1
  465. package/tools/definitions/get_callkit_api_def.js +0 -29
  466. package/tools/definitions/get_callkit_api_def.js.map +0 -1
  467. package/tools/definitions/get_faq_def.js +0 -47
  468. package/tools/definitions/get_faq_def.js.map +0 -1
  469. package/tools/definitions/get_native_call_uikit_integration_def.js.map +0 -1
  470. package/tools/definitions/get_native_callkit_core_integration_def.js.map +0 -1
  471. package/tools/definitions/get_native_chat_uikit_feature_detail_def.js +0 -31
  472. package/tools/definitions/get_native_chat_uikit_feature_detail_def.js.map +0 -1
  473. package/tools/definitions/get_native_chat_uikit_integration_def.js.map +0 -1
  474. package/tools/definitions/get_native_livekit_core_features_def.js +0 -34
  475. package/tools/definitions/get_native_livekit_core_features_def.js.map +0 -1
  476. package/tools/definitions/get_native_livekit_core_integration_def.js.map +0 -1
  477. package/tools/definitions/get_native_trtc_sdk_docs_def.js +0 -32
  478. package/tools/definitions/get_native_trtc_sdk_docs_def.js.map +0 -1
  479. package/tools/definitions/get_usersig_def.js.map +0 -1
  480. package/tools/definitions/get_web_call_uikit_integration_def.js.map +0 -1
  481. package/tools/definitions/get_web_chat_uikit_component_detail_def.js +0 -31
  482. package/tools/definitions/get_web_chat_uikit_component_detail_def.js.map +0 -1
  483. package/tools/definitions/get_web_chat_uikit_integration_def.js.map +0 -1
  484. package/tools/definitions/get_web_live_uikit_integration_def.js.map +0 -1
  485. package/tools/definitions/get_web_livekit_api_def.js +0 -30
  486. package/tools/definitions/get_web_livekit_api_def.js.map +0 -1
  487. package/tools/definitions/get_web_livekit_component_detail_def.js +0 -32
  488. package/tools/definitions/get_web_livekit_component_detail_def.js.map +0 -1
  489. package/tools/definitions/get_web_room_uikit_integration_def.js.map +0 -1
  490. package/tools/definitions/get_web_roomkit_feature_detail_def.js +0 -31
  491. package/tools/definitions/get_web_roomkit_feature_detail_def.js.map +0 -1
  492. package/tools/definitions/get_web_trtc_sdk_api_def.js +0 -27
  493. package/tools/definitions/get_web_trtc_sdk_api_def.js.map +0 -1
  494. package/tools/definitions/get_web_trtc_sdk_integration_def.js +0 -27
  495. package/tools/definitions/get_web_trtc_sdk_integration_def.js.map +0 -1
  496. package/tools/definitions/get_web_trtc_sdk_plugin_def.js +0 -27
  497. package/tools/definitions/get_web_trtc_sdk_plugin_def.js.map +0 -1
  498. package/tools/definitions/present_framework_choice_def.js.map +0 -1
  499. package/tools/definitions/record_answer_def.js.map +0 -1
  500. package/tools/definitions/record_feedback_def.js.map +0 -1
  501. package/tools/definitions/record_skill_session_def.js +0 -31
  502. package/tools/definitions/record_skill_session_def.js.map +0 -1
  503. package/tools/index.js.map +0 -1
  504. package/tools/live/get_native_livekit_core_features.js +0 -68
  505. package/tools/live/get_native_livekit_core_features.js.map +0 -1
  506. package/tools/live/get_native_livekit_core_integration.js.map +0 -1
  507. package/tools/live/get_web_live_uikit_integration.js.map +0 -1
  508. package/tools/live/get_web_livekit_api.js +0 -33
  509. package/tools/live/get_web_livekit_api.js.map +0 -1
  510. package/tools/live/get_web_livekit_component_detail.js +0 -35
  511. package/tools/live/get_web_livekit_component_detail.js.map +0 -1
  512. package/tools/room/get_web_room_uikit_integration.js.map +0 -1
  513. package/tools/room/get_web_roomkit_feature_detail.js +0 -69
  514. package/tools/room/get_web_roomkit_feature_detail.js.map +0 -1
  515. package/tools/rtcengine/get_web_trtc_sdk_api.js +0 -32
  516. package/tools/rtcengine/get_web_trtc_sdk_api.js.map +0 -1
  517. package/tools/rtcengine/get_web_trtc_sdk_integration.js +0 -32
  518. package/tools/rtcengine/get_web_trtc_sdk_integration.js.map +0 -1
  519. package/tools/rtcengine/get_web_trtc_sdk_plugin.js +0 -32
  520. package/tools/rtcengine/get_web_trtc_sdk_plugin.js.map +0 -1
  521. package/tools/trtc/get_native_trtc_sdk_docs.js +0 -74
  522. package/tools/trtc/get_native_trtc_sdk_docs.js.map +0 -1
  523. package/utils/build-session-directives.js +0 -120
  524. package/utils/build-session-directives.js.map +0 -1
  525. package/utils/generate-structured-result.js.map +0 -1
  526. package/utils/generate-usersig.js.map +0 -1
  527. package/utils/get-device-identifier.js.map +0 -1
  528. package/utils/get-doc-content.js.map +0 -1
  529. package/utils/handle-framework.js +0 -9
  530. package/utils/handle-framework.js.map +0 -1
  531. package/utils/handle-state-name.js +0 -29
  532. package/utils/handle-state-name.js.map +0 -1
  533. package/utils/http-get.js.map +0 -1
  534. package/utils/http-post.js.map +0 -1
  535. package/utils/report-cls-client.js.map +0 -1
  536. package/utils/report-es-client.js.map +0 -1
  537. package/utils/report-runtime-error-cls-client.js +0 -91
  538. package/utils/report-runtime-error-cls-client.js.map +0 -1
  539. /package/resource/{doc/livekit/preset/live/vue/faq.md → knowledge/push/config/donut.md} +0 -0
  540. /package/resource/{doc/roomkit/vue/faq.md → knowledge/push/integration/donut.md} +0 -0
  541. /package/resource/{doc → knowledge}/rtcengine/web/api.md +0 -0
  542. /package/resource/{doc/rtcengine/faq/web/web.md → knowledge/rtcengine/web/faq.md} +0 -0
  543. /package/resource/{doc → knowledge}/rtcengine/web/how_to_integrated_web_sdk.md +0 -0
  544. /package/resource/{doc → knowledge}/rtcengine/web/plugin/20-advanced-customized-capture-rendering.md +0 -0
  545. /package/resource/{doc → knowledge}/rtcengine/web/plugin/28-advanced-beauty.md +0 -0
  546. /package/resource/{doc → knowledge}/rtcengine/web/plugin/30-advanced-cross-room-link.md +0 -0
  547. /package/resource/{doc → knowledge}/rtcengine/web/plugin/36-advanced-virtual-background.md +0 -0
  548. /package/resource/{doc → knowledge}/rtcengine/web/plugin/37-advanced-voice-changer.md +0 -0
  549. /package/resource/{doc → knowledge}/rtcengine/web/plugin/39-advanced-video-decoder.md +0 -0
  550. /package/resource/{doc → knowledge}/rtcengine/web/plugin/40-advanced-video-mixer.md +0 -0
  551. /package/resource/{doc → knowledge}/rtcengine/web/plugin/41-advanced-small-stream-auto-switcher.md +0 -0
  552. /package/resource/{doc → knowledge}/rtcengine/web/plugin/42-advanced-realtime-transcriber.md +0 -0
  553. /package/resource/{doc → knowledge}/rtcengine/web/plugin/43-advanced-face-detection.md +0 -0
@@ -0,0 +1,953 @@
1
+ 本文档将帮助您使用 **AtomicXCore SDK** 的 **DeviceState**、**CallState 以及**核心组件 **CallCoreView**,快速构建一个支持通话功能的 **App**。
2
+
3
+ > 推荐使用更高效的 AI 集成助手
4
+ >
5
+
6
+ > 我们为您提供了全新的 AI 集成方式,只需要描述您的需求,即可自动生成集成代码,大幅提升开发效率。
7
+ >
8
+
9
+ > 点击这里,立即体验 AI 集成
10
+ >
11
+
12
+ ## 准备工作
13
+
14
+ ### 步骤1:开通服务
15
+
16
+ 请参见 开通服务,获取体验版或付费版 SDK。
17
+
18
+ ### 步骤2:在当前项目中导入 AtomicXCore
19
+ 1. **安装组件**:打开 [AtomicXCore SDK](https://ext.dcloud.net.cn/plugin),单击**下载插件并导入 HBuilderX**,选择需要集成的项目并单击**确定**。
20
+
21
+ 也可从 [GitHub](https://github.com/Tencent-RTC/TUIKit_uni-app) 下载源码,将 `App/uni_modules/tuikit-atomic-x` 目录拷贝至您项目的 `uni_modules/` 下。
22
+
23
+ 2. **配置工程权限: **请在应用的 manifest.json 文件的 app-plus > distribute 节点下,确保添加了以下必要的权限:
24
+
25
+ - Android 平台(`Android`节点):在 `permissions` 数组中,请确保包含以下权限:
26
+
27
+ ``` json
28
+ "<uses-permission android:name=\"android.permission.RECORD_AUDIO\" />",
29
+ "<uses-permission android:name=\"android.permission.CAMERA\"/>"
30
+ ```
31
+ - iOS 平台(`iOS` 节点):在 `privacyDescription` 对象中,请确保包含以下描述:
32
+
33
+ ``` json
34
+ "NSCameraUsageDescription" : "应用需要访问您的相机以进行通话",
35
+ "NSMicrophoneUsageDescription" : "应用需要访问您的麦克风以进行通话"
36
+ ```
37
+
38
+ 在 `UIBackgroundModes` 数组中,添加 `audio` 以支持后台音频播放。
39
+
40
+ ``` json
41
+ "UIBackgroundModes" : [ "audio" ]
42
+ ```
43
+
44
+ ### 步骤3:实现登录逻辑
45
+
46
+ 在您的项目中调用 LoginState 中的 [login](https://liteav.sdk.qcloud.com/doc/product/tuikit/atomic-x/uni-app/zh/v1.0/api/index.html#login) 方法完成登录,**这是使用 **`AtomicXCore`** 所有功能的关键前提**。
47
+
48
+ > **重要:**
49
+ >
50
+
51
+ > 推荐在您 App 自身的用户账户登录成功后,再调用 LoginState 中的 login 方法,以确保登录业务逻辑的清晰和一致。
52
+ >
53
+
54
+ ``` typescript
55
+ import { useLoginState } from "@/uni_modules/tuikit-atomic-x/state/LoginState";
56
+
57
+ const { login } = useLoginState();
58
+
59
+ const handleLogin = () => {
60
+ login({
61
+ sdkAppID: 1400000001, // 替换为您的 SDKAppID
62
+ userID: "test_001", // 替换为您的 UserID
63
+ userSig: "xxxxxxxxxx" // 替换为您的 UserSig
64
+ })
65
+ }
66
+ ```
67
+
68
+ **登录接口参数说明:**
69
+ | <strong>参数</strong> | <strong>类型</strong> | <strong>说明</strong> |
70
+ | --- | --- | --- |
71
+ | sdkAppID | number | 从 <a href="https://console.cloud.tencent.com/trtc">控制台</a> 获取,通常是以 <code>140</code> 或 <code>160</code> 开头的 10 位整数。 |
72
+ | userID | string | 当前用户的唯一 ID,仅包含英文字母、数字、连字符和下划线。为避免多端登录冲突,<strong>请勿使用</strong><code>1</code>、<code>123</code><strong>等简单 ID</strong>。 |
73
+ | userSig | string | 用于腾讯云鉴权的票据。请注意:<br>- 开发环境:您可以采用本地 <code>GenerateTestUserSig.genTestSig</code> 函数生成 userSig 或者通过 <a href="https://console.cloud.tencent.com/im/tool-usersig">UserSig 辅助工具</a> 生成临时的 UserSig。<br>- 生产环境:为了防止密钥泄露,请务必采用服务端生成 UserSig 的方式。详细信息请参考 <a href="https://cloud.tencent.com/document/product/647/17275">服务端生成 UserSig</a>。<br>更多信息请参见 <a href="https://cloud.tencent.com/document/product/647/17275">如何计算及使用 UserSig</a>。 |
74
+
75
+ ## 实现接听通话
76
+
77
+ ### 步骤1:创建通话界面
78
+
79
+ 您需要创建一个通话页面,当发起通话时唤起通话页面,实现方式如下:
80
+ 1. **创建通话页面**:您可以新建一个页面作为通话宿主页面,用于响应来电时的跳转逻辑。
81
+
82
+ 2. **通话页面绑定 CallCoreView**:通话视图核心组件,自动监听 **CallState** 数据并完成画面渲染,同时提供布局切换、头像与图标配置等 UI 定制化能力。
83
+
84
+ ``` html
85
+ <call-core-view style="height: 50px; width: 50px;"></call-core-view>
86
+ ```
87
+
88
+ > **说明:**
89
+ >
90
+
91
+ > **CallCoreView **为原生组件,不需要在文件中单独进行 **import**。挂载在页面上即可使用。
92
+ >
93
+
94
+ **CallCoreView 视图组件功能说明:**
95
+
96
+ |**功能**|**说明**|**参考文档**|
97
+ |---------|---------|---------|
98
+ |**设置布局模式**|支持自由切换布局模式。若未设置,将根据通话人数自动适配布局。|切换布局模式|
99
+ |**设置头像**|支持通过传入头像资源路径,为特定用户自定义头像。|自定义默认头像|
100
+ |**设置音量提示图标**|支持根据不同音量等级,配置个性化的音量指示图标。|自定义音量提示的图标|
101
+ |**设置网络提示图标**|支持根据实时网络质量,配置对应的网络状态提示图标。|自定义网络提示的图标|
102
+ |**设置等待接听用户的动画**|在多人通话场景下,支持传入 GIF 图像路径,为待接听状态的用户展示动画。|自定义 loading 动画|
103
+
104
+ ### 步骤2:添加通话控制按钮
105
+
106
+ 您可以参考 **DeviceState** 、**CallState** 提供的 API ,自定义添加您的按钮。
107
+ - **DeviceState 功能说明:**麦克风(开关 / 音量)、摄像头(开关 / 切换 / 画质)、屏幕共享,设备状态实时监听。建议将对应方法绑定至按钮点击事件,并通过监听设备状态变更来实时刷新按钮的 UI 状态。
108
+
109
+ - **CallState 功能说明:**接听、挂断、拒接等核心通话控制能力。建议将对应方法绑定至按钮点击事件,并监听通话状态的变化,以确保按钮显示与当前通话阶段保持同步。
110
+
111
+ - **图标资源下载:**按钮图标可以直接从 [GitHub](https://github.com/Tencent-RTC/TUIKit_uni-app/tree/main/App) 下载。这些图标由我们的设计师专为 TUICallKit 打造,无版权风险,可放心使用。
112
+
113
+ | <strong>图标:</strong> | | | | | | | | |
114
+ | --- | --- | --- | --- | --- | --- | --- | --- | --- |
115
+
116
+ **以下是添加"接听"和"拒接"按钮的实现方式:**
117
+
118
+ 1. **添加接听按钮:**添加"接听"按钮,将其点击事件绑定至 [accept](https://liteav.sdk.qcloud.com/doc/product/tuikit/atomic-x/uni-app/zh/v1.0/api/index.html#accept) 方法。
119
+
120
+ ``` typescript
121
+ <template>
122
+ <view class="btn" @tap="handleAccept">
123
+ <image class="btn-img" :src="ACCEPT_SRC"></image>
124
+ <text class="btn-text">接听</text>
125
+ </view>
126
+ </template>
127
+
128
+ <script setup lang="ts">
129
+ import ACCEPT_SRC from "../../../static/icon/accept.png"; // 替换为您项目的真实图标路径
130
+ import { useCallState } from '@/uni_modules/tuikit-atomic-x/state/CallState';
131
+
132
+ const { accept } = useCallState();
133
+
134
+ const handleAccept = () => {
135
+ accept();
136
+ };
137
+ </script>
138
+
139
+ <style scoped>
140
+ .btn {
141
+ width: 60px;
142
+ margin: 10px 20px;
143
+ }
144
+
145
+ .btn-img {
146
+ width: 60px;
147
+ height: 60px;
148
+ border-radius: 140px;
149
+ }
150
+
151
+ .btn-text {
152
+ font-size: 12px;
153
+ color: #d5e0f2;
154
+ font-weight: 400;
155
+ text-align: center;
156
+ margin-top: 10px;
157
+ }
158
+ </style>
159
+
160
+ ```
161
+ 2. **添加拒接按钮:**添加"拒接"按钮,将其点击事件分别绑定至 [reject](https://liteav.sdk.qcloud.com/doc/product/tuikit/atomic-x/uni-app/zh/v1.0/api/index.html#reject) 方法。
162
+
163
+ ``` typescript
164
+ <template>
165
+ <view class="btn" @tap="handleReject">
166
+ <image class="btn-img" :src="REJECT_SRC"></image>
167
+ <text class="btn-text">拒绝</text>
168
+ </view>
169
+ </template>
170
+
171
+ <script setup lang="ts">
172
+ import REJECT_SRC from "../../../static/icon/hangup.png"; // 替换为您项目的真实图标路径
173
+ import { useCallState } from '@/uni_modules/tuikit-atomic-x/state/CallState';
174
+
175
+ const { reject } = useCallState();
176
+
177
+ const handleReject = () => {
178
+ reject();
179
+ };
180
+ </script>
181
+
182
+ <style scoped>
183
+ .btn {
184
+ margin: 10px 20px;
185
+ }
186
+
187
+ .btn-img {
188
+ width: 60px;
189
+ height: 60px;
190
+ border-radius: 140px;
191
+ }
192
+
193
+ .btn-text {
194
+ font-size: 12px;
195
+ color: #d5e0f2;
196
+ font-weight: 400;
197
+ text-align: center;
198
+ margin-top: 10px;
199
+ }
200
+ </style>
201
+ ```
202
+ 3. **拨打方取消通话或您拒接时销毁界面:**无论拨打方取消呼叫,还是接收方拒接,均会触发 `onCallEnded`(通话结束)事件。建议监听此事件,以便在通话终止时及时关闭(销毁)通话界面。
203
+
204
+ ``` typescript
205
+ import { useCallState } from '@/uni_modules/tuikit-atomic-x/state/CallState';
206
+ import { useDeviceState } from '@/uni_modules/tuikit-atomic-x/state/DeviceState';
207
+
208
+ const { addCallListener } = useCallState();
209
+ const { closeLocalCamera, closeLocalMicrophone } = useDeviceState();
210
+
211
+ /**
212
+ * 初始化通话服务(最小示例:仅处理通话结束事件并回退页面)建议在应用初始化时执行该函数
213
+ */
214
+ export function initCallService() {
215
+ addCallListener('onCallEnded', (event: string) => {
216
+ let res: any;
217
+ try {
218
+ res = JSON.parse(event);
219
+ } catch (error) {
220
+ console.error('[CallService] onCallEnded parse error:', error);
221
+ return;
222
+ }
223
+
224
+ console.log('[CallService] onCallEnded, reason:', res.reason);
225
+
226
+ // 关闭本地设备
227
+ closeLocalCamera();
228
+ closeLocalMicrophone();
229
+
230
+ // 页面回退
231
+ const pages = getCurrentPages();
232
+ if (pages.length > 1) {
233
+ uni.navigateBack({ delta: 1 });
234
+ } else {
235
+ uni.redirectTo({ url: '/pages/index/index' }); // 示例路径:请结合您的项目真实路径进行修改
236
+ }
237
+ });
238
+ }
239
+
240
+ ```
241
+
242
+ ### 步骤3:来电唤起通话界面
243
+
244
+ 在您的项目中监听来电事件(`onCallReceived`),当收到来电时唤起通话页面。实现方式如下:
245
+ 1. **监听来电事件:**订阅 `onCallReceived` 事件。
246
+
247
+ 2. **唤起通话界面:**收到来电唤起通话页面。
248
+
249
+ ``` typescript
250
+ import { useCallState } from '@/uni_modules/tuikit-atomic-x/state/CallState';
251
+
252
+ const { addCallListener } = useCallState();
253
+
254
+ // 通话页面路由
255
+ const CALL_PAGE = '/uni_modules/tuikit-atomic-x/pages/call'; // 替换为您在步骤1 中创建的真实路径
256
+ // 建议在应用初始化的时候执行该方法
257
+ export function initCallService() {
258
+ addCallListener('onCallReceived', (event: string) => {
259
+ uni.navigateTo({
260
+ url: CALL_PAGE
261
+ });
262
+ });
263
+ }
264
+ ```
265
+
266
+ ### 步骤4:来电播放提示
267
+
268
+ 在您的项目中监听来电事件(`onCallReceived`),当收到来电时播放铃声。实现方式如下:
269
+ 1. **监听来电事件:**订阅 `onCallReceived` 事件。
270
+
271
+ 2. **唤起通话界面:**收到来电播放铃声。
272
+
273
+ ``` typescript
274
+ import { watch } from 'vue';
275
+ import { useCallState } from '@/uni_modules/tuikit-atomic-x/state/CallState';
276
+
277
+ const { addCallListener, selfInfo } = useCallState();
278
+
279
+ /**
280
+ * 创建或获取音频播放实例(单例复用)
281
+ */
282
+ function ensureAudioContext() {
283
+ if (!uni.$innerAudioContext) {
284
+ const ctx = uni.createInnerAudioContext();
285
+ ctx.onError((err: any) => {
286
+ console.error('[CallService] innerAudioContext onError:', err?.errCode, err?.errMsg || err);
287
+ });
288
+ uni.$innerAudioContext = ctx;
289
+ }
290
+ return uni.$innerAudioContext;
291
+ }
292
+
293
+ /**
294
+ * 播放铃声
295
+ * @param src - 铃声文件路径
296
+ */
297
+ function playRingtone(src: string) {
298
+ const ctx = ensureAudioContext();
299
+ try {
300
+ ctx.stop();
301
+ } catch (_e) {}
302
+ ctx.src = src;
303
+ ctx.loop = true;
304
+ ctx.autoplay = true;
305
+ setTimeout(() => {
306
+ try {
307
+ ctx.play();
308
+ } catch (e) {
309
+ console.warn('[CallService] playRingtone play() error:', e);
310
+ }
311
+ }, 50);
312
+ }
313
+
314
+ /**
315
+ * 停止铃声
316
+ */
317
+ function stopRingtone() {
318
+ if (uni.$innerAudioContext) {
319
+ try {
320
+ uni.$innerAudioContext.loop = false;
321
+ uni.$innerAudioContext.stop();
322
+ } catch (e) {
323
+ console.warn('[CallService] stopRingtone error:', e);
324
+ }
325
+ }
326
+ }
327
+
328
+ export { playRingtone, stopRingtone };
329
+
330
+ // 在应用启动的时候执行该方法
331
+ export function initCallService() {
332
+ ensureAudioContext();
333
+
334
+ // 监听通话状态变化:接通(status=2)或结束(status=0)时停止铃声
335
+ watch(() => selfInfo.value, (newVal) => {
336
+ if (newVal?.status === 2 || newVal?.status === 0) {
337
+ stopRingtone();
338
+ }
339
+ }, { immediate: true, deep: true });
340
+
341
+ // 收到来电时播放铃声
342
+ addCallListener('onCallReceived', () => {
343
+ playRingtone('/static/audio/ring.mp3');
344
+ });
345
+
346
+ // 通话结束时停止铃声
347
+ addCallListener('onCallEnded', () => {
348
+ stopRingtone();
349
+ });
350
+ }
351
+ ```
352
+
353
+ ### 步骤5:来电打开媒体设备
354
+
355
+ 收到来电时,您可以通过 `onCallReceived` 事件获取本次通话的媒体类型。为了提供更佳的用户体验,建议在唤起通话界面时,根据通话类型预先开启对应的媒体设备。实现步骤如下:
356
+ 1. **监听来电事件**:订阅 `onCallReceived` 事件。
357
+
358
+ 2. **根据来电媒体类型打开设备:**若为语音通话仅开启麦克风,若为视频通话开启麦克风和摄像头。
359
+
360
+ ``` typescript
361
+ import { useCallState } from '@/uni_modules/tuikit-atomic-x/state/CallState';
362
+ import { useDeviceState } from '@/uni_modules/tuikit-atomic-x/state/DeviceState';
363
+
364
+ const { addCallListener } = useCallState();
365
+ const { openLocalCamera, openLocalMicrophone } = useDeviceState();
366
+
367
+ // 通话页面路由
368
+ const CALL_PAGE = '/uni_modules/tuikit-atomic-x/pages/call'; // 替换为您在步骤1 中创建的真实路径
369
+ // 在应用启动的时候执行该方法
370
+ export function initCallService() {
371
+ addCallListener('onCallReceived', (event: string) => {
372
+ let res: any;
373
+ try {
374
+ res = JSON.parse(event);
375
+ } catch (error) {
376
+ console.error('[CallService] onCallReceived parse error:', error);
377
+ return;
378
+ }
379
+ // 视频通话时打开摄像头
380
+ if (res.mediaType === 1) {
381
+ openLocalCamera({ isFront: true });
382
+ }
383
+ // 打开麦克风
384
+ openLocalMicrophone();
385
+ // 跳转到通话页面
386
+ uni.navigateTo({
387
+ url: CALL_PAGE
388
+ });
389
+ });
390
+ }
391
+ ```
392
+
393
+ ### 运行效果
394
+
395
+ 当您完成以上 6 步后,"接听一通电话"运行效果如下:
396
+
397
+ ## 定制页面
398
+
399
+ **CallCoreView** 提供了完善的 UI 定制能力,支持头像及音量提示等图标的自由替换。**为助力快速集成,您可以直接从 **[GitHub](https://github.com/Tencent-RTC/TUIKit_uni-app/tree/main/App)**下载。这些图标由我们的设计师专为 TUICallKit 打造,无版权风险,可放心使用。**
400
+
401
+ ### 自定义音量提示的图标
402
+
403
+ 您可以通过设置 **CallCoreView** 组件的 `volumeLevelIcons` 属性来设置音量大小等级不同的提示图标。
404
+
405
+ `volumeLevelIcons`**属性设置示例代码**:
406
+ ``` typescript
407
+ <template>
408
+ <view class="call-view-container">
409
+ <view :style="{ height: systemInfo?.windowHeight + 'px', width: systemInfo?.safeArea?.width + 'px' }">
410
+ <call-core-view
411
+ :style="{ height: systemInfo?.windowHeight + 'px', width: systemInfo?.safeArea?.width + 'px' }"
412
+ :volumeLevelIcons="volumeLevelIcons"
413
+ ></call-core-view>
414
+ </view>
415
+ </view>
416
+ </template>
417
+
418
+ <script setup>
419
+ import { ref, onMounted } from 'vue';
420
+
421
+ const systemInfo = ref({});
422
+
423
+ /**
424
+ * 将 /static/ 相对路径转为原生层可用的本地绝对路径
425
+ */
426
+ function toAbsolutePath(relativePath) {
427
+ if (plus && plus.io && plus.io.convertLocalFileSystemURL) {
428
+ return plus.io.convertLocalFileSystemURL(relativePath);
429
+ }
430
+ return relativePath;
431
+ }
432
+
433
+ /**
434
+ * 批量转换对象中所有 value 的路径为绝对路径
435
+ */
436
+ function convertIconPaths(iconMap) {
437
+ const result = {};
438
+ Object.keys(iconMap).forEach(key => {
439
+ result[key] = toAbsolutePath(iconMap[key]);
440
+ });
441
+ return result;
442
+ }
443
+
444
+ // 音量等级图标:key 为等级名称,value 为图标本地绝对路径
445
+ const volumeLevelIcons = ref(convertIconPaths({
446
+ "Mute": "/static/images/callview-self-mute.png", // 可以替换您项目中的实际图标路径
447
+ "Low": "/static/images/callview-network.png" // 可以替换您项目中的实际图标路径
448
+ }));
449
+
450
+ onMounted(() => {
451
+ uni.getSystemInfo({
452
+ success: (res) => {
453
+ systemInfo.value = res;
454
+ }
455
+ });
456
+ });
457
+ </script>
458
+
459
+ <style>
460
+ .call-view-container {
461
+ background: rgba(15, 16, 20, 0.5);
462
+ overflow: hidden;
463
+ }
464
+ </style>
465
+ ```
466
+
467
+ > **说明:**
468
+ >
469
+
470
+ > uni-app 传递给原生层的参数只支持本地路径,因此需要将相对路径转化为本地路径
471
+ >
472
+
473
+ - **属性参数详细说明:**
474
+
475
+ | <strong>参数</strong> | <strong>类型</strong> | <strong>是否必填</strong> | <strong>说明</strong> |
476
+ | --- | --- | --- | --- |
477
+ | icons | [String: String] | 是 | 音量等级与图标资源的映射表。结构说明如下:<br>- key ( VolumeLevel ) 表示音量等级:<br>- <code>Mute</code>:表示麦克风关闭,静音状态。<br>- <code>Low</code>:表示音量范围 (0-25]。<br>- <code>Medium</code>:表示音量范围 (25-50]。<br>- <code>High</code>:表示音量范围 (50-75]。<br>- <code>Peak</code>:表示音量范围 (75-100]。<br>- Value ( String ) 表示对应音量等级的图标资源路径。 |
478
+
479
+ - **音量提示图标:**
480
+
481
+ | <strong>图标</strong> | <strong>说明</strong> |
482
+ | --- | --- |
483
+ | | 【图标含义】音量提示图标。<br>【推荐用法】您可以将该图标等级设置为 <code>Low</code> 或 <code>Medium</code>,当用户音量大于对应等级时显示。 |
484
+ | | 【图标含义】静音图标。<br>【推荐用法】您可以将该图标等级设置为 <code>Mute</code>,当该用户静音时显示。 |
485
+
486
+ ### 自定义网络提示的图标
487
+
488
+ 您可以设置 **CallCoreView** 组件的 `networkQualityIcons` 属性设置不同网络状态的提示图标。
489
+
490
+ - `networkQualityIcons`** 属性设置示例代码:**
491
+
492
+ ``` typescript
493
+
494
+ <template>
495
+ <view class="call-view-container">
496
+ <view :style="{ height: systemInfo?.windowHeight + 'px', width: systemInfo?.safeArea?.width + 'px' }">
497
+ <call-core-view
498
+ :style="{ height: systemInfo?.windowHeight + 'px', width: systemInfo?.safeArea?.width + 'px' }"
499
+ :networkQualityIcons="networkQualityIcons"
500
+ ></call-core-view>
501
+ </view>
502
+ </view>
503
+ </template>
504
+
505
+ <script setup>
506
+ import { ref, onMounted } from 'vue';
507
+
508
+ const systemInfo = ref({});
509
+
510
+ /**
511
+ * 将 /static/ 相对路径转为原生层可用的本地绝对路径
512
+ */
513
+ function toAbsolutePath(relativePath) {
514
+ if (plus && plus.io && plus.io.convertLocalFileSystemURL) {
515
+ return plus.io.convertLocalFileSystemURL(relativePath);
516
+ }
517
+ return relativePath;
518
+ }
519
+
520
+ /**
521
+ * 批量转换对象中所有 value 的路径为绝对路径
522
+ */
523
+ function convertIconPaths(iconMap) {
524
+ const result = {};
525
+ Object.keys(iconMap).forEach(key => {
526
+ result[key] = toAbsolutePath(iconMap[key]);
527
+ });
528
+ return result;
529
+ }
530
+
531
+ const networkQualityIcons = ref(convertIconPaths({
532
+ "BAD": "/static/images/callview-network-bad.png", // 可以替换您项目中的实际图标路径
533
+ "VERY_BAD": "/static/images/callview-network-bad.png" // 可以替换您项目中的实际图标路径
534
+ }));
535
+
536
+ onMounted(() => {
537
+ uni.getSystemInfo({
538
+ success: (res) => {
539
+ systemInfo.value = res;
540
+ }
541
+ });
542
+ });
543
+ </script>
544
+
545
+ <style>
546
+ .call-view-container {
547
+ background: rgba(15, 16, 20, 0.5);
548
+ overflow: hidden;
549
+ }
550
+ </style>
551
+ ```
552
+ - `networkQualityIcons`**接口参数详细说明:**
553
+
554
+ | <strong>参数</strong> | <strong>类型</strong> | <strong>是否必填</strong> | <strong>说明</strong> |
555
+ | --- | --- | --- | --- |
556
+ | icons | [String: String] | 是 | 网络质量与图标资源的映射表。结构说明如下:<br>- Key ( String):表示网络质量等级:<br>- <code>UNKNOWN</code>:未知网络状态。<br>- <code>EXCELLENT</code>:网络状态极佳。<br>- <code>GOOD</code>:网络状态较好。<br>- <code>POOR</code>:网络状态较差。<br>- <code>BAD</code>:网络状态差。<br>- <code>VERY_BAD</code>:网络状态极差。<br>- <code>DOWN</code>:网络断开。<br>- Value ( String ):对应网络状态的图标资源路径。 |
557
+
558
+ - **网络较差的提示图标:**
559
+
560
+ | <strong>图标</strong> | <strong>说明</strong> |
561
+ | --- | --- |
562
+ | | 【图标含义】网络较差的提示图标。<br>【推荐用法】您可以将该图标等级设置为 <code>BAD</code>、<code>VERY_BAD</code> 或 <code>DOWN</code> ,当网络较差时显示该图标。 |
563
+
564
+ ### 自定义默认头像
565
+
566
+ 您可以设置 **CallCoreView** 的 `participantAvatars` 属性设置用户头像。建议您监听响应式数据 allParticipants(所有参与通话的成员):当获取到用户头像时设置并展示;若用户未设置头像或加载失败,则显示默认头像(占位图)。
567
+
568
+ `participantAvatars`**属性设置示例代码:**
569
+ ``` typescript
570
+ <template>
571
+ <view class="call-view-container">
572
+ <view :style="{ height: systemInfo?.windowHeight + 'px', width: systemInfo?.safeArea?.width + 'px' }">
573
+ <call-core-view
574
+ :style="{ height: systemInfo?.windowHeight + 'px', width: systemInfo?.safeArea?.width + 'px' }"
575
+ :participantAvatars="participantAvatars"
576
+ ></call-core-view>
577
+ </view>
578
+ </view>
579
+ </template>
580
+
581
+ <script setup>
582
+ import { ref, watch, onMounted } from 'vue';
583
+ import { useCallState } from '@/uni_modules/tuikit-atomic-x/state/CallState';
584
+
585
+ const { allParticipants } = useCallState();
586
+
587
+ const systemInfo = ref({});
588
+ const participantAvatars = ref({});
589
+ const avatarCache = {};
590
+
591
+ const DEFAULT_AVATAR_URL = "https://liteav.sdk.qcloud.com/app/res/picture/voiceroom/avatar/user_avatar1.png";
592
+ let defaultAvatarLocalPath = "";
593
+ let defaultAvatarReady = false;
594
+
595
+ /**
596
+ * 将相对路径转为原生层可用的本地绝对路径
597
+ */
598
+ function toAbsolutePath(relativePath) {
599
+ if (plus && plus.io && plus.io.convertLocalFileSystemURL) {
600
+ return plus.io.convertLocalFileSystemURL(relativePath);
601
+ }
602
+ return relativePath;
603
+ }
604
+
605
+ /**
606
+ * 下载头像并缓存,返回本地绝对路径
607
+ */
608
+ function downloadAvatar(url) {
609
+ if (avatarCache[url]) {
610
+ return Promise.resolve(avatarCache[url]);
611
+ }
612
+ return new Promise((resolve) => {
613
+ uni.downloadFile({
614
+ url,
615
+ success: (res) => {
616
+ if (res.statusCode === 200) {
617
+ const absolutePath = toAbsolutePath(res.tempFilePath);
618
+ avatarCache[url] = absolutePath;
619
+ resolve(absolutePath);
620
+ } else {
621
+ resolve(defaultAvatarLocalPath || "");
622
+ }
623
+ },
624
+ fail: () => {
625
+ resolve(defaultAvatarLocalPath || "");
626
+ }
627
+ });
628
+ });
629
+ }
630
+
631
+ // 预下载默认头像
632
+ const defaultAvatarPromise = downloadAvatar(DEFAULT_AVATAR_URL).then(localPath => {
633
+ defaultAvatarLocalPath = localPath;
634
+ defaultAvatarReady = true;
635
+ // 默认头像就绪后,补刷一次参与者头像
636
+ if (allParticipants.value && allParticipants.value.length > 0) {
637
+ updateParticipantAvatars(allParticipants.value);
638
+ }
639
+ });
640
+
641
+ /**
642
+ * 根据参与者列表,下载头像并构建 { userId: localPath } 映射
643
+ */
644
+ async function updateParticipantAvatars(participants) {
645
+ if (!participants || participants.length === 0) {
646
+ participantAvatars.value = {};
647
+ return;
648
+ }
649
+ if (!defaultAvatarReady && defaultAvatarPromise) {
650
+ await defaultAvatarPromise;
651
+ }
652
+ const avatarMap = {};
653
+ const tasks = [];
654
+ participants.forEach(participant => {
655
+ if (participant.id && participant.avatarURL) {
656
+ tasks.push(
657
+ downloadAvatar(participant.avatarURL).then(localPath => {
658
+ avatarMap[participant.id] = localPath;
659
+ })
660
+ );
661
+ } else if (participant.id) {
662
+ avatarMap[participant.id] = defaultAvatarLocalPath || "";
663
+ }
664
+ });
665
+ await Promise.all(tasks);
666
+ participantAvatars.value = avatarMap;
667
+ }
668
+
669
+ // 监听参与者变化,更新头像映射
670
+ watch(() => allParticipants.value, async (newVal) => {
671
+ if (!newVal) return;
672
+ await updateParticipantAvatars(newVal);
673
+ }, { immediate: true, deep: true });
674
+
675
+ onMounted(() => {
676
+ uni.getSystemInfo({
677
+ success: (res) => {
678
+ systemInfo.value = res;
679
+ }
680
+ });
681
+ });
682
+ </script>
683
+
684
+ <style>
685
+ .call-view-container {
686
+ background: rgba(15, 16, 20, 0.5);
687
+ overflow: hidden;
688
+ }
689
+ </style>
690
+ ```
691
+ - `participantAvatars`**属性参数详细说明:**
692
+
693
+ | <strong>参数</strong> | <strong>类型</strong> | <strong>是否必填</strong> | <strong>说明</strong> |
694
+ | --- | --- | --- | --- |
695
+ | avatars | [String: String] | 是 | 用户头像映射表。字典结构说明如下:<br>- Key:用户的 userID。<br>- Value:该用户的头像资源绝对路径。 |
696
+
697
+ - **默认头像资源:**
698
+
699
+ | <strong>图标</strong> | <strong>说明</strong> |
700
+ | --- | --- |
701
+ | | 【图标含义】默认头像。<br>【推荐用法】当用户头像加载失败或无头像时,您可以给该用户设置此默认头像。 |
702
+
703
+ ### 自定义 loading 动画
704
+
705
+ 您可以设置 **CallCoreView** 的 `waitingAnimation` 属性,为等待中用户设置等待动画获得更好的体验。
706
+
707
+ - `waitingAnimation`** 属性设置示例代码:**
708
+
709
+ ``` typescript
710
+ <template>
711
+ <view class="call-view-container">
712
+ <view :style="{ height: systemInfo?.windowHeight + 'px', width: systemInfo?.safeArea?.width + 'px' }">
713
+ <call-core-view
714
+ :style="{ height: systemInfo?.windowHeight + 'px', width: systemInfo?.safeArea?.width + 'px' }"
715
+ :waitingAnimation="waitingAnimation"
716
+ ></call-core-view>
717
+ </view>
718
+ </view>
719
+ </template>
720
+
721
+ <script setup>
722
+ import { ref, onMounted } from 'vue';
723
+
724
+ const systemInfo = ref({});
725
+
726
+ /**
727
+ * 将 /static/ 相对路径转为原生层可用的本地绝对路径
728
+ */
729
+ function toAbsolutePath(relativePath) {
730
+ if (plus && plus.io && plus.io.convertLocalFileSystemURL) {
731
+ return plus.io.convertLocalFileSystemURL(relativePath);
732
+ }
733
+ return relativePath;
734
+ }
735
+
736
+ // 等待动画 GIF:传入本地绝对路径供原生组件渲染
737
+ const waitingAnimation = ref(toAbsolutePath("/static/images/callview-loading.gif")); // 可以替换您项目中的实际图标路径
738
+
739
+ onMounted(() => {
740
+ uni.getSystemInfo({
741
+ success: (res) => {
742
+ systemInfo.value = res;
743
+ }
744
+ });
745
+ });
746
+ </script>
747
+
748
+ <style>
749
+ .call-view-container {
750
+ background: rgba(15, 16, 20, 0.5);
751
+ overflow: hidden;
752
+ }
753
+ </style>
754
+ ```
755
+ - `waitingAnimation`** 接口参数详细说明:**
756
+
757
+ |**参数**|**类型**|**是否必填**|**说明**|
758
+ |---------|---------|---------|---------|
759
+ |path|String|是|GIF 格式图像资源的绝对路径。|
760
+
761
+ - **等待接听的动画:**
762
+
763
+ | <strong>图标</strong> | <strong>说明</strong> |
764
+ | --- | --- |
765
+ | | 【图标含义】用户等待接听动画。<br>【推荐用法】群组通话时设置的动画。设置后,当用户的状态为等待接听时,显示该动画。 |
766
+
767
+ ### 添加通话计时提示
768
+
769
+ 通话计时可通过响应式数据 activeCall 的 `duration` 字段实时获得,实时显示通话计时的实现方式如下:
770
+
771
+ **绑定通话计时数据**:将 `activeCall.duration` 字段绑定至 UI 。该字段为响应式数据,会自动驱动 UI 实时刷新,无需手动维护定时器。
772
+ ``` typescript
773
+ <template>
774
+ <view v-if="isConnected" class="call-timer">
775
+ <text class="timer-text">{{ formattedTime }}</text>
776
+ </view>
777
+ </template>
778
+
779
+ <script setup lang="ts">
780
+ import { computed } from 'vue';
781
+ import { useCallState } from '@/uni_modules/tuikit-atomic-x/state/CallState';
782
+
783
+ const { selfInfo, activeCall } = useCallState();
784
+
785
+ const isConnected = computed(() => {
786
+ return selfInfo.value?.status === 2;
787
+ });
788
+
789
+ const formattedTime = computed(() => {
790
+ const duration = activeCall.value?.duration ?? 0;
791
+ const hours = Math.floor(duration / 3600);
792
+ const minutes = Math.floor((duration % 3600) / 60);
793
+ const seconds = duration % 60;
794
+ const pad = (n: number) => n.toString().padStart(2, '0');
795
+ if (hours > 0) {
796
+ return `${pad(hours)}:${pad(minutes)}:${pad(seconds)}`;
797
+ }
798
+ return `${pad(minutes)}:${pad(seconds)}`;
799
+ });
800
+ </script>
801
+
802
+ <style scoped>
803
+ .call-timer {
804
+ display: flex;
805
+ align-items: center;
806
+ justify-content: center;
807
+ }
808
+
809
+ .timer-text {
810
+ font-size: 28rpx;
811
+ color: #FFFFFF;
812
+ font-weight: 400;
813
+ }
814
+ </style>
815
+ ```
816
+
817
+ ## 更多功能
818
+
819
+ ### 自定义用户头像/昵称
820
+
821
+ 通话开始前,您可以通过 [setSelfInfo](https://liteav.sdk.qcloud.com/doc/product/tuikit/atomic-x/uni-app/zh/v1.0/api/index.html#setSelfInfo) 方法,设置自己的昵称和头像。
822
+ - **setSelfInfo 示例代码**:
823
+
824
+ ``` typescript
825
+ import { useLoginState } from "@/uni_modules/tuikit-atomic-x/state/LoginState";
826
+
827
+ const { setSelfInfo } = useLoginState();
828
+
829
+ /**
830
+ * 设置当前登录用户的个人信息(昵称、头像等)
831
+ */
832
+ export const setSelfUserInfo = (userID: string, nickname: string, avatarURL: string): void => {
833
+ setSelfInfo({
834
+ userProfile: {
835
+ userID,
836
+ nickname,
837
+ avatarURL,
838
+ },
839
+ success: () => {
840
+ console.log('用户信息设置成功');
841
+ },
842
+ fail: (errCode: number, errMsg: string) => {
843
+ console.error('用户信息设置失败:', errCode, errMsg);
844
+ },
845
+ });
846
+ };
847
+ ```
848
+ - **setSelfInfo 接口参数详细说明:**
849
+
850
+ | <strong>参数</strong> | <strong>类型</strong> | <strong>是否必填</strong> | <strong>说明</strong> |
851
+ | --- | --- | --- | --- |
852
+ | userProfile | UserProfile | 是 | 用户信息结构体:<br>- <code>userID</code>:用户的 ID<br>- <code>avatarURL</code>:用户头像的 URL<br>- <code>nickname</code>:用户的昵称<br>更多字段详情可参考 UserProfile。 |
853
+
854
+ ### 切换布局模式
855
+
856
+ **CallCoreView** 内置三种布局模式,您可以设置 `layoutTemplate` 属性来设置布局模式。若未主动配置,**CallCoreView** 将根据通话人数自动适配:1 V 1 场景下默认采用 `Float` 模式,多人通话场景下则自动切换为 `Grid` 模式。不同布局模式的说明如下:
857
+ | <strong>Float 模式</strong> | <strong>Grid 模式</strong> | <strong>PIP 模式</strong> |
858
+ | --- | --- | --- |
859
+ | | | |
860
+ | - <strong>布局逻辑:</strong>呼叫等待时全屏显示己方画面;接通后全屏显示对方画面,己方画面以悬浮小窗展示。<br>- <strong>交互特性:</strong>支持小窗拖拽移动,点击小窗可实现大小画面互换。 | - <strong>布局逻辑:</strong>所有成员画面呈网格状平铺排列成宫格模式布局,适用 2 人以上通话,支持点击放大画面功能。<br>- <strong>交互特性:</strong>支持点击特定成员画面放大查看。 | - <strong>布局逻辑:</strong>1 v 1 场景固定显示对方画面,多人场景:采用当前发言者(Active Speaker) 策略,自动识别并全屏展示正在说话的用户。<br>- <strong>交互特性:</strong>等待时显示自己的画面,接通后还会显示通话计时。 |
861
+
862
+ - `layoutTemplate`**属性设置示例代码:**
863
+
864
+ ``` typescript
865
+ <template>
866
+ <view class="call-view-container">
867
+ <view :style="{ height: systemInfo?.windowHeight + 'px', width: systemInfo?.safeArea?.width + 'px' }">
868
+ <call-core-view
869
+ :style="{ height: systemInfo?.windowHeight + 'px', width: systemInfo?.safeArea?.width + 'px' }"
870
+ :layoutTemplate="layoutTemplate"
871
+ ></call-core-view>
872
+ </view>
873
+ </view>
874
+ </template>
875
+
876
+ <script setup>
877
+ import { ref, watch, onMounted } from 'vue';
878
+ import { useCallState } from '@/uni_modules/tuikit-atomic-x/state/CallState';
879
+
880
+ const { activeCall } = useCallState();
881
+
882
+ const systemInfo = ref({});
883
+ // 布局模板:'Float' 单人浮窗布局,'Grid' 多人宫格布局
884
+ const layoutTemplate = ref("Grid");
885
+
886
+ // 根据通话信息自动切换布局:多人或群聊用 Grid,单人用 Float
887
+ watch(() => activeCall.value, (newValue) => {
888
+ if (!newValue || !newValue.inviteeIds) {
889
+ return;
890
+ }
891
+ const newTemplate = (newValue.inviteeIds.length > 1 || newValue.chatGroupId !== '') ? 'Grid' : 'Float';
892
+ if (layoutTemplate.value !== newTemplate) {
893
+ layoutTemplate.value = newTemplate;
894
+ }
895
+ }, { immediate: true, deep: true });
896
+
897
+ onMounted(() => {
898
+ uni.getSystemInfo({
899
+ success: (res) => {
900
+ systemInfo.value = res;
901
+ }
902
+ });
903
+ });
904
+ </script>
905
+
906
+ <style>
907
+ .call-view-container {
908
+ background: rgba(15, 16, 20, 0.5);
909
+ overflow: hidden;
910
+ }
911
+ </style>
912
+
913
+ ```
914
+ - `layoutTemplate`** 属性参数详细说明:**
915
+
916
+ | <strong>参数</strong> | <strong>类型</strong> | <strong>说明</strong> |
917
+ | --- | --- | --- |
918
+ | <code>layoutTemplate</code> | String | CallCoreView 的布局模式<br>- Float:<br>- 布局逻辑:呼叫等待时全屏显示己方画面;接通后全屏显示对方画面,己方画面以悬浮小窗展示。<br>- 交互特性:支持小窗拖拽移动,点击小窗可实现大小画面互换。<br>- Grid:<br>- 布局逻辑:所有成员画面呈网格状平铺排列成宫格模式布局,适用 2 人以上通话,支持点击放大画面功能。<br>- 交互特性:支持点击特定成员画面放大查看。<br>- PIP:<br>- 布局逻辑:1v1 场景固定显示对方画面,多人场景:采用当前发言者(Active Speaker) 策略,自动识别并全屏展示正在说话的用户。<br>- 交互特性:等待时显示自己的画面,接通后还会显示通话计时。 |
919
+
920
+ ## 下一步
921
+
922
+ 恭喜您,已经完成了“接听一通电话”,接下来,您可参考 拨打第一通电话 实现拨打电话功能。
923
+
924
+ ## 常见问题
925
+
926
+ ### 如何保证通话过程中屏幕常亮?
927
+
928
+ uni-app 官方提供了对应的设置接口 [uni.setScreenBrightness](https://uniapp.dcloud.net.cn/api/system/brightness.html)。
929
+
930
+ ### 如何禁止系统侧滑返回上一个页面的行为?
931
+
932
+ iOS 端可以通过设置页面上的 disableSwipeBack 属性进行禁止。详情参考 [uni-app 官方文档](https://uniapp.dcloud.net.cn/collocation/pages.html)。
933
+
934
+ Android 端可以通过 onBackPress 拦截系统侧滑和物理返回,示例代码如下:
935
+
936
+ > **注意:**
937
+ >
938
+
939
+ > 使用该方式进行系统侧滑和物理返回的拦截需要确保该页面使用的是 [自定义导航栏](https://uniapp.dcloud.net.cn/collocation/pages.html#customnav)。
940
+ >
941
+
942
+ ``` typescript
943
+ <script setup>
944
+ import { onBackPress } from '@dcloudio/uni-app'
945
+
946
+ // 拦截系统侧滑和物理返回键,防止通话中误退出
947
+ onBackPress((option) => {
948
+ if (option.from === 'backbutton') {
949
+ return true; // 返回 true 阻止默认回退行为
950
+ }
951
+ });
952
+ </script>
953
+ ```