udesk在线客服系统推送消息到客户端遇到的问题

当用户通过在线客服系统和客服沟通之后,我们希望客户离开了聊天界面之后,依然能够接收到我们客服推送过去的消息。在我们的项目中在线客服系统集成的是udesk,因此我们就以udesk为原型进行讲解。

一:udesk版本号需要提升到3.2之后

根据udesk官方文档配置之后,同时服务器端也需要做相应配置,我们就可以在离开聊天界面之后,依然接收到通过udesk系统的客服推送过来的消息。这里的推送,是通过极光推送来完成的。

二:极光可以接收到消息,但是onReceive()并没有被调用

image.png

我们项目使用的极光推送是2.1.9。udesk使用的是极光推送2.2.0版。极光推送最新的版本3.0.6。所以我在这三个版本之间都做了测试,发现2.1.9是可以接收到消息,但是不会调用onReceive(),2.2.0版本就连项目本身集成的极光推送都没有推送过来,何况udesk,3.0.6版本则实现了上述所有功能。

三:udesk客服消息列表。

由于在ios的文档中,可以获取客户本地聊天记录。但是android端的文档中,并没有提及到有这样的接口存在。

image.png

于是就翻了一下UdeskSDKUI这个库,发现在UdeskDBManager中,官方已经将从本地获取聊天记录的基本方法提供了,只是并没有暴露出来。

image.png
image.png

我们就可以根据UdeskDBManager的使用规则,通过这些方法,获取自己希望得到的列表消息。

image.png

四:如何将udesk消息列表和环信消息列表展示在同一个列表中。

最开始我的想法是能不能通过将udesk消息转换城一个环信消息,然后在消息中设置一个变量用来标示,但是此路不通。再后来我就将用来存放消息的集合的泛型去掉。这样这个list中就可以同时存放udesk消息和环信消息,然后我们在adapter中设置消息内容的时候,就可以通过instance of 这个关键字来判断,当前位置的数据,是来自udesk消息,还是来自环信的消息。

添加了两种不同类型的数据

最后我们在adapter中通过下面的判断,就可以设置数据了。

 Object object = getItem(position);
 if(object instanceof EMConversation){
  //这里是环信消息
 }else if(object instanceof MessageInfo){
 //这里是udesk消息
 }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 最初了解到极光,是看到极光在知乎发的一篇帖子,关于他们开源的 IM 项目:Aurora IMUI的,从此知道了...
    碳酸氢钠x阅读 6,535评论 56 135
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,861评论 25 708
  • 极光推送: 1.JPush当前版本是1.8.2,其SDK的开发除了正常的功能完善和扩展外也紧随苹果官方的步伐,SD...
    Isspace阅读 6,764评论 10 16
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,837评论 18 139
  • 身体很疲惫 不知道今年会有多少倒霉事降临在我身上,我已经感觉到各种不详的预感。 他老说他要疯,我却没感觉到他要疯。...
    cheerhoo阅读 195评论 0 0