如何调用全局通知小浮窗,了解一下?

栏目:云苍穹知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

如何调用全局通知小浮窗,了解一下?

小浮窗应用场景:

适用于轻量级的消息通知:对于用户须知但重要程度没那么高的消息,用户需关注但不打断用户,默认不会自动消失。场景举例:标准补丁更新完成通知/新特性。


视觉展示:

  1. 单条消息

  2. 消息内容最多支持2行,超出2行的内容以省略号的形式展示


  3. 多条消息,以分页的形式展示




功能介绍:

  1.  触发显示方式:不是由用户手动触发,而是由后台通过websocket主动推送,不会像普通弹窗一样打断用户操作,默认不会主动关闭。

  2. 显示位置:默认显示在浏览器的右下角,同时支持修改position配置项调整显示位置,bottomRight(右下角,默认显示位置)|topRight(右上角)|topLeft(左上角)|bottomLeft(左下角)。

  3. 显示内容:消息内容最多支持2行显示,超出2行的内容展示省略号;多条消息通过分页的形式展示。

  4. 按钮交互:消息通知中的按钮文本支持自定义;通过继承AbstractNotificationClick这个派生类,可以在代码中实现点击按钮之后的交互行为。


调用步骤:

  1. 新建NotificationBody实例,将相应的调用参数(appId, title, content, notificationId, buttonInfo)设置进去,具体看下面的代码示例。

  2. 对消息通知中的按钮点击事件进行监听。

  3. 在AbstractNotificationClick派生类中自定义按钮点击的交互行为。

  4. 最后,通过websocket向前端发送消息,一个全局的通知小浮窗,就调用成功了!



操作代码:

  1. 调用通知提醒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());
    }
}




如何调用全局通知小浮窗,了解一下?

小浮窗应用场景:适用于轻量级的消息通知:对于用户须知但重要程度没那么高的消息,用户需关注但不打断用户,默认不会自动消失。场景举例:...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息