IM 即时通讯
Android
开发指南

配置消息提醒功能

更新时间: 2023/03/20 15:29:42

NIM SDK 支持通过配置消息提醒的属性来设置消息提醒的多样化功能。

SDK 通过调用 updateStatusBarNotificationConfig 方法更新通知栏消息提醒的配置项,包括提醒时是否需要亮灯,是否需要振动等。 具体的配置项请参考消息提醒配置项参考说明

设置消息提醒时不响铃

通过配置StatusBarNotificationConfig.ring 参数来设置消息提醒时不响铃。

StatusBarNotificationConfig config = UserPreferences.getStatusConfig();
config.ring = false;
NIMClient.updateStatusBarNotificationConfig(config);

设置消息提醒通知栏跳转

通过配置 StatusBarNotificationConfig.notificationEntrance 参数来设置通知栏提醒的响应 Intent 的 Activity。

示例代码如下:

statusBarNotificationConfig.notificationEntrance = YourActivity.class;

对于即时通讯 Demo 来说,存在以下逻辑:

  • NimApplication.java中调用NIMClient.init(..., ..., NimSDKOptionConfig.getSDKOptions(this))
  • NimSDKOptionConfig.javagetSDKOptions(Context context)中调用initStatusBarNotificationConfig(options)
  • initStatusBarNotificationConfig(SDKOptions options)中配置StatusBarNotificationConfig config = loadStatusBarNotificationConfig()
  • loadStatusBarNotificationConfig()中配置config.notificationEntrance = WelcomeActivity.class
  • WelcomeActivity.javaonIntent中判断if (intent.hasExtra(NimIntent.EXTRA_NOTIFY_CONTENT))调用parseNotifyIntent(intent),具体代码请参考Demo。

关于EXTRA_NOTIFY_CONTENT的含义请参考EXTRA_NOTIFY_CONTENT

点击在线通知的通知栏传递的 extra 类型

点击在线通知的通知栏,会返回消息的详细信息,以便于后续进行页面跳转等操作。

通过配置StatusBarNotificationConfig.notificationExtraType来选择返回消息的类型,该参数的类型请参考NotificationExtraTypeEnum

NotificationExtraTypeEnum 枚举值 Extra 的 key Extra 的 value
MESSAGE NimIntent#EXTRA_NOTIFY_CONTENT 返回消息提列表,ArrayList<IMMessage> 格式
JSON_ARR_STR NimIntent#EXTRA_NOTIFY_SESSION_CONTENT 返回 String 格式的 JSONArray,每个元素包含消息的uuidsessionIdsessionTypetime

示例代码如下:

statusBarNotificationConfig.notificationExtraType = NotificationExtraTypeEnum.MESSAGE;

设置消息提醒免打扰时段

云信 NIM SDK 支持全局的消息提醒免打扰。

当用户不需要在接收消息提醒,或者只需要接收某段时间的消息提醒时,用户可以通过以下两种方式实现。

  • 调用 toggleNotification 方法关闭消息提醒功能,关闭后,将不再接收消息提醒。

    NIMClient.toggleNotification(false);
    
  • 在开启消息提醒功能的情况下通过配置 StatusBarNotificationConfig 的以下参数来设置消息提醒的免打扰时段。

    说明
    参数类型
    downTimeToggleBoolean消息提醒免打扰设置开关,默认为关闭(false)
    downTimeBeginString消息提醒免打扰的开始时间,只有 `downTimeToggle` 为 true 时才有效,格式为北京时间的 24 小时计数 HH:mm
    downTimeEndString消息提醒免打扰的结束时间,只有 `downTimeToggle` 为 true 时才有效,格式为北京时间的 24 小时计数 HH:mm
    downTimeEnableNotificationBoolean消息提醒免打扰期间,是否显示通知,默认为显示(true)
    • 如果结束时间小于开始时间,那么免打扰时间为开始时间-24:00-结束时间。
    • 若将 downTimeEnableNotification 设置为 false,即表示在消息提醒免打扰期间,不显示通知。

    示例代码如下:

    config.downTimeToggle = true;
    config.downTimeBegin = startTime;
    config.downTimeEnd = endTime;
    config.downTimeEnableNotification = enableNotification;
    NIMClient.updateStatusBarNotificationConfig(config);
    

