關(guān)于極光SDK消息重復(fù)的問題

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

/*!
 * @abstract 同步分頁獲取最新的消息
 *
 * @param offset 開始的位置。nil 表示從最初開始。
 * @param limit 獲取的數(shù)量。nil 表示不限。
 *
 * @return 返回消息列表(數(shù)組)。數(shù)組成員的類型是 JMSGMessage*
 *
 * @discussion 排序規(guī)則是:最新
 *
 * 參數(shù)舉例:
 *
 * - offset = nil, limit = nil,表示獲取全部。相當(dāng)于 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;
在項(xiàng)目中進(jìn)行調(diào)用時(shí)的截圖

以下內(nèi)容為上面截圖中,messaegArray中保存的內(nèi)容,注意:消息發(fā)生了重復(fù)的情況;

<__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":"羅文統(tǒng)","from_platform":"i","create_time":1473464578486,"msg_type":"text","msg_body":{"text":"有人在嗎"},"from_appkey":"ce6e8aee881ae9689975e3b8"}, content:{
  "text" : "有人在嗎"
}, fromAppKey:ce6e8aee881ae9689975e3b8, targetAppKey:<null>]
)

問題分析:

這個(gè)問題很難重現(xiàn),有時(shí)候重現(xiàn)時(shí),重復(fù)現(xiàn)象非常嚴(yán)重。
根據(jù)本次重現(xiàn)并捕獲的結(jié)果來看,雖然消息內(nèi)容重復(fù),但是確實(shí)是兩個(gè)不同的JMSGMessage對(duì)象實(shí)例,0x13e9c1aa0,0x13f1b20f0; 再仔細(xì)看,會(huì)發(fā)現(xiàn)這兩個(gè)實(shí)例雖然不同、msgId不同,但是serverMessageId 是相同的,因此可以認(rèn)定,這兩條為同一條消息;


再看一個(gè)例子:

下面的例子中,serverMessageId為 <null>,這類消息的contentType為:事件通知消息,如果沒有serverMessageId的話,在項(xiàng)目APP中,就無法做消息去重操作時(shí)的唯一性判斷了。

<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>]
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容