好友关系
更新时间: 2024/04/17 15:00:37
NetEase IM SDK(以下简称 NIM SDK)提供好友关系的管理和维护。
技术原理
NIM SDK 支持添加/删除好友,设置好友信息,查询好友状态和信息等操作。
NIM SDK 添加好友的方式分为以下两种:
- 直接添加好友,不需要对方同意。该模式下,调用接口成功后,本端和对端(被添加的好友)都会收到添加好友成功的回调。
- 请求添加对方为好友,需要对方验证通过才能添加。该模式下,调用接口成功后,对端(被添加的好友)会收到好友申请的回调。
- 对端可以接受好友申请,接受成功后,本端和对端都会收到添加好友成功的回调。
- 对端也可以拒绝好友申请,拒绝成功后,发起好友申请的用户会收到拒绝好友申请的回调。
前提条件
已实现登录 IM。
监听好友相关事件
在进行好友相关操作前,您可以提前注册相关事件。注册成功后,当好友相关事件发生时,SDK 会触发对应回调通知。
好友相关回调:
onFriendAdded
:添加好友成功回调,返回添加成功的好友信息列表。当客户端本端直接添加好友,或者其他端同步添加好友时触发该回调。onFriendDeleted
:删除好友回调,返回删除的好友信息。当客户端本端直接删除好友,或者其他端同步删除的好友,或者对方好友删除自己时触发该回调。onFriendAddApplication
:申请添加好友回调,返回申请添加为好友的信息。onFriendAddRejected
:被对方拒绝好友添加申请的回调,被拒绝的好友申请信息。onFriendInfoChanged
:好友信息更新回调,返回变更的好友信息。当客户端本端直接更新的好友信息,或者其他端同步更新好友信息时触发该回调。
Android/iOS/macOS/Windows
调用 addFriendListener
方法注册好友相关监听器,监听添加好友、删除好友、好友信息更新、接受或拒绝好友申请等事件。
示例代码:
javaNIMClient.getService(V2NIMFriendService.class).addFriendListener(new V2NIMFriendListener() {
@Override
public void onFriendAdded(V2NIMFriend friendInfo) {
}
@Override
public void onFriendDeleted(String accountId, V2NIMFriendDeletionType deletionType) {
}
@Override
public void onFriendAddApplication(V2NIMFriendAddApplication applicationInfo) {
}
@Override
public void onFriendAddRejected(V2NIMFriendAddRejection rejectionInfo) {
}
@Override
public void onFriendInfoChanged(V2NIMFriend friendInfo) {
}
});
objective-c[[[NIMSDK sharedSDK] v2FriendService] addFriendListener:self];
- (void)onFriendAdded:(V2NIMFriend *)friendInfo{};
- (void)onFriendDeleted:(NSString *)accountId deletionType:(V2NIMFriendDeletionType)deletionType{}};
- (void)onFriendAddApplication:(V2NIMFriendAddApplication *)application{}};
- (void)onFriendAddRejected:(V2NIMFriendAddRejection *)rejectionInfo{}};
- (void)onFriendInfoChanged:(V2NIMFriend *)friendInfo{}};
cppV2NIMFriendListener listener;
listener.onSyncStarted = []() {
// sync friend started
};
listener.onSyncFinished = []() {
// sync friend finished
};
listener.onSyncFailed = [](V2NIMError error) {
// sync friend failed, handle error
};
listener.onFriendAdded = [](V2NIMFriend friendInfo) {
// friend added, handle friendInfo
};
listener.onFriendDeleted = [](nstd::string accountId, V2NIMFriendDeletionType deletionType) {
// friend deleted
};
listener.onFriendAddApplication = [](V2NIMFriendAddApplication applicationInfo) {
// friend add application, handle applicationInfo
};
listener.onFriendAddRejected = [](V2NIMFriendAddRejection rejectionInfo) {
// friend add rejected, handle rejectionInfo
};
listener.onFriendInfoChanged = [](V2NIMFriend friendInfo) {
// friend info changed, handle friendInfo
};
friendService.addFriendListener(listener);
如需移除好友相关监听器,可调用 removeFriendListener
方法。
javaNIMClient.getService(V2NIMFriendService.class).removeFriendListener(listener);
objective-c[[[NIMSDK sharedSDK] v2FriendService] removeFriendListener:self];
cppV2NIMFriendListener listener;
// ...
friendService.addFriendListener(listener);
// ...
friendService.removeFriendListener(listener);
Web/uni-app/小程序/Harmony
调用 on("EventName")
方法注册好友相关监听器,监听添加好友、删除好友、好友信息更新、接受或拒绝好友申请等事件。
示例代码:
typescriptnim.V2NIMFriendService.on("onFriendAdded", function (friend: V2NIMFriend) {})
nim.V2NIMFriendService.on("onFriendDeleted", function (accountId: string, deletionType: V2NIMFriendDeletionType) {})
nim.V2NIMFriendService.on("onFriendAddApplication", function (application: V2NIMFriendAddApplication) {})
nim.V2NIMFriendService.on("onFriendAddRejected", function (rejection: V2NIMFriendAddRejection) {})
nim.V2NIMFriendService.on("onFriendInfoChanged", function (friend: V2NIMFriend) {})
如需移除好友相关监听器,可调用 off("EventName")
方法。
typescriptnim.V2NIMFriendService.off("onFriendAdded", function (friend: V2NIMFriend) {})
nim.V2NIMFriendService.off("onFriendDeleted", function (accountId: string, deletionType: V2NIMFriendDeletionType) {})
nim.V2NIMFriendService.off("onFriendAddApplication", function (application: V2NIMFriendAddApplication) {})
nim.V2NIMFriendService.off("onFriendAddRejected", function (rejection: V2NIMFriendAddRejection) {})
nim.V2NIMFriendService.off("onFriendInfoChanged", function (friend: V2NIMFriend) {})
typescriptnim.friendService.on("onFriendAdded", function (friend: V2NIMFriend) {})
nim.friendService.on("onFriendDeleted", function (accountId: string, deletionType: V2NIMFriendDeletionType) {})
nim.friendService.on("onFriendAddApplication", function (application: V2NIMFriendAddApplication) {})
nim.friendService.on("onFriendAddRejected", function (rejection: V2NIMFriendAddRejection) {})
nim.friendService.on("onFriendInfoChanged", function (friend: V2NIMFriend) {})
如需移除好友相关监听器,可调用 off("EventName")
方法。
typescriptnim.friendService.off("onFriendAdded", function (friend: V2NIMFriend) {})
nim.friendService.off("onFriendDeleted", function (accountId: string, deletionType: V2NIMFriendDeletionType) {})
nim.friendService.off("onFriendAddApplication", function (application: V2NIMFriendAddApplication) {})
nim.friendService.off("onFriendAddRejected", function (rejection: V2NIMFriendAddRejection) {})
nim.friendService.off("onFriendInfoChanged", function (friend: V2NIMFriend) {})
添加好友
调用 addFriend
方法添加好友。
NIM SDK 添加好友分为以下两种模式(V2NIMFriendAddMode
):
-
直接添加为好友,对应枚举为
V2NIM_FRIEND_MODE_TYPE_ADD
。该模式下,调用接口成功后,本端和对端(被添加的好友)都会收到
onFriendAdded
回调。 -
请求添加对方为好友,需要对方验证通过才能添加,对应枚举为
V2NIM_FRIEND_MODE_TYPE_APPLY
。该模式下,调用接口成功后,即向对方发送添加好友的申请,对端(被添加的好友)会收到
onFriendAddApplication
回调。对端可以选择接受或拒绝好友申请。 -
参数说明:
Androidjava
void addFriend(String accountId, V2NIMFriendAddParams params, V2NIMSuccessCallback<Void> success, V2NIMFailureCallback failure);
参数名称 类型 是否必填 默认值 描述 accountId
String 是 - 需要添加为好友的账号 ID。 params
V2NIMFriendAddParams
是 - 添加好友的配置参数。 success
V2NIMSuccessCallback
是 - 添加好友成功回调。 failure
V2NIMFailureCallback
是 - 添加好友失败回调,返回错误码。 iOSobjective-c
- (void)addFriend:(NSString *)accountId params:(V2NIMFriendAddParams *)params success:(nullable V2NIMSuccessCallback)success failure:(nullable V2NIMFailureCallback)failure;
参数名称 类型 是否必填 默认值 描述 accountId
NSString * 是 - 需要添加为好友的账号 ID。 params
V2NIMFriendAddParams
是 - 添加好友的配置参数。 success
V2NIMSuccessCallback
是 - 添加好友成功回调。 failure
V2NIMFailureCallback
是 - 添加好友失败回调,返回错误码。 macOS/Windowscpp
virtual void addFriend(nstd::string accountId, V2NIMFriendAddParams params, V2NIMSuccessCallback<void> success, V2NIMFailureCallback failure) = 0;
参数名称 类型 是否必填 默认值 描述 accountId
nstd::string 是 - 需要添加为好友的账号 ID。 params
V2NIMFriendAddParams
是 - 添加好友的配置参数。 success
V2NIMSuccessCallback
是 - 添加好友成功回调。 failure
V2NIMFailureCallback
是 - 添加好友失败回调,返回错误码。 Web/uni-app/小程序typescript
addFriend(accountId: string, params: V2NIMFriendAddParams): Promise<void>
参数名称 类型 是否必填 默认值 描述 accountId
string 是 - 需要添加为好友的账号 ID。 params
V2NIMFriendAddParams
是 - 添加好友的配置参数。 Harmonytypescript
addFriend(accountId: string, params: V2NIMFriendAddParams): Promise<void>
参数名称 类型 是否必填 默认值 描述 accountId
string 是 - 需要添加为好友的账号 ID。 params
V2NIMFriendAddParams
是 - 添加好友的配置参数。 -
示例代码:
Androidjava
V2NIMFriendAddParams addParams = V2NIMFriendAddParams.V2NIMFriendAddParamsBuilder.builder(addMode) .withPostscript("xxx") .build(); NIMClient.getService(V2NIMFriendService.class).addFriend("accoundId", addParams, new V2NIMSuccessCallback<Void>() { @Override public void onSuccess(Void unused) { // addMode == V2NIM_FRIEND_MODE_TYPE_ADD "添加好友成功" // addMode == V2NIM_FRIEND_MODE_TYPE_APPLY "添加好友请求发送成功" } }, new V2NIMFailureCallback() { @Override public void onFailure(V2NIMError error) { } });
iOSobjective-c
V2NIMFriendAddParams *addParams = [V2NIMFriendAddParams new]; addParams.addMode = V2NIM_FRIEND_MODE_TYPE_ADD; addParams.postscript = @"你好!我是XXX"; [[[NIMSDK sharedSDK] v2FriendService] addFriend:@"accountId" params:addParams success:^{ } failure:^(V2NIMError * _Nonnull error) { }];
macOS/Windowscpp
V2NIMFriendAddParams params; params.addMode = V2NIM_FRIEND_MODE_TYPE_ADD; params.postscript = "hello"; friendService.addFriend( "account", params, []() { // add friend success }, [](V2NIMError error) { // add friend failed, handle error } );
Web/uni-app/小程序typescript
nim.V2NIMFriendService.addFriend('accid', { addMode: 2, postscript: '你好,我是xxx' });
Harmonytypescript
nim.friendService.addFriend('accid', { addMode: 2, postscript: '你好,我是xxx' })
接受好友申请
如果添加好友时,选择了 V2NIMFriendAddMode.V2NIM_FRIEND_MODE_TYPE_APPLY
,即需要对方(被添加的好友)验证通过才能成功添加为好友。
收到添加好友申请的用户可以调用 acceptAddApplication
方法接受好友申请。调用接口成功后,本端和对端(发起好友申请的用户)都会收到 onFriendAdded
回调。
操作完成后,SDK 内部会更新申请添加好友信息(applicationInfo
)相关操作的状态(V2NIMFriendAddApplicationStatus
)并处理相关错误码。
-
参数说明:
Androidjava
void acceptAddApplication(V2NIMFriendAddApplication application, V2NIMSuccessCallback<Void> success, V2NIMFailureCallback failure);
参数名称 类型 是否必填 默认值 描述 application
V2NIMFriendAddApplication
是 - 申请添加好友的相关信息。 success
V2NIMSuccessCallback
是 - 接受好友申请成功回调。 failure
V2NIMFailureCallback
是 - 接受好友申请失败回调,返回错误码。 iOSobjective-c
- (void)acceptAddApplication:(V2NIMFriendAddApplication *)application success:(nullable V2NIMSuccessCallback)success failure:(nullable V2NIMFailureCallback)failure;
参数名称 类型 是否必填 默认值 描述 application
V2NIMFriendAddApplication
是 - 申请添加好友的相关信息。 success
V2NIMSuccessCallback
是 - 接受好友申请成功回调。 failure
V2NIMFailureCallback
是 - 接受好友申请失败回调,返回错误码。 macOS/Windowscpp
virtual void acceptAddApplication(V2NIMFriendAddApplication application, V2NIMSuccessCallback<void> success, V2NIMFailureCallback failure) = 0;
参数名称 类型 是否必填 默认值 描述 application
V2NIMFriendAddApplication
是 - 申请添加好友的相关信息。 success
V2NIMSuccessCallback
是 - 接受好友申请成功回调。 failure
V2NIMFailureCallback
是 - 接受好友申请失败回调,返回错误码。 Web/uni-app/小程序typescript
acceptAddApplication(application: V2NIMFriendAddApplication): Promise<void>
参数名称 类型 是否必填 默认值 描述 application
V2NIMFriendAddApplication
是 - 申请添加好友的相关信息。 Harmonytypescript
acceptAddApplication(application: V2NIMFriendAddApplication): Promise<void>
参数名称 类型 是否必填 默认值 描述 application
V2NIMFriendAddApplication
是 - 申请添加好友的相关信息。 -
示例代码:
Androidjava
// V2NIMFriendAddApplication application 无法构造,从查询接口获得 NIMClient.getService(V2NIMFriendService.class).acceptAddApplication(application, new V2NIMSuccessCallback<Void>() { @Override public void onSuccess(Void unused) { } }, new V2NIMFailureCallback() { @Override public void onFailure(V2NIMError error) { } });
iOSobjective-c
[[[NIMSDK sharedSDK] v2FriendService] acceptAddApplication:application success:^{ } failure:^(V2NIMError * _Nonnull error) { }];
macOS/Windowscpp
V2NIMFriendAddApplication application; // get application from listener or query // ... friendService.acceptAddApplication( application, []() { // accept friend request success }, [](V2NIMError error) { // accept friend request failed, handle error } );
Web/uni-app/小程序typescript
nim.V2NIMFriendService.acceptAddApplication(application);
Harmonytypescript
nim.friendService.acceptAddApplication(application)
拒绝好友申请
如果添加好友时,选择了 V2NIMFriendAddMode.V2NIM_FRIEND_MODE_TYPE_APPLY
,即需要对方(被添加的好友)验证通过才能成功添加为好友。
收到添加好友申请的用户可以调用 rejectAddApplication
方法拒绝好友申请。调用接口成功后,对端(发起好友申请的用户)会收到 onFriendAddRejected
回调。
操作完成后,SDK 内部会更新申请添加好友信息(applicationInfo
)相关操作的状态(V2NIMFriendAddApplicationStatus
)并处理相关错误码。
-
参数说明:
Androidjava
void rejectAddApplication(V2NIMFriendAddApplication application, String postscript, V2NIMSuccessCallback<Void> success, V2NIMFailureCallback failure);
参数名称 类型 是否必填 默认值 描述 application
V2NIMFriendAddApplication
是 - 申请添加好友的相关信息。 postscript
String 否 - 拒绝好友申请的附言。 success
V2NIMSuccessCallback
是 - 拒绝好友申请成功回调。 failure
V2NIMFailureCallback
是 - 拒绝好友申请失败回调,返回错误码。 iOSobjective-c
- (void)rejectAddApplication:(V2NIMFriendAddApplication *)application postscript:(NSString *)postscript success:(nullable V2NIMSuccessCallback)success failure:(nullable V2NIMFailureCallback)failure;
参数名称 类型 是否必填 默认值 描述 application
V2NIMFriendAddApplication
是 - 申请添加好友的相关信息。 postscript
NSString * 否 - 拒绝好友申请的附言。 success
V2NIMSuccessCallback
是 - 拒绝好友申请成功回调。 failure
V2NIMFailureCallback
是 - 拒绝好友申请失败回调,返回错误码。 macOS/Windowscpp
virtual void rejectAddApplication(V2NIMFriendAddApplication application, std::string postscript, V2NIMSuccessCallback<void> success, V2NIMFailureCallback failure) = 0;
参数名称 类型 是否必填 默认值 描述 application
V2NIMFriendAddApplication
是 - 申请添加好友的相关信息。 postscript
std::string 否 - 拒绝好友申请的附言。 success
V2NIMSuccessCallback
是 - 拒绝好友申请成功回调。 failure
V2NIMFailureCallback
是 - 拒绝好友申请失败回调,返回错误码。 Web/uni-app/小程序typescript
rejectAddApplication(application: V2NIMFriendAddApplication, postscript?: string): Promise<void>
参数名称 类型 是否必填 默认值 描述 application
V2NIMFriendAddApplication
是 - 申请添加好友的相关信息。 postscript
string 否 - 拒绝好友申请的附言。 Harmonytypescript
rejectAddApplication(application: V2NIMFriendAddApplication, postscript?: string): Promise<void>
参数名称 类型 是否必填 默认值 描述 application
V2NIMFriendAddApplication
是 - 申请添加好友的相关信息。 postscript
string 否 - 拒绝好友申请的附言。 -
示例代码:
Androidjava
// V2NIMFriendAddApplication application 无法构造,从查询接口获得 NIMClient.getService(V2NIMFriendService.class).rejectAddApplication(application, new V2NIMSuccessCallback<Void>() { @Override public void onSuccess(Void unused) { } }, new V2NIMFailureCallback() { @Override public void onFailure(V2NIMError error) { } });
iOSobjective-c
[[[NIMSDK sharedSDK] v2FriendService] rejectAddApplication:application postscript:@"XXX" success:^{ } failure:^(V2NIMError * _Nonnull error) { }];
macOS/Windowscpp
V2NIMFriendAddApplication application; // get application from listener or query // ... friendService.rejectAddApplication( application, "postscript", []() { // reject friend request success }, [](V2NIMError error) { // reject friend request failed, handle error } );
Web/uni-app/小程序typescript
nim.V2FriendService.rejectAddApplication(application, 'ps');
Harmonytypescript
nim.friendService.rejectAddApplication(application, 'ps')
删除好友
调用 deleteFriend
方法删除好友。调用接口成功后,本端和对端(被删除的好友)都会收到 onFriendDeleted
回调。
NIM SDK 当前的删除是指双向删除,即当一个用户将另一个用户从好友列表中删除时,双方的好友关系都会被解除。
-
参数说明:
Androidjava
void deleteFriend(String accountId, V2NIMFriendDeleteParams params, V2NIMSuccessCallback<Void> success, V2NIMFailureCallback failure);
参数名称 类型 是否必填 默认值 描述 accountId
String 是 - 需要删除的好友的账号 ID。 params
V2NIMFriendDeleteParams
是 - 删除好友的配置参数。 success
V2NIMSuccessCallback
是 - 删除好友成功回调。 failure
V2NIMFailureCallback
是 - 删除好友失败回调,返回错误码。 iOSobjective-c
- (void)deleteFriend:(NSString *)accountId params:(V2NIMFriendDeleteParams *)params success:(nullable V2NIMSuccessCallback)success failure:(nullable V2NIMFailureCallback)failure;
参数名称 类型 是否必填 默认值 描述 accountId
NSString * 是 - 需要删除的好友的账号 ID。 params
V2NIMFriendDeleteParams
是 - 删除好友的配置参数。 success
V2NIMSuccessCallback
是 - 删除好友成功回调。 failure
V2NIMFailureCallback
是 - 删除好友失败回调,返回错误码。 macOS/Windowscpp
virtual void deleteFriend(nstd::string accountId, V2NIMFriendDeleteParams params, V2NIMSuccessCallback<void> success, V2NIMFailureCallback failure) = 0;
参数名称 类型 是否必填 默认值 描述 accountId
nstd::string 是 - 需要删除的好友的账号 ID。 params
V2NIMFriendDeleteParams
是 - 删除好友的配置参数。 success
V2NIMSuccessCallback
是 - 删除好友成功回调。 failure
V2NIMFailureCallback
是 - 删除好友失败回调,返回错误码。 Web/uni-app/小程序typescript
deleteFriend(accountId: string, params: V2NIMFriendDeleteParams): Promise<void>
参数名称 类型 是否必填 默认值 描述 accountId
string 是 - 需要删除的好友的账号 ID。 params
V2NIMFriendDeleteParams
是 - 删除好友的配置参数。 Harmonytypescript
deleteFriend(accountId: string, params: V2NIMFriendDeleteParams): Promise<void>
参数名称 类型 是否必填 默认值 描述 accountId
string 是 - 需要删除的好友的账号 ID。 params
V2NIMFriendDeleteParams
是 - 删除好友的配置参数。 -
示例代码:
Androidjava
V2NIMFriendDeleteParams deleteParams = V2NIMFriendDeleteParams.V2NIMFriendDeleteParamsBuilder.builder() .withDeleteAlias(deleteAlias) .build(); NIMClient.getService(V2NIMFriendService.class).deleteFriend("accoundId", deleteParams, new V2NIMSuccessCallback<Void>() { @Override public void onSuccess(Void unused) { } }, new V2NIMFailureCallback() { @Override public void onFailure(V2NIMError error) { } });
iOSobjective-c
V2NIMFriendDeleteParams *deleteParams = [V2NIMFriendDeleteParams new]; deleteParams.deleteAlias = YES; [[[NIMSDK sharedSDK] v2FriendService] deleteFriend:@"accountId" params:deleteParams success:^{ } failure:^(V2NIMError * _Nonnull error) { }];
macOS/Windowscpp
V2NIMFriendDeleteParams params; params.deleteAlias = true; friendService.deleteFriend( "account", params, []() { // delete friend success }, [](V2NIMError error) { // delete friend failed, handle error } );
Web/uni-app/小程序typescript
nim.V2NIMFriendService.deleteFriend('accid', { deleteAlias: true });
Harmonytypescript
nim.friendService.deleteFriend('accid', { deleteAlias: true })
设置好友信息
调用 setFriendInfo
方法设置好友的信息,包括好友备注和好友扩展信息。
调用该接口成功后,本端会收到 onFriendsInfoChanged
回调。
-
参数说明:
Androidjava
void setFriendInfo(String accountId, V2NIMFriendSetParams params, V2NIMSuccessCallback<Void> success, V2NIMFailureCallback failure);
参数名称 类型 是否必填 默认值 描述 accountId
String 是 - 申请添加好友的相关信息。 params
V2NIMFriendSetParams
否 - 设置好友信息的配置参数。 success
V2NIMSuccessCallback
是 - 设置好友信息成功回调。 failure
V2NIMFailureCallback
是 - 设置好友信息失败回调,返回错误码。 iOSobjective-c
- (void)setFriendInfo:(NSString *)accountId params:(V2NIMFriendSetParams *)params success:(nullable V2NIMSuccessCallback)success failure:(nullable V2NIMFailureCallback)failure;
参数名称 类型 是否必填 默认值 描述 accountId
NSString * 是 - 申请添加好友的相关信息。 params
V2NIMFriendSetParams
否 - 设置好友信息的配置参数。 success
V2NIMSuccessCallback
是 - 设置好友信息成功回调。 failure
V2NIMFailureCallback
是 - 设置好友信息失败回调,返回错误码。 macOS/Windowscpp
virtual void setFriendInfo(std::string accountId, V2NIMFriendSetParams params, V2NIMSuccessCallback<void> success, V2NIMFailureCallback failure) = 0;
参数名称 类型 是否必填 默认值 描述 accountId
std::string 是 - 申请添加好友的相关信息。 params
V2NIMFriendSetParams
否 - 设置好友信息的配置参数。 success
V2NIMSuccessCallback
是 - 设置好友信息成功回调。 failure
V2NIMFailureCallback
是 - 设置好友信息失败回调,返回错误码。 Web/uni-app/小程序typescript
setFriendInfo(accountId: string, params: V2NIMFriendSetParams): Promise<void>
参数名称 类型 是否必填 默认值 描述 accountId
string 是 - 申请添加好友的相关信息。 params
V2NIMFriendSetParams
否 - 设置好友信息的配置参数。 Harmonytypescript
setFriendInfo(accountId: string, params: V2NIMFriendSetParams): Promise<void>
参数名称 类型 是否必填 默认值 描述 accountId
string 是 - 申请添加好友的相关信息。 params
V2NIMFriendSetParams
否 - 设置好友信息的配置参数。 -
示例代码:
Androidjava
V2NIMFriendSetParams setParams = V2NIMFriendSetParams.V2NIMFriendSetParamsBuilder.builder() .withAlias(alias) .withServerExtension(serverExtension) .build(); NIMClient.getService(V2NIMFriendService.class).setFriendInfo("accountId", setParams, new V2NIMSuccessCallback<Void>() { @Override public void onSuccess(Void unused) { } }, new V2NIMFailureCallback() { @Override public void onFailure(V2NIMError error) { } });
iOSobjective-c
V2NIMFriendSetParams *setParams = [V2NIMFriendSetParams new]; setParams.alias = @"XXX"; setParams.serverExtension = @"XXX"; [[[NIMSDK sharedSDK] v2FriendService] setFriendInfo:@"accountId" params:setParams success:^{ } failure:^(V2NIMError * _Nonnull error) { }];
macOS/Windowscpp
```cpp V2NIMFriendSetParams params; params.alias = "alias"; friendService.setFriendInfo( "account", params, []() { // set friend info success }, [](V2NIMError error) { // set friend info failed, handle error });
Web/uni-app/小程序typescript
nim.V2NIMFriendService.setFriendInfo('accid', { alias: 'alias', serverExtension: 'serverExtension' });
Harmonytypescript
nim.friendService.setFriendInfo('accid', { alias: 'alias', serverExtension: 'serverExtension' })
查询好友列表
调用 getFriendList
方法本地查询好友列表。
用户登录后,SDK 开始同步好友信息,建议同步完成后,调用该接口拉取完整的好友信息列表。
-
参数说明:
Androidjava
void getFriendList(V2NIMSuccessCallback<List<V2NIMFriend>> success, V2NIMFailureCallback failure);
参数名称 类型 是否必填 默认值 描述 success
V2NIMSuccessCallback
是 - 查询成功回调,返回 V2NIMFriend
列表。failure
V2NIMFailureCallback
是 - 查询失败回调,返回错误码。 iOSobjective-c
- (void)getFriendList:(nullable V2NIMGetFirendListSuccess)success failure:(nullable V2NIMFailureCallback)failure;
参数名称 类型 是否必填 默认值 描述 success
V2NIMGetFirendListSuccess
是 - 查询成功回调,可自定义设置。 failure
V2NIMFailureCallback
是 - 查询失败回调,返回错误码。 macOS/Windowscpp
virtual void getFriendList(V2NIMSuccessCallback<nstd::vector<V2NIMFriend>> success, V2NIMFailureCallback failure) = 0;
参数名称 类型 是否必填 默认值 描述 success
V2NIMSuccessCallback
是 - 查询成功回调,返回 V2NIMFriend
列表。failure
V2NIMFailureCallback
是 - 查询失败回调,返回错误码。 Web/uni-app/小程序typescript
getFriendList(): Promise<V2NIMFriend[]>
Harmonytypescript
getFriendList(): Promise<V2NIMFriend[]>
-
示例代码:
Androidjava
NIMClient.getService(V2NIMFriendService.class).getFriendList( new V2NIMSuccessCallback<List<V2NIMFriend>>() { @Override public void onSuccess(List<V2NIMFriend> v2NIMFriends) { } }, new V2NIMFailureCallback() { @Override public void onFailure(V2NIMError error) { } });
iOSobjective-c
[[[NIMSDK sharedSDK] v2FriendService] getFriendList:^(NSArray<V2NIMFriend *> * _Nonnull result) { } failure:^(V2NIMError * _Nonnull error) { }];
macOS/Windowscpp
friendService.getFriendList( [](std::vector<V2NIMFriend> friends) { // get friend list success, handle friends }, [](V2NIMError error) { // get friend list failed, handle error } );
Web/uni-app/小程序typescript
const friends = nim.V2NIMFriendService.getFriendList();
Harmonytypescript
const friends = nim.friendService.getFriendList()
查询指定好友信息
调用 getFriendByIds
方法根据账号 ID 查询指定好友的信息列表,只返回账号 ID 存在的好友信息。
-
参数说明:
Androidjava
void getFriendByIds(List<String> accountIds, V2NIMSuccessCallback<List<V2NIMFriend>> success, V2NIMFailureCallback failure);
参数名称 类型 是否必填 默认值 描述 accountIds
List<String> 是 - 需要查询信息的好友 ID 列表。 success
V2NIMSuccessCallback
是 - 查询成功回调,返回 V2NIMFriend
列表。failure
V2NIMFailureCallback
是 - 查询失败回调,返回错误码。 iOSobjective-c
- (void)getFriendByIds:(NSArray <NSString *> *)accountIds success:(nullable V2NIMGetFirendListSuccess)success failure:(nullable V2NIMFailureCallback)failure;
参数名称 类型 是否必填 默认值 描述 accountIds
NSArray<NSString *> * 是 - 需要查询信息的好友 ID 列表。 success
V2NIMGetFirendListSuccess
是 - 查询成功回调,可自定义设置。 failure
V2NIMFailureCallback
是 - 查询失败回调,返回错误码。 macOS/Windowscpp
virtual void getFriendByIds(std::vector<std::string> accountIds, V2NIMSuccessCallback<std::vector<V2NIMFriend>> success, V2NIMFailureCallback failure) = 0;
参数名称 类型 是否必填 默认值 描述 accountIds
std::vector<std::string> 是 - 需要查询信息的好友 ID 列表。 success
V2NIMSuccessCallback
是 - 查询成功回调,返回 V2NIMFriend
列表。failure
V2NIMFailureCallback
是 - 查询失败回调,返回错误码。 Web/uni-app/小程序typescript
getFriendByIds(accountIds: string[]): Promise<V2NIMFriend[]>
参数名称 类型 是否必填 默认值 描述 accountIds
string[] 是 - 需要查询信息的好友 ID 列表。 Harmonytypescript
getFriendByIds(accountIds: string[]): Promise<V2NIMFriend[]>
参数名称 类型 是否必填 默认值 描述 accountIds
string[] 是 - 需要查询信息的好友 ID 列表。 -
示例代码:
Androidjava
NIMClient.getService(V2NIMFriendService.class).getFriendByIds(accountIds, new V2NIMSuccessCallback<List<V2NIMFriend>>() { @Override public void onSuccess(List<V2NIMFriend> v2NIMFriends) { } }, new V2NIMFailureCallback() { @Override public void onFailure(V2NIMError error) { } });
iOSobjective-c
[[[NIMSDK sharedSDK] v2FriendService] getFriendByIds:@[@"accountId1",@"accountId2"] success:^(NSArray<V2NIMFriend *> * _Nonnull result) { } failure:^(V2NIMError * _Nonnull error) { }];
macOS/Windowscpp
friendService.getFriendByIds( {"account1", "account2"}, [](std::vector<V2NIMFriend> friends) { // get friend list success, handle friends }, [](V2NIMError error) { // get friend list failed, handle error });
Web/uni-app/小程序typescript
const friends = await nim.V2NIMFriendService.getFriendByIds(['accid1', 'accid2']);
Harmonytypescript
const friends = await nim.friendService.getFriendByIds(['accid1', 'accid2'])
根据关键字搜索好友信息
调用 searchFriendByOption
方法根据关键字信息搜索好友的信息。
该方法默认搜索好友的备注,若有需要,也可以指定同时搜索用户账号。
-
参数说明:
Androidjava
void searchFriendByOption(V2NIMFriendSearchOption friendSearchOption, V2NIMSuccessCallback<List<V2NIMFriend>> success, V2NIMFailureCallback failure);
参数名称 类型 是否必填 默认值 描述 friendSearchOption
V2NIMFriendSearchOption
是 - 好友搜索的相关配置参数。 success
V2NIMSuccessCallback
是 - 搜索成功回调,返回 V2NIMFriend
列表。failure
V2NIMFailureCallback
是 - 搜索失败回调,返回错误码。 iOSobjective-c
- (void)searchFriendByOption:(V2NIMFriendSearchOption *)friendSearchOption success:(nullable V2NIMGetFirendListSuccess)success failure:(nullable V2NIMFailureCallback)failure;
参数名称 类型 是否必填 默认值 描述 friendSearchOption
V2NIMFriendSearchOption
是 - 好友搜索的相关配置参数。 success
V2NIMGetFirendListSuccess
是 - 搜索成功回调,可自定义设置。 failure
V2NIMFailureCallback
是 - 搜索失败回调,返回错误码。 Windows/macOScpp
virtual void searchFriendByOption(const V2NIMFriendSearchOption& option,V2NIMSuccessCallback<nstd::vector<V2NIMFriend>> success,V2NIMFailureCallback failure) = 0;
参数名称 类型 是否必填 默认值 描述 option
V2NIMFriendSearchOption
是 - 好友搜索的相关配置参数。 success
V2NIMSuccessCallback
是 - 搜索成功回调,返回 V2NIMFriend
列表。failure
V2NIMFailureCallback
是 - 搜索失败回调,返回错误码。 Web/uni-app/小程序typescript
searchFriendByOption(option: V2NIMFriendSearchOption): Promise<V2NIMFriend[]>
参数名称 类型 是否必填 默认值 描述 friendSearchOption
V2NIMFriendSearchOption
是 - 好友搜索的相关配置参数。 -
示例代码:
Androidjava
// 按需配置 // .withSearchAccountId() // .withSearchAlias() .build(); NIMClient.getService(V2NIMFriendService.class).searchFriendByOption(option, new V2NIMSuccessCallback<List<V2NIMFriend>>() { @Override public void onSuccess(List<V2NIMFriend> v2NIMFriends) { } }, new V2NIMFailureCallback() { @Override public void onFailure(V2NIMError error) { } });
iOSobjective-c
// 按需配置 option.searchAlias = YES; option.searchAccountId = YES; [NIMSDK.sharedSDK.v2FriendService searchFriendByOption:option success:^(NSArray <V2NIMFriend *> *result) { } failure:^(V2NIMError *error) { }];
Windows/macOScpp
V2NIMFriendSearchOption option; option.keyword = "keyword"; friendService.searchFriendByOption( option, [](nstd::vector<V2NIMFriend> friends) { // search friend success, handle friends }, [](V2NIMError error) { // search friend failed, handle error });
Web/uni-app/小程序typescript
try { const friends = await nim.V2NIMFriendService.searchFriendByOption({ keyword: 'nick', searchAlias: true, searchAccountId: false }); } catch(err) { console.error('searchFriendByOption Error:', err); }
查询好友状态
调用 checkFriend
方法根据账号 ID 查询好友的状态。
调用接口成功后,会返回一个 key 为 accountId,value 为好友状态的 Map。
-
参数说明:
Androidjava
void checkFriend(List<String> accountIds, V2NIMSuccessCallback<Map<String, Boolean>> success, V2NIMFailureCallback failure);
参数名称 类型 是否必填 默认值 描述 accountIds
List<String> 是 - 需要查询好友状态的账号 ID 列表。 success
V2NIMSuccessCallback
是 - 查询成功回调,返回每个好友账号 ID 的状态值。 failure
V2NIMFailureCallback
是 - 查询失败回调,返回错误码。 iOSobjective-c
- (void)checkFriend:(NSArray <NSString *> *)accountIds success:(nullable V2NIMCheckFriendSuccess)success failure:(nullable V2NIMFailureCallback)failure;
参数名称 类型 是否必填 默认值 描述 accountIds
NSArray<NSString *> * 是 - 需要查询好友状态的账号 ID 列表。 success
V2NIMCheckFriendSuccess
是 - 查询成功回调,可自定义设置。 failure
V2NIMFailureCallback
是 - 查询失败回调,返回错误码。 macOS/Windowscpp
virtual void checkFriend(std::vector<std::string> accountIds, V2NIMSuccessCallback<std::map<std::string, bool>> success, V2NIMFailureCallback failure) = 0;
参数名称 类型 是否必填 默认值 描述 accountIds
std::vector<std::string> 是 - 需要查询好友状态的账号 ID 列表。 success
V2NIMSuccessCallback
是 - 查询成功回调,返回每个好友账号 ID 的状态值。 failure
V2NIMFailureCallback
是 - 查询失败回调,返回错误码。 Web/uni-app/小程序typescript
checkFriend(accountIds: string[]): Promise<V2NIMCheckFriendResult>
参数名称 类型 是否必填 默认值 描述 accountIds
string[] 是 - 需要查询好友状态的账号 ID 列表。 Harmonytypescript
checkFriend(accountIds: string[]): Promise<V2NIMCheckFriendResult>
参数名称 类型 是否必填 默认值 描述 accountIds
string[] 是 - 需要查询好友状态的账号 ID 列表。 -
示例代码:
Androidjava
NIMClient.getService(V2NIMFriendService.class).checkFriend(accountIds, new V2NIMSuccessCallback<Map<String, Boolean>>() { @Override public void onSuccess(Map<String, Boolean> stringBooleanMap) { } }, new V2NIMFailureCallback() { @Override public void onFailure(V2NIMError error) { } });
iOSobjective-c
[[[NIMSDK sharedSDK] v2FriendService] checkFriend:@[@"accountId1",@"accountId2"] success:^(NSDictionary<NSString *,NSNumber *> * _Nonnull result) { } failure:^(V2NIMError * _Nonnull error) { }];
macOS/Windowscpp
friendService.checkFriend( {"account1", "account2"}, [](nstd::map<nstd::string, bool> checkList) { // check friend success, handle checkList }, [](V2NIMError error) { // check friend failed, handle error });
Web/uni-app/小程序typescript
const res = await nim.V2NIMFriendService.checkFriend(['accid1', 'accid2']);
Harmonytypescript
const res = await nim.friendService.checkFriend(['accid1', 'accid2'])
查询好友申请信息
调用 getAddApplicationList
方法查询好友申请信息列表。
NIM SDK 将按照从新到旧的顺序进行查询。
-
参数说明:
Androidjava
void getAddApplicationList(V2NIMFriendAddApplicationQueryOption option, V2NIMSuccessCallback<V2NIMFriendAddApplicationResult> success, V2NIMFailureCallback failure);
参数名称 类型 是否必填 默认值 描述 option
V2NIMFriendAddApplicationQueryOption
是 - 查询申请添加好友信息的相关配置参数。 success
V2NIMSuccessCallback
是 - 查询成功回调,返回 V2NIMFriendAddApplicationResult
。failure
V2NIMFailureCallback
是 - 查询失败回调,返回错误码。 iOSobjective-c
- (void)getAddApplicationList:(V2NIMFriendAddApplicationQueryOption *)option success:(nullable V2NIMGetApplicationListSuccess)success failure:(nullable V2NIMFailureCallback)failure;
参数名称 类型 是否必填 默认值 描述 option
V2NIMFriendAddApplicationQueryOption
是 - 查询申请添加好友信息的相关配置参数。 success
V2NIMGetApplicationListSuccess
是 - 查询成功回调,可自定义设置。 failure
V2NIMFailureCallback
是 - 查询失败回调,返回错误码。 macOS/Windowscpp
virtual void getAddApplicationList(V2NIMFriendAddApplicationQueryOption option, V2NIMSuccessCallback<V2NIMFriendAddApplicationResult> success, V2NIMFailureCallback failure) = 0;
参数名称 类型 是否必填 默认值 描述 option
V2NIMFriendAddApplicationQueryOption
是 - 查询申请添加好友信息的相关配置参数。 success
V2NIMSuccessCallback
是 - 查询成功回调,返回 V2NIMFriendAddApplicationResult
列表。failure
V2NIMFailureCallback
是 - 查询失败回调,返回错误码。 Web/uni-app/小程序typescript
getAddApplicationList(option: V2NIMFriendAddApplicationQueryOption): Promise<V2NIMFriendAddApplicationResult>
参数名称 类型 是否必填 默认值 描述 option
V2NIMFriendAddApplicationQueryOption
是 - 查询申请添加好友信息的相关配置参数。 Harmonytypescript
getAddApplicationList(option: V2NIMFriendAddApplicationQueryOption): Promise<V2NIMFriendAddApplicationResult>
参数名称 类型 是否必填 默认值 描述 option
V2NIMFriendAddApplicationQueryOption
是 - 查询申请添加好友信息的相关配置参数。 -
示例代码:
Androidjava
V2NIMFriendAddApplicationQueryOption option = V2NIMFriendAddApplicationQueryOption.V2NIMFriendAddApplicationQueryOptionBuilder.builder() .withLimit(limit) .withOffset(offset) .withStatus(statuses) .build(); NIMClient.getService(V2NIMFriendService.class).getAddApplicationList(option, new V2NIMSuccessCallback<V2NIMFriendAddApplicationResult>() { @Override public void onSuccess(V2NIMFriendAddApplicationResult v2NIMFriendAddApplicationResult) { } }, new V2NIMFailureCallback() { @Override public void onFailure(V2NIMError error) { } } );
iOSobjective-c
V2NIMFriendAddApplicationQueryOption *queryOption = [V2NIMFriendAddApplicationQueryOption new]; queryOption.offset = 0; queryOption.limit = 50; [[[NIMSDK sharedSDK] v2FriendService] getAddApplicationList:queryOption success:^(V2NIMFriendAddApplicationResult * _Nonnull result) { } failure:^(V2NIMError * _Nonnull error) { }];
macOS/Windowscpp
V2NIMFriendAddApplicationQueryOption option; option.offset = 0; option.limit = 10; friendService.getAddApplicationList( option, [](V2NIMFriendAddApplicationResult result) { // 查询添加申请列表成功,处理结果 }, [](V2NIMError error) { // 查询添加申请列表失败,处理错误 });
Web/uni-app/小程序typescript
const applicationList = await nim.V2NIMFriendService.getAddApplicationList({ offset: 0, limit: 50 });
Harmonytypescript
const applicationList = await nim.friendService.getAddApplicationList({ offset: 0, limit: 50 })
查询未读的好友申请数量
调用 getAddApplicationUnreadCount
方法获取未读的好友申请(状态为未处理)数量。
-
参数说明:
Androidjava
void getAddApplicationUnreadCount(V2NIMSuccessCallback<Integer> success, V2NIMFailureCallback failure);
参数名称 类型 是否必填 默认值 描述 success
V2NIMSuccessCallback
是 - 查询成功回调,返回未读好友申请数量。 failure
V2NIMFailureCallback
是 - 查询失败回调,返回错误码。 iOSobjective-c
- (void)getAddApplicationUnreadCount:(nullable V2NIMGetApplicationUnreadCountSuccess)success failure:(nullable V2NIMFailureCallback)failure;
参数名称 类型 是否必填 默认值 描述 success
V2NIMGetApplicationUnreadCountSuccess
是 - 查询成功回调,可自定义设置。 failure
V2NIMFailureCallback
是 - 查询失败回调,返回错误码。 Windows/macOScpp
virtual void getAddApplicationUnreadCount(V2NIMSuccessCallback<uint32_t> success, V2NIMFailureCallback failure) = 0;
参数名称 类型 是否必填 默认值 描述 success
V2NIMSuccessCallback
是 - 查询成功回调,返回未读好友申请数量。 failure
V2NIMFailureCallback
是 - 查询失败回调,返回错误码。 Web/uni-app/小程序typescript
getAddApplicationUnreadCount(): Promise<number>
无参数
Harmonytypescript
getAddApplicationUnreadCount(): Promise<number>
无参数
-
示例代码:
Androidjava
NIMClient.getService(V2NIMFriendService.class).getAddApplicationUnreadCount( new V2NIMSuccessCallback<Integer>() { @Override public void onSuccess(Integer count) { // 查询结果为count } }, new V2NIMFailureCallback() { @Override public void onFailure(V2NIMError error) { // 查询失败 } });
iOSobjective-c
[[[NIMSDK sharedSDK] v2FriendService] getAddApplicationUnreadCount:^(NSInteger count) { // 获取未读数,成功回调 } failure:^(V2NIMError * _Nonnull error) { // 取未读数,失败回调 }];
Windows/macOScpp
friendService.getAddApplicationUnreadCount( [](uint32_t count) { // get add application unread count success, handle count }, [](V2NIMError error) { // get add application unread count failed, handle error });
Web/uni-app/小程序typescript
try { const count = await nim.V2NIMFriendService.getAddApplicationUnreadCount() } catch(err) { console.error('getAddApplicationUnreadCount Error:', err) }
Harmonytypescript
try { const count = await nim.friendService.getAddApplicationUnreadCount() } catch(err) { console.error('getAddApplicationUnreadCount Error:', err) }
设置好友申请已读
调用 setAddApplicationRead
方法将未读的好友申请设置为已读。
调用该方法,历史所有未读的好友申请数据将均标记为已读。
-
参数说明:
Androidjava
void setAddApplicationRead(V2NIMSuccessCallback<Void> success, V2NIMFailureCallback failure);
参数名称 类型 是否必填 默认值 描述 success
V2NIMSuccessCallback
是 - 设置成功回调。 failure
V2NIMFailureCallback
是 - 查询失败回调,返回错误码。 iOSobjective-c
- (void)setAddApplicationRead:(nullable V2NIMSetApplicationReadSuccess)success failure:(nullable V2NIMFailureCallback)failure;
参数名称 类型 是否必填 默认值 描述 success
V2NIMSetApplicationReadSuccess
是 - 设置成功回调,可自定义设置。 failure
V2NIMFailureCallback
是 - 查询失败回调,返回错误码。 Windows/macOScpp
virtual void setAddApplicationRead(V2NIMSuccessCallback<void> success, V2NIMFailureCallback failure) = 0;
参数名称 类型 是否必填 默认值 描述 success
V2NIMSuccessCallback
是 - 设置成功回调。 failure
V2NIMFailureCallback
是 - 查询失败回调,返回错误码。 Web/uni-app/小程序typescript
setAddApplicationRead(): Promise<void>
无参数
Harmonytypescript
setAddApplicationRead(): Promise<void>
无参数
-
示例代码:
Androidjava
NIMClient.getService(V2NIMFriendService.class).setAddApplicationRead( new V2NIMSuccessCallback<Void>() { @Override public void onSuccess(Void unused) { // 设置已读成功 } }, new V2NIMFailureCallback() { @Override public void onFailure(V2NIMError error) { // 设置已读失败 } });
iOSobjective-c
[[[NIMSDK sharedSDK] v2FriendService] setAddApplicationRead:^(BOOL success) { // 设置已读,成功回调 } failure:^(V2NIMError * _Nonnull error) { // 失败回调 }];
Windows/macOScpp
friendService.setAddApplicationRead( []() { // set add application read success }, [](V2NIMError error) { // set add application read failed, handle error });
Web/uni-app/小程序typescript
try { await nim.V2NIMFriendService.setAddApplicationRead() } catch(err) { console.error('setAddApplicationRead Error:', err) }
Harmonytypescript
try { await nim.friendService.setAddApplicationRead() } catch(err) { console.error('setAddApplicationRead Error:', err) }