消息推送
通知栏提醒
本节说明通知栏提醒、点击跳转和提醒开关等配置。
状态栏提醒设置
字段描述
SDK 通过 StatusBarNotificationConfig 控制通知栏消息提醒功能,并由初始化参数 statusBarNotificationConfig 传入。
| 参数名 | 类型 | 参数说明 | 取值说明 |
|---|---|---|---|
| statusBarNotificationConfig | StatusBarNotificationConfig | 状态提醒设置 | 默认为 null,即 SDK 不提供通知栏提醒功能,由客户 App 自行实现 |
StatusBarNotificationConfig 通知栏消息提醒配置项参考
| StatusBarNotificationConfig 参数 | 说明 |
|---|---|
| notificationSmallIconId | 通知栏小图标的资源 ID,不提供则使用 App 图标。 |
| ring | 是否响铃提醒,默认 true。 |
| notificationSound | 提醒声音资源,不提供则使用系统默认提示音。 |
| vibrate | 是否振动提醒,默认 true。 |
| ledARGB | 呼吸灯颜色,建议使用基本颜色(绿、蓝、红等),避免混合色。 |
| ledOnMs | 呼吸灯亮起持续时间(毫秒)。 |
| ledOffMs | 呼吸灯熄灭持续时间(毫秒)。 |
| hideContent | 是否隐藏消息详情和发送者昵称,默认 false。 |
| downTimeToggle | 免打扰设置开关,默认关闭。 |
| downTimeBegin | 免打扰开始时间,24小时制,格式 HH:mm。 |
| downTimeEnd | 免打扰结束时间,24小时制,格式 HH:mm。 若结束时间设置小于开始时间,则为 "开始时间-24:00-结束时间"。 |
| notificationEntrance | 通知栏点击跳转的 activity 类型。 若为 null,则使用包 launcher 的入口 activity。 |
| titleOnlyShowAppName | 通知栏标题是否只显示应用名,默认 false。 false:单会话显示会话名,多会话显示应用名。 true:始终显示应用名。 应用名在 AndroidManifest 的 application 节点设置 android:label。 |
| notificationColor | 通知栏颜色,应用于 NotificationCompat.Builder 的 setColor。安卓 5.0+ 会影响 smallIcon。 |
| downTimeEnableNotification | 免打扰期间是否显示通知,默认显示。 |
| notificationFoldStyle | 通知栏折叠类型: 折叠所有通知为一条: NotificationFoldStyle.ALL。不折叠通知: NotificationFoldStyle.EXPAND。同会话消息折叠: NotificationFoldStyle.CONTACT。 |
| notificationExtraType | 点击通知栏传递的 extra 类型: 返回 ArrayList<IMMessage>:NotificationExtraTypeEnum.MESSAGE。返回 String 格式的 JSONArray: NotificationExtraTypeEnum.JSON_ARR_STR。 |
| showBadge | App 图标是否显示未读数(红点),仅安卓 8.0+ 有效。 |
| customTitleWhenTeamNameEmpty | 当群名称为空时,用作通知栏标题。 |
| notificationFilter | 决定是否弹出通知的过滤接口,为空等同于返回 DEFAULT,默认 null。 |
| postNotificationsRequester | Android 13 弹出通知前,向 App 请求 Manifest.permission#POST_NOTIFICATIONS 权限。 |
代码示例
YSFOptions options = new YSFOptions();
options.statusBarNotificationConfig = new StatusBarNotificationConfig();
options.statusBarNotificationConfig.notificationSmallIconId = R.drawable.ic_launcher;
options.statusBarNotificationConfig.notificationEntrance = MainActivity.class;
options.statusBarNotificationConfig.notificationExtraType = NotificationExtraTypeEnum.MESSAGE;通知栏消息提醒开关控制
初始化通知栏配置后,可以通过 Unicorn.toggleNotification() 动态打开或关闭提醒。
public static void toggleNotification(final boolean on)参数说明
| 字段 | 类型 | 参数说明 | 取值说明 |
|---|---|---|---|
| on | boolean | 只有StatusBarNotificationConfig配置不为空时才有效 | true:打开开关false:关闭开关 |
代码示例
Unicorn.toggleNotification(true);新消息提醒
当用户不处在聊天界面时,收到客服的消息,App 应当在通知栏或者聊天入口给出提醒。
通知栏提醒可以显示最近一条消息的内容,并提供给用户快速进入 App 的入口,要打开通知栏功能,需配置statusBarNotificationConfig。
要实现点击通知栏提醒直接跳转到会话窗口的功能,需要设置 StatusBarNotificationConfig 的 notificationEntrance (不可配置 SDK 内部 Activity ,例如 ServiceMessageActivity),并在对应的 Activity 里添加处理。还需要设置StatusBarNotificationConfig 的 notificationExtraType 属性为 NotificationExtraTypeEnum.MESSAGE。如果没有设置 notificationEntrance,则是在 AndroidManifest 中设置的入口 Activity 中处理。
代码示例
Intent intent = getIntent();
if (intent.hasExtra(NimIntent.EXTRA_NOTIFY_CONTENT)) {
// 打开客服窗口
Unicorn.openServiceActivity(context, title, source);
// 最好将intent清掉,以免从堆栈恢复时又打开客服窗口
setIntent(new Intent());
}推送消息
本节说明客服消息或系统推送到达访客端后的接收和处理方式。
主动消息推送
为了增强企业的主动营销能力,加入给 iOS 和 Android 用户主动推送消息的服务端接口。
方法描述
推送消息到达访客端,体现出来的,其实就是一条带扩展字段的普通消息,用户进入客服界面后,也会在消息流中正常展示出来。如果 App 也需要处理这条消息,可以添加对这一事件的监听。接口使用示例如下:
方法说明
public void addPushMessageListener(OnPushMessageListener listener)
public void removePushMessageListener(OnPushMessageListener listener)通过 Unicorn.addPushMessageListener() 注册 OnPushMessageListener;不再需要接收回调时,应调用 removePushMessageListener 移除同一个监听器实例,避免页面销毁后继续收到回调。
OnPushMessageListener
异步接口可通过onReceive设置回调函数。
| 异步接口回调函数 | 说明 |
|---|---|
| onReceive | IMMessage message:七鱼消息PushMessageExtension extension:推送消息 |
代码示例
private void addPushMessageListener() {
if (qiyuPushMessageListener == null) {
qiyuPushMessageListener = new OnPushMessageListener() {
@Override
public void onReceive(IMMessage message, PushMessageExtension extension) {
qiyuPushMessage = message;
pushMessageExtension = extension;
// 具体实现见demo
showPushMessageIfResumed();
}
};
Unicorn.addPushMessageListener(qiyuPushMessageListener);
}
}
private void removePushMessageListener() {
if (qiyuPushMessageListener != null) {
Unicorn.removePushMessageListener(qiyuPushMessageListener);
qiyuPushMessageListener = null;
}
}这篇文档有帮助吗?