默认
发表评论 1
想开发IM:买成品怕坑?租第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

查看评分

打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部