美文网首页
udesk在线客服系统推送消息到客户端遇到的问题

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

作者: 夏广成 | 来源:发表于2017-04-18 12:03 被阅读175次

    当用户通过在线客服系统和客服沟通之后,我们希望客户离开了聊天界面之后,依然能够接收到我们客服推送过去的消息。在我们的项目中在线客服系统集成的是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消息
     }
    

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/vdefzttx.html