七鱼开发文档中心
总览服务端 APIWebiOSAndroid鸿蒙Uniapp微信小程序插件三方接入

消息推送

通知栏提醒

本节说明通知栏提醒、点击跳转和提醒开关等配置。

状态栏提醒设置

字段描述

SDK 通过 StatusBarNotificationConfig 控制通知栏消息提醒功能,并由初始化参数 statusBarNotificationConfig 传入。

参数名类型参数说明取值说明
statusBarNotificationConfigStatusBarNotificationConfig状态提醒设置默认为 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。
showBadgeApp 图标是否显示未读数(红点),仅安卓 8.0+ 有效。
customTitleWhenTeamNameEmpty当群名称为空时,用作通知栏标题。
notificationFilter决定是否弹出通知的过滤接口,为空等同于返回 DEFAULT,默认 null。
postNotificationsRequesterAndroid 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)

参数说明

字段类型参数说明取值说明
onboolean只有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设置回调函数。

异步接口回调函数说明
onReceiveIMMessage 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;
        }
    }

这篇文档有帮助吗?

目录