消息提醒配置项参考说明

StatusBarNotificationConfig 参数 说明
notificationSmallIconId 通知栏提醒的小图标的资源ID。如果不提供,使用 app 的 icon
ring 是否需要响铃提醒,默认为 true
notificationSound 响铃提醒的声音资源,如果不提供,使用系统默认提示音
vibrate 是否需要振动提醒,默认为 true
ledARGB 呼吸灯的颜色
建议尽量使用绿色、蓝色、红色等基本颜色,避免使用混合色
ledOnMs 呼吸灯亮时的持续时间(毫秒)
ledOffMs 呼吸灯熄灭时的持续时间(毫秒)
hideContent 不显示消息详情开关,同时也不再显示消息发送者昵称。默认为 false
downTimeToggle 免打扰设置开关,默认为关闭
downTimeBegin 免打扰的开始时间,格式为 HH:mm (24小时制)。
downTimeEnd 免打扰的结束时间,格式为 HH:mm(24小时制)
如果结束时间小于开始时间,免打扰时间为开始时间-24:00-结束时间
notificationEntrance 通知栏提醒的响应 intent 的 activity 类型,通过配置该参数实现消息提醒通知栏的跳转
若为 null,将使用包的 launcher 的入口 intent 的 activity
titleOnlyShowAppName 通知栏提醒的标题是否只显示应用名,默认 false
  • 若为 flase,当一个会话发来消息时,显示会话名;当多个会话发来时,显示应用名
  • 若为 true,那么无论一个还是多个会话发来消息,标题均显示应用名
应用名称请在 AndroidManifest 的 application 节点下设置 android:label
notificationColor 消息通知栏颜色,将应用到 NotificationCompat.Builder 的 setColor 方法对 Android 5.0 以上的机型会影响到 smallIcon
downTimeEnableNotification 免打扰期间,是否显示通知,默认为显示
notificationFoldStyle 消息通知栏的折叠类型:
  • 折叠所有通知栏消息为一条通知:NotificationFoldStyle.ALL
  • 不折叠通知栏消息:NotificationFoldStyle.EXPAND
  • 将同一个会话下的消息折叠为一条通知,不同会话之间不折叠:NotificationFoldStyle.CONTACT
notificationExtraType 点击在线通知的通知栏传递的 extra 类型
  • 返回ArrayList<IMMessage>格式: NotificationExtraTypeEnum.MESSAGE,key 为NimIntent#EXTRA_NOTIFY_CONTENT
  • 返回String格式的JSONArray: NotificationExtraTypeEnum.JSON_ARR_STR,key为NimIntent#EXTRA_NOTIFY_SESSION_CONTENT
showBadge APP 图标是否显示未读数(红点)仅针对 Android 8.0+ 有效
customTitleWhenTeamNameEmpty 通知栏标题,如果群名称为 null 或者空串,则使用该字段作为通知栏 title
notificationFilter 弹出通知之前,SDK 通过该接口询问 App,根据 App 返回结果决定是否弹出通知,为空等同于返回 DEFAULT,默认 null
postNotificationsRequester Android13 弹出通知之前,SDK 通过该接口向 App 请求权限 Manifest.permission#POST_NOTIFICATIONS,根据权限赋予结果决定是否弹出通知
此文档是否对你有帮助?
有帮助
去反馈
  • 设置消息提醒时不响铃
  • 设置消息提醒通知栏跳转
  • 点击在线通知的通知栏传递的 extra 类型
  • 设置消息提醒免打扰时段
  • 消息提醒配置项参考说明