右下角悬浮窗全局消息通知

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

右下角悬浮窗全局消息通知

应用场景 

  • 存在于全局的通知提醒弹窗,类似苹果右侧消息通知/云之家里的通知消息,由后台推送 触发此消息通知,不依赖用户手动触发操作 

  • 对于用户须知但重要程度没那么高的消息,用户需关注但不打断用户,不会自动消失

场景举例:标准补丁更新完成通知/新特性

特性应用:消息公告-悬浮窗展示


业务开发步骤

1、 创建NotificationBody类,设置appid、消息标题、消息内容、消息id、消息图标类型(info/error/success/warning)、添加按钮信息

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);

2、 创建消息处理类

public class MyNotificationClick extends AbstractNotificationClick {

    @Override
    public void buttonClick(ButtonClickEventArgs e) {
        this.getFormView().showMessage("调用方已收到全局消息通知点击事件,消息ID:" +this.getNotificationId() +
                 "按钮key:" + e.getButtonKey() + ",消息标题:"
        +this.getNotificationFormInfo().getNotification().getTitle());
    }
}

3、NotificationBody设置消息处理类参数

//消息窗口按钮点击事件处理
notificationBody.setClickClassName("kd.bos.plugin.sample.notification.MyNotificationClick");

4、 组装界面参数,调用消息发送服务

//创建消息通知界面参数
NotificationFormInfo notificationFormInfo = new NotificationFormInfo();
notificationFormInfo.setNotification(notificationBody);

//调用发送全局消息帮助服务方法
NotificationServiceHelper.sendNotification(Arrays.asList(RequestContext.get().getUserId()), notificationFormInfo);


示例代码

/** 
 * 发送全局消息通知插件
 * 演示如何发送一个全局消息通知弹窗
 *
 * 案例设计
 * 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.plugin.sample.notification.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);
    }


}


效果图

右下角悬浮窗全局消息通知

应用场景 存在于全局的通知提醒弹窗,类似苹果右侧消息通知/云之家里的通知消息,由后台推送 触发此消息通知,不依赖用户手动触发操作 对...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息