`
阿尔萨斯
  • 浏览: 4183789 次
社区版块
存档分类
最新评论

微信公众帐号开发教程第11篇-符号表情的发送(上)

 
阅读更多

第9篇文章介绍了QQ表情的发送与接收。在此之后,很多朋友问我如何发emoji表情(微信上叫符号表情),也就让我有了写这篇文章的决心。在此之前,我在网上进行了大量的搜索,发现根本没有介绍这方面的文章,并且在微信公众帐号开发官方交流群里提问,也少有人知道该如何发送emoji表情。今天,就让我们一起来揭开它的神秘面纱!

文章概要

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

认识符号表情

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

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

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

左边截图是小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表情的代码表,如下图所示:

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

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

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

  1. /**
  2. *emoji表情转换(hex->utf-16)
  3. *
  4. *@paramhexEmoji
  5. *@return
  6. */
  7. publicstaticStringemoji(inthexEmoji){
  8. returnString.valueOf(Character.toChars(hexEmoji));
  9. }

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

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

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

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

  1. packageorg.liufeng.course.service;
  2. importjava.util.Date;
  3. importjava.util.Map;
  4. importjavax.servlet.http.HttpServletRequest;
  5. importorg.liufeng.course.message.resp.TextMessage;
  6. importorg.liufeng.course.util.MessageUtil;
  7. /**
  8. *核心服务类
  9. *
  10. *@authorliufeng
  11. *@date2013-05-20
  12. */
  13. publicclassCoreService{
  14. /**
  15. *处理微信发来的请求
  16. *
  17. *@paramrequest
  18. *@return
  19. */
  20. publicstaticStringprocessRequest(HttpServletRequestrequest){
  21. StringrespMessage=null;
  22. try{
  23. //xml请求解析
  24. Map<String,String>requestMap=MessageUtil.parseXml(request);
  25. //发送方帐号(open_id)
  26. StringfromUserName=requestMap.get("FromUserName");
  27. //公众帐号
  28. StringtoUserName=requestMap.get("ToUserName");
  29. //回复文本消息
  30. TextMessagetextMessage=newTextMessage();
  31. textMessage.setToUserName(fromUserName);
  32. textMessage.setFromUserName(toUserName);
  33. textMessage.setCreateTime(newDate().getTime());
  34. textMessage.setMsgType(MessageUtil.RESP_MESSAGE_TYPE_TEXT);
  35. textMessage.setFuncFlag(0);
  36. textMessage.setContent("自行车"+emoji(0x1F6B2)+"男性"+emoji(0x1F6B9)+"钱袋"+emoji(0x1F4B0));
  37. respMessage=MessageUtil.textMessageToXml(textMessage);
  38. }catch(Exceptione){
  39. e.printStackTrace();
  40. }
  41. returnrespMessage;
  42. }
  43. /**
  44. *emoji表情转换(hex->utf-16)
  45. *
  46. *@paramhexEmoji
  47. *@return
  48. */
  49. publicstaticStringemoji(inthexEmoji){
  50. returnString.valueOf(Character.toChars(hexEmoji));
  51. }
  52. }

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

本篇文章要讲的内容就至此结束了,但关于emoji表情的讲解还没有结束,为什么这么说呢?请仔细看本篇文章的第二张截图,也就是小q机器人的文本菜单,里面用到的emoji表情在本文给出的emoji代码表里根本找不到(微信上的emoji表情与代码表中完全一致),那这个emoji表情又是如何发送的呢,请听下回分解!

分享到:
评论

相关推荐

    微信公众帐号开发教程

    [035] 微信公众帐号开发教程第11篇-符号表情的发送(上) - 柳峰的专栏 - 博客频道 - CSDN.NET [036] 微信公众帐号开发教程第12篇-符号表情的发送(下) - 柳峰的专栏 - 博客频道 - CSDN.NET [037] 微信公众帐号开发...

    JAVA微信开发资料

    微信公众帐号开发教程第 11 篇-符号表情的发送(上).63 微信公众帐号开发教程第 12 篇-符号表情的发送(下).76 微信公众帐号开发教程第 13 篇-图文消息全攻略.85 微信公众帐号开发教程第 14 篇-自定义菜单的创建及...

    微信公众帐号开发教程第3篇-开发模式启用及接口配置

    微信公众帐号开发教程第3篇-开发模式启用及接口配置

    微信小程序开发图解案例教程-源代码

    微信小程序开发图解案例教程-源代码微信小程序开发图解案例教程-源代码微信小程序开发图解案例教程-源代码微信小程序开发图解案例教程-源代码微信小程序开发图解案例教程-源代码微信小程序开发图解案例教程-源代码...

    微信公共账号开发教程

    2. 微信公众帐号开发教程第2篇-微信公众帐号的类型(普通和会议) 3. 微信公众帐号开发教程第3篇-开发模式启用及接口配置 . 微信公众帐号开发教程第5篇-各种消息的接收与响应 6. 微信公众帐号开发教程第6篇-文本...

    微信公众平台开发入门教程

    微信公众平台开发入门教程

    微信公众平台开发教程Java版

    微信公众平台开发教程Java版 微信公众平台开发教程Java版

    微信公众平台开发教程,Java

    微信公众平台的开发教程,用Java写的,挺有借鉴的意义

    微信公众账号开发教程

    接触微信公众帐号已经有两个多月的时间了,在这期间,除了陆续完善...所以,就有了写微信公众帐号开发教程的想法,将学习到的技术经验分享出来,帮助更多需要的朋友,也希望借此认识同行的朋友,共同交流,共同进步!

    微信公众平台应用开发实战-完整扫描版 pdf 文档

    微信公众平台应用开发实战-完整扫描版.pdf 全书一共9章,在逻辑上分为四大部分:第一部分(第1章)介绍了微信公众平台的开发模式、数据交互方式,以及开发公众平台应用所需要的各项技术;第二部分(第2~4章)首先...

    微信开发实例 微信公众平台开发 之微信接口前期准备

    微信开发实例 微信公众平台开发教程-深入浅出微信公众平台实战开发(微网站、LBS云、Api接口调用、服务号高级接口)1.微信接口前期准备。由北风网提供,微信开发实例微信公众平台基础篇: 1)微信公众平台简介:开发...

    java开发微信公众平台

    微信公众帐号开发教程第1 篇-引言 微信公众帐号开发教程第2 篇-微信公众帐号的类型(普通和会议) 微信公众帐号开发教程第3 篇-开发模式启用及接口配置 微信公众帐号开发教程第4 篇-消息及消息处理工具的封装 微信...

    微信公众账号开发教程(java)

    微信公众账号开发教程(java) 程主要是面向有一定Java编程基础的朋友 1)前沿知识:微信公众帐号的分类、两种模式各自的特点和区别、开发模式的配置使用等; 2)API中各类消息的使用(我已经对api进行封装并打成了jar...

    微信公众平台开发教程4

    微信公众平台开发教程,适合初学者了解入门,用的是php语言,简单易懂,欢迎下载

    java版微信公众账号开发教程

    java版微信公众账号开发教程,作为一个java开发微信项目的完整教程

Global site tag (gtag.js) - Google Analytics