package com.wuxiaolong.wochat.leancloud; import android.content.Context; import android.content.Intent; import android.util.Log; import com.avos.avoscloud.im.v2.AVIMClient; import com.avos.avoscloud.im.v2.AVIMConversation; import com.avos.avoscloud.im.v2.AVIMTypedMessage; import com.avos.avoscloud.im.v2.AVIMTypedMessageHandler; import com.avos.avoscloud.im.v2.messages.AVIMTextMessage; import com.avoscloud.leanchatlib.event.ImTypeMessageEvent; import com.avoscloud.leanchatlib.controller.AVImClientManager; import com.wuxiaolong.wochat.util.AppConstant; import com.wuxiaolong.wochat.R; import de.greenrobot.event.EventBus; /** * Created by zhangxiaobo on 15/4/20. */ public class MessageHandler extends AVIMTypedMessageHandler<AVIMTypedMessage> { private Context context; public MessageHandler(Context context) { this.context = context; } @Override public void onMessage(AVIMTypedMessage message, AVIMConversation conversation, AVIMClient client) { Log.e("wxl", "MessageHandler onMessage"); String clientID = ""; try { clientID = AVImClientManager.getInstance().getClientId(); if (client.getClientId().equals(clientID)) { Log.e("wxl", "MessageHandler onMessage clientID=" + clientID + ",client.getClientId()=" + client.getClientId() + ",message.getFrom()=" + message.getFrom()); // 过滤掉自己发的消息 if (!message.getFrom().equals(clientID)) { sendEvent(message, conversation); // Log.e("wxl", "MessageHandler=" + NotificationUtils.isShowNotification(conversation.getConversationId())); // if (NotificationUtils.isShowNotification(conversation.getConversationId())) { // sendNotification(message, conversation); // } } } else { client.close(null); } } catch (IllegalStateException e) { client.close(null); } } /** * 因为没有 db,所以暂时先把消息广播出去,由接收方自己处理 * 稍后应该加入 db * * @param message * @param conversation */ private void sendEvent(AVIMTypedMessage message, AVIMConversation conversation) { ImTypeMessageEvent event = new ImTypeMessageEvent(); event.message = message; event.conversation = conversation; EventBus.getDefault().post(event); } private void sendNotification(AVIMTypedMessage message, AVIMConversation conversation) { String notificationContent = message instanceof AVIMTextMessage ? ((AVIMTextMessage) message).getText() : context.getString(R.string.unspport_message_type); Intent intent = new Intent(context, NotificationBroadcastReceiver.class); intent.putExtra(AppConstant.CONVERSATION_ID, conversation.getConversationId()); intent.putExtra(AppConstant.ACTIVITY_TITLE, conversation.getName()); intent.putExtra(AppConstant.MEMBER_ID, message.getFrom()); // NotificationUtils.showNotification(context, "新信息", notificationContent, null, intent); } }