Flutter

实现九宫格群头像

更新时间: 2024/03/07 13:30:13

群组头像支持展示九宫格头像。九宫格头像是通过群成员的头像合成的,如果九宫格合成失败或群组中只有一个成员,则会展示默认的群组头像(icon)。

若您需要是实现九宫格群头像,需要在服务端和客户端进行处理。

服务端

  1. 在服务端接入 IM 的抄送功能,并监听高级群中涉及群成员变更的相关事件。这里以创建高级群的抄送为例,更多高级群相关抄送给示例请参考高级群相关示例

    创建高级群的抄送示例:

    {
        "fromNick":"yx-tom-123test",
        "msgType":"NOTIFICATION",
        "msgidServer":"15759307314718****",
        "fromAccount":"yx",
        "fromClientType":"AOS",
        "tMembers":"[yx]",
        "eventType":"1",
        "convType":"TEAM",
        "msgidClient":"5740dc99-a45d-46ac-****-0757111d1020",
        "resendFlag":"0",
        "msgTimestamp":"1656572965158",
        "to":"2348319786",
        "attach":"{\"data\":{\"uinfos\":[{\"11\":\"84851\",\"1\":\"yx1\",\"12\":\"1431056915229\",\"2\":\"11011\",\"13\":\"1641801035679\",\"3\":\"yx1\",\"4\":\"https://nim.nosdn.127.net/xxx\",\"5\":\"签名-xw\",\"6\":\"0\",\"7\":\"e@3721.net\",\"8\":\"1984-4-7\",\"10\":\"ext\"}],\"tinfo\":{\"11\":\"1656572965051\",\"22\":\"1\",\"12\":\"1656572965051\",\"23\":\"1\",\"24\":\"1\",\"14\":\"yx-15:09:24.942\",\"16\":\"0\",\"17\":\"0\",\"1\":\"2348319786\",\"2\":\"11011\",\"3\":\"yx-2022-06-30\",\"4\":\"1\",\"5\":\"yx\",\"6\":\"3000\",\"8\":\"1\",\"9\":\"5\",\"20\":\"http://b12026.nos.netease.com/xxx\",\"10\":\"1656572965051\",\"21\":\"1\"},\"ids\":[\"yx1\",\"wmtest200\",\"wmtest201\",\"wmtest202\"]},\"id\":0}"
    }
    

    attach 中的字段释义请参考相关字段释义

  2. 根据您自身的业务逻辑,在创建高级群高级群接受邀请入群高级群踢人出群高级群申请加入成功(无需加群验证)允许加群申请退出高级群群成员发生变化的事件中按需生成群头像。

  3. 调用修改群组信息接口更新群组头像。

    请求示例:

    curl -X POST -H "AppKey: go9dnk***03mgq3" -H "Nonce: 4tgggerg**23t23t" -H "CurTime: 1443592222" -H "CheckSum: 9e9db3b6c9a***16fcc55583f86" -H "Content-Type: application/x-www-form-urlencoded" -d 'tid=xx&icon=xx&owner=xx' 'https://api.netease.im/nimserver/team/update.action'
    

客户端

客户端只需注册监听群组信息变更的事件(onTeamListUpdate)即可。

示例代码:

NimCore.instance.teamService.onTeamListUpdate.listen((event) {
//更新对应的群头像信息
});

由于获取群组信息需要跨进程异步调用,您最好能在第三方 APP 中做好群组信息缓存,查询群组信息时都从本地缓存中访问。在群组信息有变化时,SDK 会告诉注册的观察者,此时,第三方 APP 可更新缓存,并刷新界面。

此文档是否对你有帮助?
有帮助
去反馈
  • 服务端
  • 客户端