融云不支持维护好友关系,但是内置信息中有一个信息类ContactNTFMessage来处理好友关系。
因此好友关系的添加由APP服务器自己维护。
具体方法:
1、User1向APP服务期发送添加好友请求
2、APP服务器请求融云服务器向User2发送ContactNTF信息
3、User2收到信息,向APP服务器发送反馈信息(拒绝、接受)
4、APP服务器请求融云服务器向User1发送ContactNTF信息并进行数据库操作
以下用法可做参考。
我使用了融云IMkit中的会话列表,因此每次有消息过来就会在会话列表中出现,但是点击他就会启动单聊的窗口,而单聊窗口中不可能进行添加好友的操作吧,因此就要拦截这个ContactNTF信息,具体做法:
1、建立一个类实现ConversationListListener接口
然后重写单击事件的方法:
@Override
public boolean onConversationClick(Context context, View view, UIConversation uiConversation) {
Log.i("conversationlist", "click");
if(uiConversation.getMessageContent() instanceof ContactNotificationMessage)
{
ContactNotificationMessage message = (ContactNotificationMessage) uiConversation.getMessageContent();
Log.i("conversationlist", "contactmessage");
if(message.getOperation().equals(ContactNotificationMessage.CONTACT_OPERATION_REQUEST))
{
//这里进行你自己的操作,我是启动了另一个Activity来处理这个消息
context.startActivity(intent);
}
else if(message.getOperation().equals(ContactNotificationMessage.CONTACT_OPERATION_ACCEPT_RESPONSE))
{}
else if(message.getOperation().equals(ContactNotificationMessage.CONTACT_OPERATION_REJECT_RESPONSE))
{}
return true;
}
else
{
return false;
}
}
这里注意的是return true的话就会进行你写的操作,return false 的话就会进行融云IMKit的操作,所以不会影响到会话列表中聊天信息启动单聊窗口,因为我们只拦截了这个ContactNTFMessage。
最后注册这个监听器就可以了,在RongIM init后,connect前。
RongIM.setOnReceiveMessageListener(new MyOnReceiveMessageListener());
服务器的话版本太多了,具体实现要看情况了