需求
app里增加表情评论,并且需要自制一些表情。
问题
1、如何下发自制表情
2、评论是表情时,发给服务器的是什么参数
思路
因为没有做过emoji的需求,所以在百度上查了些文章,基本上没啥收获。最后是在简书上一篇文章的评论里找到了思路。
链接:https://www.jianshu.com/p/bab9b6cdfffe
评论主要分为三个类型:文本、unicode表情、img表情。
1、文本
<div class="_2bDGm4">文本</div>
评论时发送的param时:{content: "文本"}
2、unicode表情
<div class="_2bDGm4">😇</div>
评论时发送的param时:{content: "😇"}
3、img表情,展示为🔑
<div class="_2bDGm4">
<img src="//static.jianshu.io/assets/emojis/key.png" alt=":key:" title=":key:" class="emoji" width="20" height="20">
</div>
评论时发送的param时:{content: ":key:"}
上面的三组html代码,是我copy的简书评论里的html代码和自己发评论的传参。
可以发现三种评论的传参都是一样都,都是一个content。而文本和unicode表情评论的在网页里展示时只是一个div标签,而img表情是一个img标签(包含一个表情的资源路径、alt属性)。
所以我想简书的实现是:客户端显示评论时,如果获取到的content时":key:
"格式,那么就会生成资源路径http://static.jianshu.io/assets/emojis/key.png,然后以img标签展示表情。
结论
表情评论有两种:一种自带的unicode,一种是img。是img的话都会存一个标签比如:[悲伤],:key:
,标签格式自己约定。不管是文本评论还是表情还是img表情,{content: “: key:”},发送的都是这样子的文本。只是客户端在做展示的时候会去解析。
可以约定一个格式,下发emoji_list(里面时unicode表情 或者 像:key:
这样约定的格式)和 一个表情映射表给客户端(key:资源路径),客户端遇到img表情按映射表展示。
最终方案
最后团队内部讨论,客户端大佬提出:因为现在表情较少,不需要做的太复杂,可以想vx、facebook一样替换unicode对应的emoji文件。服务器只需要下发emoji的unicode码列表即可。
PS
最后在发文章的时候发现csdn也将:key:
解析为🔑,😄😄😄。所以不得不把key改成插入代码的样式。
你有在优快云的文章里看到表情吗?