用户及好友相关
更新时间: 2024/03/14 16:36:35
IM怎么添加好友 [注意1] IM好友是双向的,一旦添加好友成功,彼此都是对方好友。
[注意2] 不能添加自己为好友,否则返回414,例如:{"desc": "accid can't same with the faccid", "code": 414}
,或者message: "friendRequest error: 参数错误", code: 414
,等。
各端添加好友的方法如下。
-
Server
-
Windows (C)
-
Android
-
iOS
-
Web
-
添加好友接口
https://api.netease.im/nimserver/friend/add.action
,其中传入参数accid
表示发起者accid,faccid
表示接收者accid,type
表示验证方式(1直接加好友,2请求加好友,3同意加好友,4拒绝加好友)。 -
- 调用接口
nim_friend_request
发起添加/接受/拒绝好友请求,参数包含对方accid,好友验证类型NIMVerifyType
,其中kNIMVerifyTypeAdd = 1
表示直接添加,kNIMVerifyTypeAsk = 2
表示请求添加,kNIMVerifyTypeAgree = 3
表示同意添加,kNIMVerifyTypeReject = 4
表示拒绝添加。 - 通过接口
`nim_friend_reg_changed_cb`
注册好友变更通知全局回调函数,回调函数nim_friend_change_cb_func
中NIMFriendChangeType
为kNIMFriendChangeTypeRequest
表示好友请求,result_json
包含对方accid、NIMVerifyType
。
- 调用接口
-
- 调用接口
NIMClient.getService(FriendService.class).addFriend(new AddFriendData(accid, verifyType, msg)).setCallback(new RequestCallback<Void>() { ... })
发起添加好友请求,构造的AddFriendData
对象中,配置对方accid和验证方式VerifyType
,其中DIRECT_ADD
表示直接添加,VERIFY_REQUEST
表示请求添加。 - 对方会收到一条系统通知
SystemMessage
,可以通过NIMClient.getService(SystemMessageObserver.class).observeReceiveSystemMsg(Observer<SystemMessage> observer, true)
来注册监听,通过getAttachObject
方法获取添加好友通知AddFriendNotify
。 - 接收方调用接口
NIMClient.getService(FriendService.class).ackAddFriendRequest(accid, boolean agree).setCallback(...)
来接受或拒绝对方请求。
- 调用接口
-
- 调用接口
–requestFriend:completion:
发起添加/接受/拒绝好友请求,构造的NIMUserRequest
对象中,配置userId
属性为对方accid,operation
属性为验证方式,NIMUserOperationAdd = 1
表示直接添加,NIMUserOperationRequest = 2
表示请求添加,NIMUserOperationVerify = 3
表示同意添加,NIMUserOperationReject = 4
表示拒绝添加。 - 对方会收到一条系统通知消息
NIMSystemNotification
,通过通过注册全局监听[[NIMSDK sharedSDK].systemNotificationManager addDelegate:self]
来接收回调,NIMSystemNotification
的type
为NIMSystemNotificationTypeFriendAdd
。
- 调用接口
-
- 调用接口
nim.addFriend(options)
直接添加好友,调用接口nim.applyFriend(options)
请求添加好友,其中配置account
参数为对方accid。对方会收到一条类型为'addFriend'/'applyFriend'
的系统通知sysMsgs
。 - 初始化SDK时配置系统通知回调函数
NIM.getInstance({..., onsysmsg: onSysMsg, ...})
来接收添加好友相关系统通知。 - 调用接口
nim.passFriendApply(options)
来接受好友请求,调用接口nim.rejectFriendApply(options)
来拒绝好友请求。其中配置idServer
参数为对应系统通知的idServer
,account
参数为对方accid。对方会收到一条类型为'passFriendApply'/'rejectFriendApply'
的系统通知sysMsgs
。
- 调用接口
如何设置和获取用户关系/好友关系的扩展字段?
扩展字段,请使用JSON格式封装,并传入非格式化的JSON字符串。
Android
-
- 更新好友扩展字段
通过接口NIMClient.getService(FriendService.class).updateFriendFields(String friendAccount, Map<FriendFieldEnum, Object> fields)
更新好友关系时,FriendFieldEnum
中EXTENSION
设置好友扩展字段。 - 获取好友扩展字段
通过Friend friend = NIMClient.getService(FriendService.class).getFriendByAccount("account")
根据用户账号获取好友关系时,返回Friend
对象,再通过其getExtension()
方法获取好友扩展字段Map。
- 更新好友扩展字段
iOS
-
- 更新好友扩展字段
通过接口-(void)updateUser:(NIMUser *)user completion:(nullable NIMUserBlock)completion
修改自己与目标用户的关系时,通过NIMUser
对象的ext
属性设置好友扩展字段。 - 获取好友扩展字段
通过接口-(nullable NSArray *)myFriends
获取好友列表时,通过返回的NIMUser
对象的ext
属性获取好友扩展字段。
- 更新好友扩展字段
macOS/Windows
-
- 更新好友扩展字段
通过接口nim_friend_update
更新好友资料时,参数friend_json
表示好友资料json字符串,其中kNIMFriendKeyEx = "ex"
参数设置好友扩展字段。 - 获取好友扩展字段
通过接口nim_friend_get_list
获取好友列表时,回调函数nim_friend_get_list_cb_func
的参数friend_list_json
表示好友列表和好友资料Json字符串,其中kNIMFriendKeyEx = "ex"
参数获取好友扩展字段。
- 更新好友扩展字段
Web
-
- 更新好友扩展字段
通过接口nim.updateFriend({account: 'accid', ..., custom: 'custom', ...})
更新好友时,其中参数custom
设置好友扩展字段。 - 获取好友扩展字段
通过接口nim.getFriends({done: getFriendsDone})
获取好友列表时,回调函数中返回Friend
列表,通过参数custom
获取好友扩展字段。
- 更新好友扩展字段
服务端
- 更新好友扩展字段*
通过API
https://api.netease.im/nimserver/friend/update.action
更新好友相关信息时,其中ex
参数设置好友扩展字段。 - 获取好友扩展字段**
通过APIhttps://api.netease.im/nimserver/friend/get.action
获取好友关系时,返回的好友列表中,ex
参数表示好友扩展字段。
[注意] 获取好友关系API只能查询某时间点起到现在有更新的双向好友。
如何监听添加好友相关的系统通知?
添加好友、同意或拒绝添加好友时,会收到系统通知。
-
Windows
-
Android
-
iOS
-
Web
- C++: 通过
RegSysmsgCb
注册系统通知回调。如果nim::SysMessage.type_
为kNIMSysMsgTypeFriendAdd
表示添加好友通知。通过nim::SysMessage.sender_accid_
获取对方账号。
解析nim::SysMessage.attach_
的vt
字段并强转为nim::NIMVerifyType
,表示添加好友的事件类型。nim::kNIMVerifyTypeAdd
对方直接加你为好友nim::kNIMVerifyTypeAsk
对方请求添加好友nim::kNIMVerifyTypeAgree
对方同意加你为好友nim::kNIMVerifyTypeReject
对方拒绝加你为好友
- C#: 通过
NIM.SysMessage.SysMsgAPI.ReceiveSysMsgHandler
注册系统通知回调。
判断回调的NIMSysMsgEventArgs
对象的.Message.Content.MsgType
,如果为kNIMSysMsgTypeFriendAdd
表示添加好友通知。通过回调的sender
参数获取对方账号。
将回调的NIMSysMsgEventArgs
对象的.Message.Content.Attachment
强转为FriendRequestVerify
对象,通过其VT
属性判断事件类型。NIM.Friend.NIMVerifyType.kNIMVerifyTypeAdd
对方直接加你为好友NIM.Friend.NIMVerifyType.kNIMVerifyTypeAsk
对方请求添加好友NIM.Friend.NIMVerifyType.kNIMVerifyTypeAgree
对方同意加你为好友NIM.Friend.NIMVerifyType.kNIMVerifyTypeReject
对方拒绝加你为好友
- C++: 通过
-
通过
NIMClient.getService(SystemMessageObserver.class).observeReceiveSystemMsg(systemMessageObserver, true)
注册系统通知观察者。- 通过
SystemMessage
的getType()
方法获取系统通知类型SystemMessageType
,如果为AddFriend
表示添加好友通知。 - 通过
SystemMessage
的getFromAccount()
方法获取对方账号。 - 通过
SystemMessage
的getAttachObject()
方法获取附件对象,并将其强转为AddFriendNotify
对象。 - 通过
AddFriendNotify
的getEvent()
方法获取事件类型。AddFriendNotify.Event.RECV_ADD_FRIEND_DIRECT
对方直接加你为好友AddFriendNotify.Event.RECV_ADD_FRIEND_VERIFY_REQUEST
对方请求添加好友AddFriendNotify.Event.RECV_AGREE_ADD_FRIEND
对方同意加你为好友AddFriendNotify.Event.RECV_REJECT_ADD_FRIEND
对方拒绝加你为好友
- 通过
-
通过
[[NIMSDK sharedSDK].systemNotificationManager addDelegate:self]
监听系统通知。- 通过
NIMSystemNotification
的type
字段获取系统通知类型NIMSystemNotificationType
,如果为NIMSystemNotificationTypeFriendAdd = 5
表示添加好友通知。 - 通过
NIMSystemNotification
的sourceID
字段获取对方账号。 - 通过
NIMSystemNotification
的attachment
字段获取附件对象,并将其强转为NIMUserAddAttachment
对象。 - 通过
NIMUserAddAttachment
的operationType
方法获取事件类型。NIMUserOperationAdd = 1
对方直接加你为好友NIMUserOperationRequest = 2
对方请求添加好友NIMUserOperationVerify = 3
对方同意加你为好友NIMUserOperationReject = 4
对方拒绝加你为好友
- 通过
-
初始化IM的时候,配置
onsysmsg
和onofflinesysmsgs
监听系统通知和离线系统通知。
处理添加好友相关通知的示例代码,请参考开发指南。
此文档是否对你有帮助?