默认

[已解决] 如何判断MobileIMSDK发送失败的消息是具体到哪一条?

查看数: 33004 | 评论数: 1 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2021-01-25 11:27

正文摘要:

Jack Jiang您好,我们最近的项目也想集成您的IM框架,但是有一个问题想不明白,我观察demo中的发送样例代码,在postexecute中只有errorcode回来,那如果多条消息发送失败了,lostmessages中也回调了发送失败的消息指 ...

评论

JackJiang 发表于 3 年前
我理解你的困惑了。你可以自已为每条消息生成指纹码(实际上当你不指定消息批评纹码时,sdk层会自已生成),并保存到你的全局消息数据模型中,回过来头来,你也就能通过指纹码反查到你刚才这条消息的数据对象了。

下面这段是RainbowChat中发送文本消息的代码,你参考一下:
    /**
     * 将指定的图片消息发送给聊天中的好友(异步方式).
     * <p>
     * 说明:安卓2.3及以后系统中规定:发送网络数据须在单独的线程中。
     * </p>
     *
     * @param message 文本消息,如果该文本为null或空字符串则不会真正执行发送过程
     * @return code:0 表示发送成功,否则错误码
     * @see #sendMessageAsync(Activity, int, String, String, String, Observer)
     */
    public static void sendPlainTextMessageAsync(final Activity activity
            , final String friendUID, final String message, final Observer sucessObsExtra)
    {
        // 先生成指纹码
        final String fingerPring = Protocal.genFingerPrint();

		// 消息指令通过网络发送成功后要通知的观察者
		Observer sendSucessObs = new Observer() {
			@Override
			public void update(Observable o, Object arg) {

				// 消息发送成功后,将此消息数据放到聊天列表的数据模型中(让UI进行显示)
				ChatDataHelper.addChatMessageData_outgoing(activity, friendUID
						, MessageExt.createChatMsgEntity_OUTGO_TEXT(message, fingerPring));

				// 消息发送调用者的额外要做的事
				if(sucessObsExtra != null)
					sucessObsExtra.update(null, null);
			}
		};

		// 调用真正的消息指令发送方法
        sendMessageAsync(activity, MsgBody4Friend.TYPE_TEXT, friendUID, message, fingerPring, sendSucessObs);
    }

评分

1

查看评分

返回顶部