用户属性

更新时间:2021-12-31

新版文档见:用户属性

用户属性指的是用户的信息,包括:昵称、头像、年龄、手机号等。 用户属性为可选服务,如果不希望敏感信息存储在环信服务器,用户可以自行维护。

使用用户属性功能可以获得以下能力:

  • 标准的用户属性的读写能力,包括:昵称、头像url、邮箱、电话、性别、签名、生日;
  • 自定义用户属性的读写能力,提供自定义扩展,可以通过JSON字符串添加多个属性。

SDK提供了用户属性信息托管服务,可供用户保存头像、昵称等常用字段以及一个扩展字段。

环信可以管理的用户属性信息如下:

  • nickname - 昵称
  • avatarurl - 头像url
  • mail - 邮箱
  • phone - 电话
  • gender - 性别
  • sign - 签名
  • birth - 生日
  • ext - 扩展

每个用户只有权限设置自己的用户属性。 设置用户属性时,可以设置用户的所有属性,也可以只设置用户的某一项属性

  • 设置多个用户属性
let options = {
    nickname: '昵称',
    avatarurl: 'http://avatarurl',
    mail: '123@qq.com',
    phone: '16888888888',
    gender: 'female',
    birth: '2000-01-01',
    sign: 'a sign',
    ext: JSON.stringify({
          nationality: 'China',
          merit: 'Hello,世界!'
        })
}
WebIM.conn.updateOwnUserInfo(options).then((res) => {
    console.log(res)
})
  • 设置单个用户属性
WebIM.conn.updateOwnUserInfo('nickname', '昵称').then((res) => {
    console.log(res)
})

获取用户属性时,可以获取用户的所有属性,也可以获取用户的指定属性,如只获取昵称、头像等

PS:单次数组请求length不要超过100!

  • 获取用户所有属性

获取用户所有属性的接口如下:

/**
 * @param {String|Array} users - 用户id
 */
let users = 'user1' || ['user1', 'user2']
WebIM.conn.fetchUserInfoById(users).then((res) => {
    console.log(res)
})
  • 获取用户单个属性

获取用户单个属性的接口如下:

/**
 * @param {String|Array} users - 用户id
 * @param {String|Array} properties - 查询属性
 */
WebIM.conn.fetchUserInfoById('userId', 'nickname').then((res) => {
    console.log(res)
})

// 同时查询多个用户属性
WebIM.conn.fetchUserInfoById(['user1', 'user2'], ['nickname', 'avatarurl']).then((res) => {
    console.log(res)
})

环信用户属性托管服务不负责管理用户头像文件,只存储头像文件的远程 URL 地址,用户需要使用阿里云、腾讯云等第三方文件托管服务存储头像文件。当用户设置头像时,需要先将头像文件上传到第三方文件托管服务器,然后将上传后得到的 URL 地址传入用户属性的头像 URL 字段,设置用户属性。显示头像时,先从 SDK 获取用户属性,得到头像 URL 字段,然后在 UI 层显示远程头像图片

SDK 中没有名片类型的消息,Demo中名片消息的收发使用已有的自定义消息类型,通过指定自定义消息的event为“userCard”,并在ext中添加展示名片所需要的环信id、昵称和头像,来展示用户名片。