如何调用全局通知小浮窗,了解一下?
小浮窗应用场景:
适用于轻量级的消息通知:对于用户须知但重要程度没那么高的消息,用户需关注但不打断用户,默认不会自动消失。场景举例:标准补丁更新完成通知/新特性。
视觉展示:
单条消息
消息内容最多支持2行,超出2行的内容以省略号的形式展示
多条消息,以分页的形式展示
功能介绍:
触发显示方式:不是由用户手动触发,而是由后台通过websocket主动推送,不会像普通弹窗一样打断用户操作,默认不会主动关闭。
显示位置:默认显示在浏览器的右下角,同时支持修改
position
配置项调整显示位置,bottomRight(右下角,默认显示位置)|topRight(右上角)|topLeft(左上角)|bottomLeft(左下角)。显示内容:消息内容最多支持2行显示,超出2行的内容展示省略号;多条消息通过分页的形式展示。
按钮交互:消息通知中的按钮文本支持自定义;通过继承AbstractNotificationClick这个派生类,可以在代码中实现点击按钮之后的交互行为。
调用步骤:
新建NotificationBody实例,将相应的调用参数(appId, title, content, notificationId, buttonInfo)设置进去,具体看下面的代码示例。
对消息通知中的按钮点击事件进行监听。
在AbstractNotificationClick派生类中自定义按钮点击的交互行为。
最后,通过websocket向前端发送消息,一个全局的通知小浮窗,就调用成功了!
操作代码:
调用通知提醒
java
代码示例
package kd.bos.notification.sample; import kd.bos.context.RequestContext; import kd.bos.dataentity.utils.StringUtils; import kd.bos.form.control.Control; import kd.bos.form.plugin.AbstractFormPlugin; import kd.bos.notification.IconType; import kd.bos.notification.NotificationBody; import kd.bos.notification.NotificationFormInfo; import kd.bos.servicehelper.notification.NotificationServiceHelper; import java.util.Arrays; import java.util.EventObject; import java.util.HashMap; import java.util.Map; import java.util.UUID; /** 发送全局消息通知插件 * 演示如何发送一个全局消息通知弹窗 * * 案例设计 * 1、新建一个动态表单 * 2、添加一个按钮,标题为‘发送全局消息’,标识为btnnotificationsend * 3、界面插件,填写本插件 * 4、预览,点击‘发送全局消息’按钮,即进入本插件代码,发送测试消息 * */ public class NotificationSendFormPlugin extends AbstractFormPlugin { private static final String KEY_NOTIFICATIONSEND = "btnnotificationsend"; /** * 添加事件监听:"点击发送全局消息通知"按钮点击事件 */ @Override public void registerListener(EventObject e) { super.registerListener(e); this.addClickListeners(KEY_NOTIFICATIONSEND); } /** * 事件处理:"点击发送全局消息通知"按钮点击事件 */ @Override public void click(EventObject evt) { Control source = (Control)evt.getSource(); if (StringUtils.equalsIgnoreCase(KEY_NOTIFICATIONSEND, source.getKey())) { this.send(); } } /** * 发送全局消息通知 */ private void send() { NotificationBody notificationBody = new NotificationBody(); notificationBody.setAppId("bos"); notificationBody.setTitle("你有新消息需要处理"); notificationBody.setContent("这是一条测试全局消息提醒弹窗"); notificationBody.setNotificationId(UUID.randomUUID().toString()); notificationBody.setIconType(IconType.Info.toString()); //忽略按钮平台自动添加 NotificationBody.ButtonInfo detailButton = new NotificationBody.ButtonInfo(); detailButton.setKey("detail"); detailButton.setText("查看详情"); notificationBody.addButtonInfo(detailButton); //消息窗口按钮点击事件处理 notificationBody.setClickClassName("kd.bos.notification.sample.MyNotificationClick"); // 自定义参数 Map<String,Object> params = new HashMap<>(); params.put("targetPage", "bill_test"); notificationBody.setParams(params); //创建消息通知界面参数 NotificationFormInfo notificationFormInfo = new NotificationFormInfo(); notificationFormInfo.setNotification(notificationBody); //调用发送全局消息帮助服务方法 NotificationServiceHelper.sendNotification(Arrays.asList(RequestContext.get().getUserId()), notificationFormInfo); } }
2.按钮点击事件实现类
package kd.bos.notification.sample; import kd.bos.notification.AbstractNotificationClick; import kd.bos.notification.events.ButtonClickEventArgs; /** * 案例:全局消息通知点击事件实现类 * */ public class MyNotificationClick extends AbstractNotificationClick { @Override public void buttonClick(ButtonClickEventArgs e) { this.getFormView().showMessage("调用方已收到全局消息通知点击事件,消息ID:" + this.getNotificationId() + "按钮key:" + e.getButtonKey() + ",消息标题:" + this.getNotificationFormInfo().getNotification().getTitle()); } }
如何调用全局通知小浮窗,了解一下?
小浮窗应用场景:适用于轻量级的消息通知:对于用户须知但重要程度没那么高的消息,用户需关注但不打断用户,默认不会自动消失。场景举例:...
点击下载文档
本文2024-09-23 00:42:57发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-141262.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章