文档导航
iOS
SDK 版本:  5.X
公告:融云新文档中心已上线,欢迎到新文档中心阅读 iOS IMLibiOS IMKit 的文档。

输入区域

更新时间:2024-02-26 PDF

输入区域

IMKit 的输入区域是通过 RCChatSessionInputBarControl 统一创建和控制的,支持自定义输入模式、自定义扩展区域(插件)、以及自定义表情。

提示

下图输入区从左至右依次是语音/文本切换按钮、内容输入框、表情面板按钮、扩展面板按钮。

修改输入栏组合模式

IMKit 输入栏提供语音/文本切换、内容输入、扩展区域功能,并支持修改输入组合模式。例如,您可以移除语音/文本切换按钮和扩展面板,仅保留内容输入功能。

IMKit 在 RCChatSessionInputBarControlStyle 中定义了多种排列组合模式:

组合模式 枚举
语音/文本切换-输入框-扩展 RC_CHAT_INPUT_BAR_STYLE_SWITCH_CONTAINER_EXTENTION
扩展-输入框-切换 RC_CHAT_INPUT_BAR_STYLE_EXTENTION_CONTAINER_SWITCH
输入框-语音/文本切换-扩展 RC_CHAT_INPUT_BAR_STYLE_CONTAINER_SWITCH_EXTENTION
输入框-扩展-切换 RC_CHAT_INPUT_BAR_STYLE_CONTAINER_EXTENTION_SWITCH
语音/文本切换-输入框 RC_CHAT_INPUT_BAR_STYLE_SWITCH_CONTAINER
输入框-切换 RC_CHAT_INPUT_BAR_STYLE_CONTAINER_SWITCH
扩展-输入框 RC_CHAT_INPUT_BAR_STYLE_EXTENTION_CONTAINER
输入框-扩展 RC_CHAT_INPUT_BAR_STYLE_CONTAINER_EXTENTION
输入框 RC_CHAT_INPUT_BAR_STYLE_CONTAINER

您可以在会话页面 RCConversationViewControllerviewDidLoad 之后改变输入栏的样式。使用 chatSessionInputBarControlsetInputBarType 方法调整顺序或禁用部分输入模式等。IMKit 在 RCChatSessionInputBarControlStyle 提供了多种排列组合。

RCChatSessionInputBarControlStyle style = RC_CHAT_INPUT_BAR_STYLE_SWITCH_CONTAINER_EXTENTION;
[self.yourChatVC.chatSessionInputBarControl setInputBarType:RCChatSessionInputBarControlDefaultType style:style];
              
已复制
1
2

隐藏输入栏中的表情面板按钮

提示

IMKit SDK 从 5.3.2 版本开始提供该功能。

输入栏中的表情按钮是表情面板的入口。在 App 不需要提供表情输入功能时,可隐藏该入口。在会话页面显示前设置 hideEmojiButton 隐藏表情面板入口。

[self.yourChatVC.chatSessionInputBarControl.inputContainerView.hideEmojiButton = YES];
              
已复制
1

输入区域扩展面板

融云将点击输入栏 + 号按钮时展示的面板称为扩展面板扩展面板上展示当前可用的插件。

alt

扩展面板插件列表

IMKit 完整插件列表如下所示。扩展面板中默认仅包含内置插件(照片、文件)。如需其他插件,请集成 IMKit 提供的插件库。

所属模块名称 插件名称 说明
内置插件 Photo 含相册与拍摄插件,默认支持拍摄照片发送,和从相册发送照片。集成小视频插件后可从相册发送小视频和录制小视频。
内置插件 File 文件插件,需要手动启用。启用后可发送文件。
RongLocationKit LocationKit 发送位置消息,集成 LocationKit 库可用。
RongSight Sight 小视频插件,集成 Sight 库后可用。
RongContactCard ContactCard 名片插件,集成 ContactCard 库后可用。需配置联系人列表。
RongIFlyKit IFly 语音输入插件,集成 IFly 库后可用。需要替换为您自己的讯飞 Framework(包含您自己的讯飞 App Key)。
RCCallKitExtensionModule CallKit 语音通话插件 语音通话插件,集成 CallKit 后可用。
RCCallKitExtensionModule CallKit 音视频通话插件 视频通话插件,集成 CallKit 后可用。

添加语音转文字插件

IMKit 基于讯飞 SDK 开发了语音转文字插件库 IFly。IMKit 集成 IFLY 库后,在扩展面板会自动生成语音输入功能入口。用户点击语音输入可以将录入的语音转成文字并展示在输入栏。

IMKit 的 IFly 库依赖于讯飞语音库 SDK iflyMSC.framework。讯飞语音库是收费业务,因此插件中不含讯飞 App Key。由于讯飞的 App Key 和 iflyMSC.framework 是强绑定关系,所以 App 在集成时必须替换 iflyMSC.framework

请自行去讯飞官网下载 iflyMSC.framework SDK,用于替换语音输入插件中的 iflyMSC.framework

