跳到主要内容

流式消息

提示

此功能在 5.16.1 版本开始支持。

用户可以通过 imkit_stream 插件,将流式消息以完整消息(图 1)或者信息摘要(图 2)的形式展示在会话页面的消息列表组件中。SDK 流式消息的消息类型是 StreamMessage(类型标识:RC:StreamMsg)。

局限性

流式消息功能目前存在以下限制:

  • 消息的内容长度最多为 10000 个字符。
  • 支持单脚、群聊会话流式消息接收功能。

用法

  1. 在应用的 build.gradle 中,添加融云即时通讯界面库(IMKit)为远程依赖项。

    Java
    dependencies {
    ...
    //imkit_stream插件 依赖 im_kit 组件
    api 'cn.rongcloud.sdk:im_kit:x.y.z'
    // 流式消息插件
    api 'cn.rongcloud.sdk:imkit_stream:x.y.z'
    }
    提示

    各个 SDK 的最新版本号可能不相同,还可能是 x.y.z.h,可前往 融云官网 SDK 下载页面融云的 Maven 代码库 查询。

其他导入方式可参考导入 SDK

  1. 在代码中添加如下:
Java
// 比如Application中,和初始化顺序无关
RongConfigCenter.conversationConfig().addMessageProvider(new StreamMessageItemProvider());
  1. 发送流式消息详见发送流式消息

内容展示

流式消息支持Markdown、Text、HTML 类型,具体字段值参照流式消息。HTML 类型在 5.20.0 版本开始支持。

HTML 类型需要关注以下内容,Markdown、Text 类型 SDK 不需要关注。

内容安全

IMKit SDK 使用原生 WebView 组件加载 html 类型的流式消息,但不会对流式消息的内容进行处理,开发者需要保障内容安全。

开发者可以在 HTML 中嵌入 CSP 标签,来提高内容的安全性。

提示

CSP 作为 HTML 的一部分,需要在应用服务器处理好发送给融云服务器。可通过 AI 大模型格式化输出和系统提示词(system prompt) 来增加特定内容。

示例代码

html
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self'; img-src 'self';">
<!-- 其他内容 -->
</head>
<body>
<!-- 页面内容 -->
</body>
</html>

暗黑模式

IMKit SDK 通过 CSS 通用规则 prefers-color-scheme 来适配 WebView 主题,但在移动端存在系统版本限制,且依赖应用主题设置。

  • 小米机型:小米 MIUI 对深色模式进行了定制化实现,如果 App 没有特殊处理,切换系统主题后 IMKit SDK 以及 WebView 会跟着变成深色主题。
  • 非小米机型:目前 Android Kit 与 WebView 均不支持。
提示

prefers-color-scheme 作为 HTML 的一部分,需要开发者 AppServer 处理好发送给 RongCloud Server。可通过 AI 大模型格式化输出和系统提示词(system prompt) 来增加特定内容。

示例代码

css
@media (prefers-color-scheme: dark) {
.day.dark-scheme {
background: #333;
color: white;
}
.night.dark-scheme {
background: black;
color: #ddd;
}
}

@media (prefers-color-scheme: light) {
.day.light-scheme {
background: white;
color: #555;
}
.night.light-scheme {
background: #eee;
color: black;
}
}