用户关系托管
更新时间: 2024/03/14 18:45:30
云信目前提供好友关系、黑名单与静音(免打扰)三种内置用户关系。三种关系互相独立,互不影响。即任意两个用户之间可以同时存在这三种关系。
本文主要介绍黑名单和静音列表的相关功能。
初始化参数
- 这里的参数并不是所有的初始化参数, 请查阅初始化SDK, 以及其它章节的初始化参数
示例代码
javascriptvar nim = NIM.getInstance({
onblacklist: onBlacklist,
onsyncmarkinblacklist: onMarkInBlacklist,
onmutelist: onMutelist,
onsyncmarkinmutelist: onMarkInMutelist
});
function onBlacklist(blacklist) {
console.log('收到黑名单', blacklist);
data.blacklist = nim.mergeRelations(data.blacklist, blacklist);
data.blacklist = nim.cutRelations(data.blacklist, blacklist.invalid);
refreshBlacklistUI();
}
function onMarkInBlacklist(obj) {
console.log(obj);
console.log(obj.account + '被你' + (obj.isAdd ? '加入' : '移除') + '黑名单');
if (obj.isAdd) {
addToBlacklist(obj);
} else {
removeFromBlacklist(obj);
}
}
function addToBlacklist(obj) {
data.blacklist = nim.mergeRelations(data.blacklist, obj.record);
refreshBlacklistUI();
}
function removeFromBlacklist(obj) {
data.blacklist = nim.cutRelations(data.blacklist, obj.record);
refreshBlacklistUI();
}
function refreshBlacklistUI() {
// 刷新界面
}
function onMutelist(mutelist) {
console.log('收到静音列表', mutelist);
data.mutelist = nim.mergeRelations(data.mutelist, mutelist);
data.mutelist = nim.cutRelations(data.mutelist, mutelist.invalid);
refreshMutelistUI();
}
function onMarkInMutelist(obj) {
console.log(obj);
console.log(obj.account + '被你' + (obj.isAdd ? '加入' : '移除') + '静音列表');
if (obj.isAdd) {
addToMutelist(obj);
} else {
removeFromMutelist(obj);
}
}
function addToMutelist(obj) {
data.mutelist = nim.mergeRelations(data.mutelist, obj.record);
refreshMutelistUI();
}
function removeFromMutelist(obj) {
data.mutelist = nim.cutRelations(data.mutelist, obj.record);
refreshMutelistUI();
}
function refreshMutelistUI() {
// 刷新界面
}
参数解释
onblacklist
: 同步黑名单的回调, 会传入黑名单列表blacklist
blacklist
的属性invalid
包含被删除的黑名单列表- 此回调是增量回调, 可以调用nim.mergeRelations和nim.cutRelations来合并数据
onsyncmarkinblacklist
: 当前登录用户在其它端加入黑名单/从黑名单移除后的回调, 会传入一个参数, 包含两个字段account
: 要加入黑名单/从黑名单移除的账号isAdd
:true
表示加入黑名单,false
表示从黑名单移除record
, 该操作记录的详情
onmutelist
: 同步静音列表的回调, 会传入静音列表mutelist
mutelist
的属性invalid
包含被删除的静音列表- 此回调是增量回调, 可以调用nim.mergeRelations和nim.cutRelations来合并数据
onsyncmarkinmutelist
: 当前登录用户在其它端加入静音列表/从静音列表移除后的回调, 会传入一个参数, 包含两个字段account
: 要加入静音列表/从静音列表移除的账号isAdd
:true
表示加入静音列表,false
表示从静音列表移除record
, 该操作记录的详情
黑名单
- 如果一个用户被加入了黑名单,那么就不再会收到此用户发送的任何消息。
- 如果一个用户被从黑名单移除,那么会重新收到此用户发送的消息。
例如:A用户将B用户加入黑名单,B用户发送的消息,A用户将收不到。A用户发送的消息,B用户依然可以看到。
加入黑名单/从黑名单移除
- 此接口可以完成以下两个功能, 通过参数
isAdd
来决定实际的功能 - 每个功能SDK都提供了相应的独立接口
javascriptnim.markInBlacklist({
account: 'account',
// `true`表示加入黑名单, `false`表示从黑名单移除
isAdd: true,
done: markInBlacklistDone
});
function markInBlacklistDone(error, obj) {
console.log(error);
console.log(obj);
console.log('将' + obj.account + (isAdd ? '加入黑名单' : '从黑名单移除') + (!error?'成功':'失败'));
if (!error) {
onMarkInBlacklist(obj);
}
}
加入黑名单
- 如果一个用户被加入了黑名单, 那么就不再会收到此用户发送的消息
- SDK内部调用nim.markInBlacklist来完成实际工作
javascriptnim.addToBlacklist({
account: 'account',
done: addToBlacklistDone
});
function addToBlacklistDone(error, obj) {
console.log(error);
console.log(obj);
console.log('加入黑名单' + (!error?'成功':'失败'));
if (!error) {
addToBlacklist(obj);
}
}
从黑名单移除
- 如果一个用户被从黑名单移除, 那么会重新收到此用户发送的消息
- SDK内部调用nim.markInBlacklist来完成实际工作
javascriptnim.removeFromBlacklist({
account: 'account',
done: removeFromBlacklistDone
});
function removeFromBlacklistDone(error, obj) {
console.log(error);
console.log(obj);
console.log('从黑名单移除' + (!error?'成功':'失败'));
if (!error) {
removeFromBlacklist(obj);
}
}
获取黑名单
- 如果开发者在初始化SDK的时候设置了
syncRelations
为false
, 那么就收不到onblacklist
和onmutelist
回调, 可以调用此接口来获取黑名单和静音列表。
javascriptnim.getRelations({
done: getRelationsDone
});
function getRelationsDone(error, obj) {
console.log('获取黑名单和静音列表' + (!error?'成功':'失败'), error, obj);
if (!error) {
onBlacklist(obj.blacklist);
onMutelist(obj.mutelist);
}
}
静音列表
- 开发者可以根据用户是否在静音列表,来判断是否显示未读数等提示 UI。
- 静音列表中用户发送消息,不会触发推送服务。
加入静音列表/从静音列表移除
- 此接口可以完成以下两个功能, 通过参数
isAdd
来决定实际的功能 - 每个功能SDK都提供了相应的独立接口
javascriptnim.markInMutelist({
account: 'account',
// `true`表示加入静音列表, `false`表示从静音列表移除
isAdd: 'true',
done: markInMutelistDone
});
function markInMutelistDone(error, obj) {
console.log(error);
console.log(obj);
console.log('将' + obj.account + (isAdd ? '加入静音列表' : '从静音列表移除') + (!error?'成功':'失败'));
if (!error) {
onMarkInMutelist(obj);
}
}
加入静音列表
- SDK只负责维护静音列表, 具体要根据静音列表进行的操作由开发者决定
- SDK内部调用nim.markInMutelist来完成实际工作
javascriptnim.addToMutelist({
account: 'account',
done: addToMutelistDone
});
function addToMutelistDone(error, obj) {
console.log(error);
console.log(obj);
console.log('加入静音列表' + (!error?'成功':'失败'));
if (!error) {
addToMutelist(obj);
}
}
从静音列表移除
- SDK只负责维护静音列表, 具体要根据静音列表进行的操作由开发者决定
- SDK内部调用nim.markInMutelist来完成实际工作
javascriptnim.removeFromMutelist({
account: 'account',
done: removeFromMutelistDone
});
function removeFromMutelistDone(error, obj) {
console.log(error);
console.log(obj);
console.log('从静音列表移除' + (!error?'成功':'失败'));
if (!error) {
removeFromMutelist(obj);
}
}
获取静音列表
- 如果开发者在初始化SDK的时候设置了
syncRelations
为false
, 那么就收不到onblacklist
和onmutelist
回调, 可以调用此接口来获取黑名单和静音列表。
javascriptnim.getRelations({
done: getRelationsDone
});
function getRelationsDone(error, obj) {
console.log('获取黑名单和静音列表' + (!error?'成功':'失败'), error, obj);
if (!error) {
onBlacklist(obj.blacklist);
onMutelist(obj.mutelist);
}
}
此文档是否对你有帮助?