用户关系托管

更新时间: 2024/11/25 10:06:55

云信目前提供好友关系、黑名单与静音(免打扰)三种内置用户关系。三种关系互相独立,互不影响。即任意两个用户之间可以同时存在这三种关系。

本文主要介绍黑名单和静音列表的相关功能。

初始化参数

示例代码

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
  • onsyncmarkinblacklist: 当前登录用户在其它端加入黑名单/从黑名单移除后的回调, 会传入一个参数, 包含两个字段
    • account: 要加入黑名单/从黑名单移除的账号
    • isAdd: true表示加入黑名单, false表示从黑名单移除
    • record, 该操作记录的详情
  • onmutelist: 同步静音列表的回调, 会传入静音列表mutelist
  • onsyncmarkinmutelist: 当前登录用户在其它端加入静音列表/从静音列表移除后的回调, 会传入一个参数, 包含两个字段
    • account: 要加入静音列表/从静音列表移除的账号
    • isAdd: true表示加入静音列表, false表示从静音列表移除
    • record, 该操作记录的详情

黑名单

  • 如果一个用户被加入了黑名单,那么就不再会收到此用户发送的任何消息。
  • 如果一个用户被从黑名单移除,那么会重新收到此用户发送的消息。

例如:A用户将B用户加入黑名单,B用户发送的消息,A用户将收不到。A用户发送的消息,B用户依然可以看到。

加入黑名单/从黑名单移除

  • 此接口可以完成以下两个功能, 通过参数isAdd来决定实际的功能
    • isAddtrue时, 会将account加入黑名单
      • 如果一个用户被加入了黑名单, 那么就不再会收到此用户发送的消息
    • isAddfalse时, 会将account从黑名单移除
      • 如果一个用户被从黑名单移除, 那么会重新收到此用户发送的消息
  • 每个功能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的时候设置了syncRelationsfalse, 那么就收不到onblacklistonmutelist回调, 可以调用此接口来获取黑名单和静音列表。
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的时候设置了syncRelationsfalse, 那么就收不到onblacklistonmutelist回调, 可以调用此接口来获取黑名单和静音列表。
javascriptnim.getRelations({
    done: getRelationsDone
});
function getRelationsDone(error, obj) {
    console.log('获取黑名单和静音列表' + (!error?'成功':'失败'), error, obj);
    if (!error) {
        onBlacklist(obj.blacklist);
        onMutelist(obj.mutelist);
    }
}
此文档是否对你有帮助?
有帮助
去反馈
  • 初始化参数
  • 黑名单
  • 加入黑名单/从黑名单移除
  • 加入黑名单
  • 从黑名单移除
  • 获取黑名单
  • 静音列表
  • 加入静音列表/从静音列表移除
  • 加入静音列表
  • 从静音列表移除
  • 获取静音列表