1.app启动时通过加载项目中的默认表情配置json文件,生成表情编码表+表情解码表。
2.业务方通过Emoji表情SDK开放的EmojiBoardComponent将表情面板UI添加到自己对应的业务UI,示例代码如下:
3.用户点击表情面板里面的表情,在业务方的selectedActionHandler回掉用,根据表情model的image图片名,生成一个ImageSpan添加到图文混排的RichEditor编辑框。
4.用户点击发送,将RichEditor编辑框中的富文本Spans,逐个遍历后,将Emoji表情对应的ImageSpan编码成Emoji表情Code文本。组合成整体的Text后,返回给业务发送进行后续的发送消息流程(组合的Text文本例如:你好吗[微笑],朋友)。注意这里用到了上文提到的表情编码表
5.IM消息Component中需要展示一条消息时,需要将文本与表情编码混合的文本解码后,生成对应的图文混排Spans。目前是在业务方借助一个TextCustomSpanUtils工具类来将Text文本拆分成业务方可识别的TextCustomSpan数组后由对应的消息Component对这个TextCustomSpan数组进行图文混排的。
TextCustomSpanUtils工具解析如下:
对应的IM消息Component展示Emoji表情图文混排的实现代码如下: