融云不支持維護(hù)好友關(guān)系,但是內(nèi)置信息中有一個(gè)信息類ContactNTFMessage來處理好友關(guān)系。
因此好友關(guān)系的添加由APP服務(wù)器自己維護(hù)。
具體方法:
1、User1向APP服務(wù)期發(fā)送添加好友請(qǐng)求
2、APP服務(wù)器請(qǐng)求融云服務(wù)器向User2發(fā)送ContactNTF信息
3、User2收到信息,向APP服務(wù)器發(fā)送反饋信息(拒絕、接受)
4、APP服務(wù)器請(qǐng)求融云服務(wù)器向User1發(fā)送ContactNTF信息并進(jìn)行數(shù)據(jù)庫操作
以下用法可做參考。
我使用了融云IMkit中的會(huì)話列表,因此每次有消息過來就會(huì)在會(huì)話列表中出現(xiàn),但是點(diǎn)擊他就會(huì)啟動(dòng)單聊的窗口,而單聊窗口中不可能進(jìn)行添加好友的操作吧,因此就要攔截這個(gè)ContactNTF信息,具體做法:
1、建立一個(gè)類實(shí)現(xiàn)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))
{
//這里進(jìn)行你自己的操作,我是啟動(dòng)了另一個(gè)Activity來處理這個(gè)消息
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的話就會(huì)進(jìn)行你寫的操作,return false 的話就會(huì)進(jìn)行融云IMKit的操作,所以不會(huì)影響到會(huì)話列表中聊天信息啟動(dòng)單聊窗口,因?yàn)槲覀冎粩r截了這個(gè)ContactNTFMessage。
最后注冊(cè)這個(gè)監(jiān)聽器就可以了,在RongIM init后,connect前。
RongIM.setOnReceiveMessageListener(new MyOnReceiveMessageListener());
服務(wù)器的話版本太多了,具體實(shí)現(xiàn)要看情況了