定制通知栏显示信息
更新时间: 2024/08/05 15:04:43
云信 NIM SDK 提供用户资料托管,包含用户的昵称,头像,生日,Email,性别,手机号码,签名等信息。具体请参考 用户资料管理。
NIM SDK 的 UserInfoProvider
接口可以提取用户资料信息(UserInfo
),以此来定制通知栏显示的头像、发送者名称、以及消息 Title。
前提条件
NIM SDK 中已同步应用的用户信息。
实现方法
初始化 NIM SDK 时, 在 SDKOptions
中配置 UserInfoProvider
实例。示例代码如下:
public class NimUserInfoProvider implements UserInfoProvider {
@Override
public UserInfo getUserInfo(String account) {
}
@Override
public Bitmap getAvatarForMessageNotifier(SessionTypeEnum sessionType, String sessionId) {
}
@Override
public String getDisplayNameForMessageNotifier(String account, String sessionId,
SessionTypeEnum sessionType) {
}
@Override
public String getDisplayTitleForMessageNotifier(IMMessage message) {
}
}
options.userInfoProvider = new NimUserInfoProvider();
传入用户信息后,SDK 内部会获取用户(群组)头像、用户(群组)名称等信息作为通知栏的显示信息。内部获取逻辑如下:
-
通过调用
getDisplayNameForMessageNotifier
方法获取消息发送者显示名称。例如:如果是群聊天,可以设置自定义群名称等;如果圈组,可以显示圈组频道名称等。如果返回 null,SDK 群和超大群会显示群名称,其他类型将会使用当前 app 名称展示。
-
通过调用
getAvatarForMessageNotifier
方法获取用户头像或群头像。一般从本地图片缓存中获取,若未下载或本地不存在,则返回默认本地头像(可以返回默认头像资源 ID 对应的 Bitmap)。请尽量从内存缓存中取头像,如果读取本地头像可能导致 UI 进程阻塞,从而导致通知栏提醒延时弹出。
-
通过调用
getDisplayTitleForMessageNotifier
获取消息的 Title。为通知栏提供消息 title 显示名称(例如:如果是群聊天,可以设置自定义群名称等;如果圈组,可以显示圈组频道名称等)如果返回 null,SDK 群和超大群会显示群名称,其他类型将会使用当前app名称展示,不可以做耗时操作。
如果用户已经 设置消息提醒文案,则通知栏会直接显示设置的文案,若用户没有设置消息提醒文案,则通知栏会按照上文的逻辑显示信息。