好友关系
更新时间: 2024/11/18 17:19:23
网易云信即时通讯 SDK(NetEase IM SDK,简称 NIM SDK)提供好友关系的管理和维护。
支持平台
本文内容适用的开发平台或框架如下表所示:
Android | iOS | macOS/Windows | Web/uni-app/小程序 | Node.js/Electron | HarmonyOS | Flutter |
---|---|---|---|---|---|---|
✔️️ | ✔️️ | ✔️️ | ✔️️ | ✔️️ | ✔️ | ✔️ |
技术原理
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{}};
C++V2NIMFriendListener 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];
C++V2NIMFriendListener listener;
// ...
friendService.addFriendListener(listener);
// ...
friendService.removeFriendListener(listener);
Web/uni-app/小程序/HarmonyOS/Node.js/Electron
调用 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) {})
TypeScriptv2.friendService.on("friendAdded", function (friend: V2NIMFriend) {})
v2.friendService.on("friendDeleted", function (accountId: string, deletionType: V2NIMFriendDeletionType) {})
v2.friendService.on("friendAddApplication", function (application: V2NIMFriendAddApplication) {})
v2.friendService.on("friendAddRejected", function (rejection: V2NIMFriendAddRejection) {})
v2.friendService.on("friendInfoChanged", function (friend: V2NIMFriend) {})
如需移除好友相关监听器,可调用 off("EventName")
方法。
TypeScriptv2.friendService.off("friendAdded", function (friend: V2NIMFriend) {})
v2.friendService.off("friendDeleted", function (accountId: string, deletionType: V2NIMFriendDeletionType) {})
v2.friendService.off("friendAddApplication", function (application: V2NIMFriendAddApplication) {})
v2.friendService.off("friendAddRejected", function (rejection: V2NIMFriendAddRejection) {})
v2.friendService.off("friendInfoChanged", 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) {})
Flutter
调用 add
方法注册好友相关监听器,监听添加好友、删除好友、好友信息更新、接受或拒绝好友申请等事件。
dartsubsriptions.add(NimCore.instance.friendService.onFriendAddApplication.listen((e){
//do something
}));
subsriptions.add(NimCore.instance.friendService.onFriendAdded.listen((e){
//do something
}));
subsriptions.add(NimCore.instance.friendService.onFriendAddRejected.listen((e){
//do something
}));
subsriptions.add(NimCore.instance.friendService.onFriendDeleted.listen((e){
//do something
}));
subsriptions.add(NimCore.instance.friendService.onFriendInfoChanged.listen((e){
//do something
}));
如需移除好友相关监听器,可调用 cancel
方法。
dartsubsriptions.forEach((subsription) {
subsription.cancel();
});
添加好友
调用 addFriend
方法添加好友。
NIM SDK 添加好友分为以下两种模式:
-
直接添加为好友
该模式下,调用接口成功后,本端和对端(被添加的好友)都会收到
onFriendAdded
回调。 -
请求添加对方为好友,需要对方验证通过才能添加
该模式下,调用接口成功后,即向对方发送添加好友的申请,对端(被添加的好友)会收到
onFriendAddApplication
回调。对端可以选择接受或拒绝好友申请。
示例代码:
JavaV2NIMFriendAddParams 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) {
}
});
Objective-CV2NIMFriendAddParams *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) {
}];
C++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
}
);
TypeScriptnim.V2NIMFriendService.addFriend('accid', {
addMode: 2,
postscript: '您好,我是 xxx'
});
TypeScriptawait v2.friendService.addFriend('accountId', {
addMode: 1
})
TypeScriptnim.friendService.addFriend('accid', {
addMode: 2,
postscript: '您好,我是 xxx'
})
dartawait NimCore.instance.friendService.addFriend(accountId, params);
接受好友申请
如果添加好友时,选择了 需要对方(被添加的好友)验证通过才能成功添加为好友 的方式。
收到添加好友申请的用户可以调用 acceptAddApplication
方法接受好友申请。调用接口成功后,本端和对端(发起好友申请的用户)都会收到 onFriendAdded
回调。
操作完成后,SDK 内部会更新申请添加好友信息(applicationInfo
)相关操作的状态并处理相关错误码。
示例代码:
Java// 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) {
}
});
Objective-C[[[NIMSDK sharedSDK] v2FriendService] acceptAddApplication:application success:^{
} failure:^(V2NIMError * _Nonnull error) {
}];
C++V2NIMFriendAddApplication application;
// get application from listener or query
// ...
friendService.acceptAddApplication(
application,
[]() {
// accept friend request success
},
[](V2NIMError error) {
// accept friend request failed, handle error
}
);
TypeScriptnim.V2NIMFriendService.acceptAddApplication(application);
TypeScriptawait v2.friendService.acceptAddApplication(application)
TypeScriptnim.friendService.acceptAddApplication(application)
dartawait NimCore.instance.friendService.acceptAddApplication(application);
拒绝好友申请
如果添加好友时,选择了 需要对方(被添加的好友)验证通过才能成功添加为好友 的方式。
收到添加好友申请的用户可以调用 rejectAddApplication
方法拒绝好友申请。调用接口成功后,对端(发起好友申请的用户)会收到 onFriendAddRejected
回调。
操作完成后,SDK 内部会更新申请添加好友信息(applicationInfo
)相关操作的状态并处理相关错误码。
示例代码:
Java// 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) {
}
});
Objective-C[[[NIMSDK sharedSDK] v2FriendService] rejectAddApplication:application postscript:@"XXX" success:^{
} failure:^(V2NIMError * _Nonnull error) {
}];
C++V2NIMFriendAddApplication application;
// get application from listener or query
// ...
friendService.rejectAddApplication(
application,
"postscript",
[]() {
// reject friend request success
},
[](V2NIMError error) {
// reject friend request failed, handle error
}
);
TypeScriptnim.V2FriendService.rejectAddApplication(application, 'ps');
TypeScriptawait v2.friendService.rejectAddApplication(application, 'reason')
TypeScriptnim.friendService.rejectAddApplication(application, 'ps')
dartawait NimCore.instance.friendService.rejectAddApplication(application, postscript);
删除好友
调用 deleteFriend
方法删除好友。调用接口成功后,本端和对端(被删除的好友)都会收到 onFriendDeleted
回调。
NIM SDK 当前的删除是指双向删除,即当一个用户将另一个用户从好友列表中删除时,双方的好友关系都会被解除。
示例代码:
JavaV2NIMFriendDeleteParams 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) {
}
});
Objective-CV2NIMFriendDeleteParams *deleteParams = [V2NIMFriendDeleteParams new];
deleteParams.deleteAlias = YES;
[[[NIMSDK sharedSDK] v2FriendService] deleteFriend:@"accountId" params:deleteParams success:^{
} failure:^(V2NIMError * _Nonnull error) {
}];
C++V2NIMFriendDeleteParams params;
params.deleteAlias = true;
friendService.deleteFriend(
"account",
params,
[]() {
// delete friend success
},
[](V2NIMError error) {
// delete friend failed, handle error
}
);
TypeScriptnim.V2NIMFriendService.deleteFriend('accid', {
deleteAlias: true
});
TypeScriptawait v2.friendService.deleteFriend('accountId', {
deleteAlias: true
})
TypeScriptnim.friendService.deleteFriend('accid', {
deleteAlias: true
})
dartawait NimCore.instance.friendService.deleteFriend(accountId, params);
设置好友信息
调用 setFriendInfo
方法设置好友的信息,包括好友备注和好友扩展信息。
调用该接口成功后,本端会收到 onFriendsInfoChanged
回调。
示例代码:
JavaV2NIMFriendSetParams 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) {
}
});
Objective-CV2NIMFriendSetParams *setParams = [V2NIMFriendSetParams new];
setParams.alias = @"XXX";
setParams.serverExtension = @"XXX";
[[[NIMSDK sharedSDK] v2FriendService] setFriendInfo:@"accountId" params:setParams success:^{
} failure:^(V2NIMError * _Nonnull error) {
}];
C++V2NIMFriendSetParams params;
params.alias = "alias";
friendService.setFriendInfo(
"account",
params,
[]() {
// set friend info success
},
[](V2NIMError error) {
// set friend info failed, handle error
});
TypeScriptnim.V2NIMFriendService.setFriendInfo('accid', {
alias: 'alias',
serverExtension: 'serverExtension'
});
TypeScriptawait v2.friendService.setFriendInfo('accountId', {
alias: 'alias'
})
TypeScriptnim.friendService.setFriendInfo('accid', {
alias: 'alias',
serverExtension: 'serverExtension'
})
dartawait NimCore.instance.friendService.setFriendInfo(accountId, params);
查询好友列表
调用 getFriendList
方法本地查询好友列表。
用户登录后,SDK 开始同步好友信息,建议同步完成后,调用该接口拉取完整的好友信息列表。
示例代码:
JavaNIMClient.getService(V2NIMFriendService.class).getFriendList(
new V2NIMSuccessCallback<List<V2NIMFriend>>() {
@Override
public void onSuccess(List<V2NIMFriend> v2NIMFriends) {
}
},
new V2NIMFailureCallback() {
@Override
public void onFailure(V2NIMError error) {
}
});
Objective-C[[[NIMSDK sharedSDK] v2FriendService] getFriendList:^(NSArray<V2NIMFriend *> * _Nonnull result) {
} failure:^(V2NIMError * _Nonnull error) {
}];
C++friendService.getFriendList(
[](std::vector<V2NIMFriend> friends) {
// get friend list success, handle friends
},
[](V2NIMError error) {
// get friend list failed, handle error
}
);
TypeScriptconst friends = nim.V2NIMFriendService.getFriendList();
TypeScriptconst friends = await v2.friendService.getFriendList()
TypeScriptconst friends = nim.friendService.getFriendList()
dartawait NimCore.instance.friendService.getFriendList();
查询指定好友信息
调用 getFriendByIds
方法根据账号 ID 查询指定好友的信息列表,只返回账号 ID 存在的好友信息。
示例代码:
JavaNIMClient.getService(V2NIMFriendService.class).getFriendByIds(accountIds,
new V2NIMSuccessCallback<List<V2NIMFriend>>() {
@Override
public void onSuccess(List<V2NIMFriend> v2NIMFriends) {
}
},
new V2NIMFailureCallback() {
@Override
public void onFailure(V2NIMError error) {
}
});
Objective-C[[[NIMSDK sharedSDK] v2FriendService] getFriendByIds:@[@"accountId1",@"accountId2"] success:^(NSArray<V2NIMFriend *> * _Nonnull result) {
} failure:^(V2NIMError * _Nonnull error) {
}];
C++friendService.getFriendByIds(
{"account1", "account2"},
[](std::vector<V2NIMFriend> friends) {
// get friend list success, handle friends
},
[](V2NIMError error) {
// get friend list failed, handle error
});
TypeScriptconst friends = await nim.V2NIMFriendService.getFriendByIds(['accid1', 'accid2']);
TypeScriptconst friends = await v2.friendService.getFriendByIds(['accountId1', 'accountId2'])
TypeScriptconst friends = await nim.friendService.getFriendByIds(['accid1', 'accid2'])
dartawait NimCore.instance.friendService.getFriendByIds(accountIds);
根据关键字搜索好友信息
调用 searchFriendByOption
方法根据关键字信息搜索好友的信息。
该方法默认搜索好友的备注,若有需要,也可以指定同时搜索用户账号。
示例代码:
Java// 按需配置
// .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) {
}
});
Objective-C// 按需配置
option.searchAlias = YES;
option.searchAccountId = YES;
[NIMSDK.sharedSDK.v2FriendService searchFriendByOption:option
success:^(NSArray <V2NIMFriend *> *result)
{
}
failure:^(V2NIMError *error)
{
}];
C++V2NIMFriendSearchOption option;
option.keyword = "keyword";
friendService.searchFriendByOption(
option,
[](nstd::vector<V2NIMFriend> friends) {
// search friend success, handle friends
},
[](V2NIMError error) {
// search friend failed, handle error
});
TypeScripttry {
const friends = await nim.V2NIMFriendService.searchFriendByOption({
keyword: 'nick',
searchAlias: true,
searchAccountId: false
});
} catch(err) {
console.error('searchFriendByOption Error:', err);
}
TypeScripttry {
const friends = await v2.friendService.searchFriendByOption({
keyword: 'nick',
searchAlias: true,
searchAccountId: false
});
} catch(err) {
console.error('searchFriendByOption Error:', err);
}
TypeScripttry {
const friends = await nim.friendService.searchFriendByOption({
keyword: 'nick',
searchAlias: true,
searchAccountId: false
})
} catch(err) {
console.error('searchFriendByOption Error:', err)
}
dartawait NimCore.instance.friendService.searchFriendByOption(friendSearchOption);
查询好友状态
调用 checkFriend
方法根据账号 ID 查询好友的状态。
调用接口成功后,会返回一个 key 为 accountId,value 为好友状态的 Map。
示例代码:
JavaNIMClient.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) {
}
});
Objective-C[[[NIMSDK sharedSDK] v2FriendService] checkFriend:@[@"accountId1",@"accountId2"] success:^(NSDictionary<NSString *,NSNumber *> * _Nonnull result) {
} failure:^(V2NIMError * _Nonnull error) {
}];
C++friendService.checkFriend(
{"account1", "account2"},
[](nstd::map<nstd::string, bool> checkList) {
// check friend success, handle checkList
},
[](V2NIMError error) {
// check friend failed, handle error
});
TypeScriptconst res = await nim.V2NIMFriendService.checkFriend(['accid1', 'accid2']);
TypeScriptconst res = await v2.friendService.checkFriend(['accountId1', 'accountId2'])
TypeScriptconst res = await nim.friendService.checkFriend(['accid1', 'accid2'])
dartawait NimCore.instance.friendService.checkFriend(accountIds);
查询好友申请信息
调用 getAddApplicationList
方法查询好友申请信息列表。
NIM SDK 将按照从新到旧的顺序进行查询。
示例代码:
JavaV2NIMFriendAddApplicationQueryOption 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) {
}
}
);
Objective-CV2NIMFriendAddApplicationQueryOption *queryOption = [V2NIMFriendAddApplicationQueryOption new];
queryOption.offset = 0;
queryOption.limit = 50;
[[[NIMSDK sharedSDK] v2FriendService] getAddApplicationList:queryOption success:^(V2NIMFriendAddApplicationResult * _Nonnull result) {
} failure:^(V2NIMError * _Nonnull error) {
}];
C++V2NIMFriendAddApplicationQueryOption option;
option.offset = 0;
option.limit = 10;
friendService.getAddApplicationList(
option,
[](V2NIMFriendAddApplicationResult result) {
// 查询添加申请列表成功,处理结果
},
[](V2NIMError error) {
// 查询添加申请列表失败,处理错误
});
TypeScriptconst applicationList = await nim.V2NIMFriendService.getAddApplicationList({
offset: 0,
limit: 50
});
TypeScriptconst applicationList = await v2.friendService.getAddApplicationList({
offset: 0,
limit: 50
});
TypeScriptconst applicationList = await nim.friendService.getAddApplicationList({
offset: 0,
limit: 50
})
dartawait NimCore.instance.friendService.getAddApplicationList(option);
查询未读的好友申请数量
调用 getAddApplicationUnreadCount
方法获取未读的好友申请(状态为未处理)数量。
示例代码:
JavaNIMClient.getService(V2NIMFriendService.class).getAddApplicationUnreadCount(
new V2NIMSuccessCallback<Integer>() {
@Override
public void onSuccess(Integer count) {
// 查询结果为 count
}
}, new V2NIMFailureCallback() {
@Override
public void onFailure(V2NIMError error) {
// 查询失败
}
});
Objective-C[[[NIMSDK sharedSDK] v2FriendService] getAddApplicationUnreadCount:^(NSInteger count) {
// 获取未读数,成功回调
} failure:^(V2NIMError * _Nonnull error) {
// 取未读数,失败回调
}];
C++friendService.getAddApplicationUnreadCount(
[](uint32_t count) {
// get add application unread count success, handle count
},
[](V2NIMError error) {
// get add application unread count failed, handle error
});
TypeScripttry {
const count = await nim.V2NIMFriendService.getAddApplicationUnreadCount()
} catch(err) {
console.error('getAddApplicationUnreadCount Error:', err)
}
TypeScripttry {
const count = await nim.V2NIMFriendService.getAddApplicationUnreadCount()
} catch(err) {
console.error('getAddApplicationUnreadCount Error:', err)
}
TypeScripttry {
const count = await nim.friendService.getAddApplicationUnreadCount()
} catch(err) {
console.error('getAddApplicationUnreadCount Error:', err)
}
dartawait NimCore.instance.friendService.getAddApplicationUnreadCount();
设置好友申请已读
调用 setAddApplicationRead
方法将未读的好友申请设置为已读。
调用该方法,历史所有未读的好友申请数据将均标记为已读。
示例代码:
JavaNIMClient.getService(V2NIMFriendService.class).setAddApplicationRead(
new V2NIMSuccessCallback<Void>() {
@Override
public void onSuccess(Void unused) {
// 设置已读成功
}
}, new V2NIMFailureCallback() {
@Override
public void onFailure(V2NIMError error) {
// 设置已读失败
}
});
Objective-C[[[NIMSDK sharedSDK] v2FriendService] setAddApplicationRead:^(BOOL success) {
// 设置已读,成功回调
} failure:^(V2NIMError * _Nonnull error) {
// 失败回调
}];
C++friendService.setAddApplicationRead(
[]() {
// set add application read success
},
[](V2NIMError error) {
// set add application read failed, handle error
});
TypeScripttry {
await nim.V2NIMFriendService.setAddApplicationRead()
} catch(err) {
console.error('setAddApplicationRead Error:', err)
}
TypeScripttry {
await v2.friendService.setAddApplicationRead()
} catch(err) {
console.error('setAddApplicationRead Error:', err)
}
TypeScripttry {
await nim.friendService.setAddApplicationRead()
} catch(err) {
console.error('setAddApplicationRead Error:', err)
}
dartawait NimCore.instance.friendService.setAddApplicationRead();
涉及接口
API | 说明 |
---|---|
addFriendListener |
注册好友关系相关监听器 |
removeFriendListener |
取消注册好友关系相关监听器 |
addFriend |
添加好友 |
acceptAddApplication |
接受好友申请 |
rejectAddApplication |
拒绝好友申请 |
deleteFriend |
删除好友 |
setFriendInfo |
设置好友信息 |
getFriendList |
获取好友列表 |
getFriendByIds |
根据账号 ID 获取好友列表 |
searchFriendByOption |
根据条件搜索好友 |
checkFriend |
根据账号 ID 查询好友关系 |
getAddApplicationList |
获取申请添加好友信息列表 |
getAddApplicationUnreadCount |
获取未读的好友申请(状态为未处理)数量 |
setAddApplicationRead |
设置好友申请已读 |
API | 说明 |
---|---|
on("EventName") |
注册好友关系相关监听器 |
off("EventName") |
取消注册好友关系相关监听器 |
addFriend |
添加好友 |
acceptAddApplication |
接受好友申请 |
rejectAddApplication |
拒绝好友申请 |
deleteFriend |
删除好友 |
setFriendInfo |
设置好友信息 |
getFriendList |
获取好友列表 |
getFriendByIds |
根据账号 ID 获取好友列表 |
searchFriendByOption |
根据条件搜索好友 |
checkFriend |
根据账号 ID 查询好友关系 |
getAddApplicationList |
获取申请添加好友信息列表 |
getAddApplicationUnreadCount |
获取未读的好友申请(状态为未处理)数量 |
setAddApplicationRead |
设置好友申请已读 |
API | 说明 |
---|---|
add |
注册好友关系相关监听器 |
cancel |
取消注册好友关系相关监听器 |
addFriend |
添加好友 |
acceptAddApplication |
接受好友申请 |
rejectAddApplication |
拒绝好友申请 |
deleteFriend |
删除好友 |
setFriendInfo |
设置好友信息 |
getFriendList |
获取好友列表 |
getFriendByIds |
根据账号 ID 获取好友列表 |
searchFriendByOption |
根据条件搜索好友 |
checkFriend |
根据账号 ID 查询好友关系 |
getAddApplicationList |
获取申请添加好友信息列表 |
getAddApplicationUnreadCount |
获取未读的好友申请(状态为未处理)数量 |
setAddApplicationRead |
设置好友申请已读 |