美文网首页
关于极光SDK消息重复的问题

关于极光SDK消息重复的问题

作者: zhangyin | 来源:发表于2016-09-11 17:14 被阅读32次

    下面的接口由极光SDK提供:

    /*!
     * @abstract 同步分页获取最新的消息
     *
     * @param offset 开始的位置。nil 表示从最初开始。
     * @param limit 获取的数量。nil 表示不限。
     *
     * @return 返回消息列表(数组)。数组成员的类型是 JMSGMessage*
     *
     * @discussion 排序规则是:最新
     *
     * 参数举例:
     *
     * - offset = nil, limit = nil,表示获取全部。相当于 allMessages。
     * - offset = nil, limit = 100,表示从最新开始取 100 条记录。
     * - offset = 100, limit = nil,表示从最新第 100 条开始,获取余下所有记录。
     */
    - (NSArray JMSG_GENERIC(__kindof JMSGMessage *) *)messageArrayFromNewestWithOffset:(NSNumber *JMSG_NULLABLE)offset
                                                                                 limit:(NSNumber *JMSG_NULLABLE)limit;
    
    在项目中进行调用时的截图

    以下内容为上面截图中,messaegArray中保存的内容,注意:消息发生了重复的情况;

    <__NSArrayM 0x13f4748d0>(
    <JMSGMessage, 0x13e9c1aa0> - [ARRAY - msgId:msgId_1473509068255972, serverMessageId:116387500, otherSide:69117813, isReceived:1, contentType:文本消息, status:消息接收成功, messageJson:{"version":1,"target_type":"group","target_id":"10183381","target_name":"人脉通广州交流群","from_type":"user","from_id":"69117813","from_name":"梁锦锟","from_platform":"i","create_time":1473506849708,"msg_type":"text","msg_body":{"text":"多,只是都潜水去了"},"from_appkey":"ce6e8aee881ae9689975e3b8"}, content:{
      "text" : "多,只是都潜水去了"
    }, fromAppKey:ce6e8aee881ae9689975e3b8, targetAppKey:<null>],
    <JMSGMessage, 0x13f1b20f0> - [ARRAY - msgId:msgId_1473509082984970, serverMessageId:116387500, otherSide:69117813, isReceived:1, contentType:文本消息, status:消息接收成功, messageJson:{"version":1,"target_type":"group","target_id":"10183381","target_name":"人脉通广州交流群","from_type":"user","from_id":"69117813","from_name":"梁锦锟","from_platform":"i","create_time":1473506849708,"msg_type":"text","msg_body":{"text":"多,只是都潜水去了"},"from_appkey":"ce6e8aee881ae9689975e3b8"}, content:{
      "text" : "多,只是都潜水去了"
    }, fromAppKey:ce6e8aee881ae9689975e3b8, targetAppKey:<null>],
    <JMSGMessage, 0x13ebe32e0> - [ARRAY - msgId:msgId_1473509045563820, serverMessageId:116261981, otherSide:60018153, isReceived:1, contentType:文本消息, status:消息接收成功, messageJson:{"version":1,"target_type":"group","target_id":"10183381","target_name":"人脉通广州交流群","from_type":"user","from_id":"60018153","from_name":"吴生生","from_platform":"i","create_time":1473496050433,"msg_type":"text","msg_body":{"text":"好象人不多"},"from_appkey":"ce6e8aee881ae9689975e3b8"}, content:{
      "text" : "好象人不多"
    }, fromAppKey:ce6e8aee881ae9689975e3b8, targetAppKey:<null>],
    <JMSGMessage, 0x13f437fb0> - [ARRAY - msgId:msgId_1473509060277678, serverMessageId:116261981, otherSide:60018153, isReceived:1, contentType:文本消息, status:消息接收成功, messageJson:{"version":1,"target_type":"group","target_id":"10183381","target_name":"人脉通广州交流群","from_type":"user","from_id":"60018153","from_name":"吴生生","from_platform":"i","create_time":1473496050433,"msg_type":"text","msg_body":{"text":"好象人不多"},"from_appkey":"ce6e8aee881ae9689975e3b8"}, content:{
      "text" : "好象人不多"
    }, fromAppKey:ce6e8aee881ae9689975e3b8, targetAppKey:<null>],
    <JMSGMessage, 0x13f492db0> - [ARRAY - msgId:msgId_1473509082140174, serverMessageId:116260688, otherSide:60018153, isReceived:1, contentType:文本消息, status:消息接收成功, messageJson:{"version":1,"target_type":"group","target_id":"10183381","target_name":"人脉通广州交流群","from_type":"user","from_id":"60018153","from_name":"吴生生","from_platform":"i","create_time":1473496021410,"msg_type":"text","msg_body":{"text":"在"},"from_appkey":"ce6e8aee881ae9689975e3b8"}, content:{
      "text" : "在"
    }, fromAppKey:ce6e8aee881ae9689975e3b8, targetAppKey:<null>],
    <JMSGMessage, 0x13f27c8e0> - [ARRAY - msgId:msgId_1473479835203404, serverMessageId:115923727, otherSide:67437495, isReceived:1, contentType:文本消息, status:消息接收成功, messageJson:{"version":1,"target_type":"group","target_id":"10183381","target_name":"人脉通广州交流群","from_type":"user","from_id":"67437495","from_name":"罗文统","from_platform":"i","create_time":1473464578486,"msg_type":"text","msg_body":{"text":"有人在吗"},"from_appkey":"ce6e8aee881ae9689975e3b8"}, content:{
      "text" : "有人在吗"
    }, fromAppKey:ce6e8aee881ae9689975e3b8, targetAppKey:<null>]
    )
    
    

    问题分析:

    这个问题很难重现,有时候重现时,重复现象非常严重。
    根据本次重现并捕获的结果来看,虽然消息内容重复,但是确实是两个不同的JMSGMessage对象实例,0x13e9c1aa0,0x13f1b20f0; 再仔细看,会发现这两个实例虽然不同、msgId不同,但是serverMessageId 是相同的,因此可以认定,这两条为同一条消息;


    再看一个例子:

    下面的例子中,serverMessageId为 <null>,这类消息的contentType为:事件通知消息,如果没有serverMessageId的话,在项目APP中,就无法做消息去重操作时的唯一性判断了。

    <JMSGMessage, 0x1564ac320> - [ARRAY - msgId:msgId_1473509120198886, serverMessageId:<null>, otherSide:10206763, isReceived:0, contentType:事件通知消息, status:消息接收成功, messageJson:{"version":1,"target_type":"group","target_id":"10206763","target_name":"微商直销交流十群","from_type":"user","from_id":"57717435","from_name":"张先生","from_platform":"i","create_time":1473509120000,"msg_type":"event_notification","msg_body":{"toUidList":["17316843"],"eventType":10,"fromUid":0,"cTime":1473508977,"eventDesc":"eventID->62576905,fromUid->0,type->10,eventDescription->(null),gid->10206763,rid->62576905","eventId":62576905,"gid":"10206763"},"from_appkey":null}, content:{
      "toUidList" : [
        "17316843"
      ],
      "eventType" : 10,
      "fromUid" : 0,
      "cTime" : 1473508977,
      "eventDesc" : "eventID->62576905,fromUid->0,type->10,eventDescription->(null),gid->10206763,rid->62576905",
      "eventId" : 62576905,
      "gid" : "10206763"
    }, fromAppKey:<null>, targetAppKey:<null>],
    <JMSGMessage, 0x1564ac9a0> - [ARRAY - msgId:msgId_1473509119631641, serverMessageId:<null>, otherSide:10206763, isReceived:0, contentType:事件通知消息, status:消息接收成功, messageJson:{"version":1,"target_type":"group","target_id":"10206763","target_name":"微商直销交流十群","from_type":"user","from_id":"57717435","from_name":"张先生","from_platform":"i","create_time":1473509119000,"msg_type":"event_notification","msg_body":{"toUidList":["17107554"],"eventType":10,"fromUid":0,"cTime":1473508953,"eventDesc":"eventID->62576493,fromUid->0,type->10,eventDescription->(null),gid->10206763,rid->62576493","eventId":62576493,"gid":"10206763"},"from_appkey":null}, content:{
      "toUidList" : [
        "17107554"
      ],
      "eventType" : 10,
      "fromUid" : 0,
      "cTime" : 1473508953,
      "eventDesc" : "eventID->62576493,fromUid->0,type->10,eventDescription->(null),gid->10206763,rid->62576493",
      "eventId" : 62576493,
      "gid" : "10206763"
    }, fromAppKey:<null>, targetAppKey:<null>]
    

    相关文章

      网友评论

          本文标题:关于极光SDK消息重复的问题

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