微信公众帐号开发之符号表情的发送(1)
白羽 2018-06-26 来源 :网络 阅读 2706 评论 0

摘要:本文将带你了解 微信公众帐号开发之符号表情的发送,希望本文对大家学微信有所帮助。



 

如何发送emoji表情。今天,就让我们一起来揭开它的神秘面纱!

 

文章概要

本文重点介绍如何在微信公众帐号开发模式下,通过程序代码向用户发送符号表情。至于如何识别用户发送的是符号表情,就不在此讲解了,留给大家一点学习思考的空间。我只是给大家一个提示:用户向公众帐号发送符号表情,其实也是一条文本消息,这与QQ表现是一样的,即然是文本消息,将接收的符号表情内容打印到日志,不就知道每个表情对应的文本了吗?呵呵,当然也没有这么简单,并不是像其他文本消息,这里需要对接收到符号表情消息先做编码的转换。

 

认识符号表情

在公众帐号的主交互界面,窗口底部的输入框旁边有一个笑脸的图片按钮,点击它将会弹出表情选择界面,可选择的表情依次为“QQ表情”、“符号表情”和“动画表情”,我们选择“符号表情”,将会看到如下图所示界面:

 微信公众帐号开发之符号表情的发送(1)

可以持看出,相比QQ表情,符号表情要更加实用。为什么这么说呢?因为QQ表情大都是脸部表情,而符号表情除了脸部表情外,还有很多与生活息息相关的表情,例如:动物、花朵、树木、电视、电话、电脑、吉它、球类、交通工具等等。如果能在消息中使用符号表情,会不会显得更加生动、有趣呢?

再来看看小q机器人中使用符号表情的效果,先上两张图:

  微信公众帐号开发之符号表情的发送(1)


微信公众帐号开发之符号表情的发送(1)

左边截图是小q机器人的主菜单,在Q友圈文字旁边的那个表情就是符号表情,是一女一男两人小朋友,示意着在Q友圈里可以结识到更多的朋友,不要想歪了,^_^。右边截图是人脸识别功能的使用指南,里面的“相机”、“鬼脸”也是符号表情,这样看上去是不是更加有趣味性呢?如果是纯文本,一定会显得太单调、太枯燥了。

 

Emoji表情的分类

Emoji表情有很多种版本,包括Unified、DoCoMo、KDDI、Softbank和Google,而且不同版本的表情代码也不一样,更可恶的是:不同的手机操作系统、甚至是同一操作系统的不同版本所支持的emoji表情又不一样。所以,完美主义者可以止步了,因为目前emoji表情并不能保证在所有终端上都能正常使用。

庆幸的是,我已经在超过10余部终端上测试过emoji表情的使用,这其中包括iPhone 4S、iPhone 5、Android 2.2、Android 4.0+、Win8、iPad2,只有极个别终端上显示不出来或显示为一个小方格,所以并没有什么太大的影响,也就可以放心使用了!

 

Emoji表情代码表之Unified版本

上面介绍的几种版本的emoji表情,都是通过unicode编码来表示的。换言之,不同版本的emoji表情对应的unicode编码值也不一样。本篇文章,我先给出Unified版本emoji表情的代码表,如下图所示:

 微信公众帐号开发之符号表情的发送(1)

 微信公众帐号开发之符号表情的发送(1)

微信公众帐号开发之符号表情的发送(1)


微信公众帐号开发之符号表情的发送(1)

微信公众帐号开发之符号表情的发送(1)

公众帐号如何向用户发送emoji表情

上面已经给出了emoji表情的unified unicode代码对照表,那么这些代码要如何使用,才能发送出对应的emoji表情呢?如果你只是简单的像使用QQ表情代码那样,直接在文本消息的Content里写emoji表情代码,一定是会原样显示的。

这里需要用到一个Java方法做转换处理,方法的代码如下:

[java] view plain copy

1. /** 

2.  * emoji表情转换(hex -> utf-16) 

3.  *  

4.  * @param hexEmoji 

5.  * @return 

6.  */  

7. public static String emoji(int hexEmoji) {  

8.     return String.valueOf(Character.toChars(hexEmoji));  

9. }  

方法说明:例如,“自行车”的unicode编码值为U+1F6B2,如果我们要在程序代码中使用“自行车”这个emoji表情,需要这样使用:

[java] view plain copy

1. String bike = String.valueOf(Character.toChars(0x1F6B2));  

其实前面那个emoji()方法就是对上面这行代码做了个简单的封装而以。现在知道如何使用emoji表情代码了吧,其实就是将代码表中的U+替换为0x,再调用emoji方法进行转换,将转换后的结果放在文本消息的Content中,返回给用户就会显示emoji表情了。

下面,我给出一个使用emoji表情的完整示例,如下:

[java] view plain copy

1. package org.liufeng.course.service;  

2.   

3. import java.util.Date;  

4. import java.util.Map;  

5.   

6. import javax.servlet.http.HttpServletRequest;  

7.   

8. import org.liufeng.course.message.resp.TextMessage;  

9. import org.liufeng.course.util.MessageUtil;  

10.   

11. /** 

12.  * 核心服务类 

13.  *  

14.  * @author liufeng 

15.  * @date 2013-05-20 

16.  */  

17. public class CoreService {  

18.     /** 

19.      * 处理微信发来的请求 

20.      *  

21.      * @param request 

22.      * @return 

23.      */  

24.     public static String processRequest(HttpServletRequest request) {  

25.         String respMessage = null;  

26.         try {  

27.             // xml请求解析  

28.             Map<String, String> requestMap = MessageUtil.parseXml(request);  

29.   

30.             // 发送方帐号(open_id)  

31.             String fromUserName = requestMap.get("FromUserName");  

32.             // 公众帐号  

33.             String toUserName = requestMap.get("ToUserName");  

34.   

35.             // 回复文本消息  

36.             TextMessage textMessage = new TextMessage();  

37.             textMessage.setToUserName(fromUserName);  

38.             textMessage.setFromUserName(toUserName);  

39.             textMessage.setCreateTime(new Date().getTime());  

40.             textMessage.setMsgType(MessageUtil.RESP_MESSAGE_TYPE_TEXT);  

41.             textMessage.setFuncFlag(0);  

42.             textMessage.setContent("自行车" + emoji(0x1F6B2) + " 男性" + emoji(0x1F6B9) + " 钱袋" + emoji(0x1F4B0));  

43.             respMessage = MessageUtil.textMessageToXml(textMessage);  

44.         } catch (Exception e) {  

45.             e.printStackTrace();  

46.         }  

47.   

48.         return respMessage;  

49.     }  

50.   

51.     /** 

52.      * emoji表情转换(hex -> utf-16) 

53.      *  

54.      * @param hexEmoji 

55.      * @return 

56.      */  

57.     public static String emoji(int hexEmoji) {  

58.         return String.valueOf(Character.toChars(hexEmoji));  

59.     }  

60. }  

上面代码的作用是:不管用户发送什么类型的消息,都返回包含三个emoji表情的文本消息。如果不明白CoreService类怎么回事,你只需要认真看第42行代码,就知道怎么样把emoji表情代码放在文本消息的Content中了。最后再来看下运行效果截图:

 微信公众帐号开发之符号表情的发送(1)


 


本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之微信频道!


本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程