语音插件(IFly)仅支持以源码方式导入。如需使用语音插件,必须同样以源码方式集成 IMKit SDK。参见导入SDK

pod 'RongCloudOpenSource/IFly','~> x.y.z'            # 语音输入
              
已复制
1

提示

x.y.z 代表具体版本,请通过融云官网 SDK 下载页面或 CocoaPods 仓库等方式查询最新版本。

集成步骤如下:

  1. 前往讯飞官网,申请账号并下载 SDK。

  2. 设置讯飞 App Key。

    1. 引用语音输入模块。

      #import <RongCloudOpenSource/RongiFlyKit.h>
                    
      已复制
      1

    2. 请在 RCIM 的 initWithAppKey 前调用下面接口。

      [RCiFlyKit setiFlyAppKey:@"讯飞 appkey"];
                    
      已复制
      1

  3. 删除 RongCloudOpenSource 里的 iflyMSC.frameworkiflyMSC.framework 在 Xcode 项目路径为 :Pods -> Pods -> RongCloudOpenSource -> IFly -> Frameworks -> iflyMSC.framework

  4. 配置 App 依赖您自行下载的 iflyMSC.framework

添加其他插件

要了解如何在扩展面板添加其他插件,请参阅以下文档:

动态配置扩展面板插件

App 可以添加、删除、更新扩展面板上展示的项目,或自定义点击事件。

SDK 默认的扩展项的唯一标识符为 1XXX。如果您添加自定义扩展项,tag 值请勿使用 1XXX,否则会与 SDK 预留的扩展项唯一标识符重复。

插件 扩展项定义名 Tag 值
照片 PLUGIN_BOARD_ITEM_ALBUM_TAG 1001
拍摄 PLUGIN_BOARD_ITEM_CAMERA_TAG 1002
位置 PLUGIN_BOARD_ITEM_LOCATION_TAG 1003
文件 PLUGIN_BOARD_ITEM_FILE_TAG 1006
语音通话 PLUGIN_BOARD_ITEM_VOIP_TAG 1101
视频通话 PLUGIN_BOARD_ITEM_VIDEO_VOIP_TAG 1102
语音输入 PLUGIN_BOARD_ITEM_VOICE_INPUT_TAG 1105
个人名片 PLUGIN_BOARD_ITEM_CARD_TAG 1107

更多标识定义请参考 RCChatSessionInputBarControl 类。

添加扩展项

您可以在 RCConversationViewController 子类的 viewdidload 触发后,添加自定义的扩展项。向扩展功能面板中插入扩展项。请勿使用 1XXX 范围的 tag 值,否则会与 SDK 预留的扩展项唯一标识符重复。

[self.chatSessionInputBarControl.pluginBoardView insertItem:[UIImage imageNamed:@"plugin_item_poke"] highlightedImage:[UIImage imageNamed:@"plugin_item_poke_highlighted"] title:RCDLocalizedString(@"Poke") tag:20090];
              
已复制
1

参数 类型 说明
normalImage UIImage 扩展项的展示图片
highlightedImage UIImage 扩展项的触摸高亮图片
title NSString 扩展项的展示标题
index NSInteger 需要添加到的索引值
tag NSInteger 扩展项的唯一标识符

更新指定扩展项

根据 tag 更新扩展功能面板中的指定扩展项,支持更新融云提供的扩展项或 App 自定义的扩展项。

[self.chatSessionInputBarControl.pluginBoardView updateItemWithTag:101 normalImage:[UIImage imageNamed:@"plugin_item_poke"] highlightedImage:[UIImage imageNamed:@"plugin_item_poke_highlighted"] title:newTitle];
              
已复制
1

参数 类型 说明
tag NSInteger 扩展项的唯一标识符
normalImage UIImage 扩展项的展示图片
highlightedImage UIImage 扩展项的触摸高亮图片
title NSString 扩展项的展示标题

删除指定扩展项

根据 tag 删除扩展功能面板中的指定扩展项,支持删除融云提供的扩展项或 App 自定义的扩展项。

[self.chatSessionInputBarControl.pluginBoardView removeItemWithTag:PLUGIN_BOARD_ITEM_LOCATION_TAG];
              
已复制
1

参数 类型 说明
tag NSInteger 扩展项的唯一标识符

处理扩展项点击事件

在会话页面重写下面方法,根据 tag 判断是否为自定义的扩展项点击事件。如果不是,则需要调用 super,否则会影响默认扩展功能的点击功能。

- (void)pluginBoardView:(RCPluginBoardView *)pluginBoardView clickedItemWithTag:(NSInteger)tag;
              
已复制
1

参数 类型 说明
pluginBoardView RCPluginBoardView 输入扩展功能板View
tag NSInteger 输入扩展功能(Item)的唯一标识
文档反馈
意见反馈

您的改进建议

意见反馈

问题类型

联系我们

提交工单

技术支持|集成使用|产品方案


商务咨询

7 x 24 小时

为您解答方案与报价问题

131 6185 6839

文档反馈