All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cn.jiguang.sdk.bean.push.message.notification.NotificationMessage Maven / Gradle / Ivy

There is a newer version: 5.1.13
Show newest version
package cn.jiguang.sdk.bean.push.message.notification;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

import java.time.LocalDateTime;
import java.util.Map;

/**
 * 可设置字段,详情参考Notification
 */
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class NotificationMessage {

    @JsonProperty("alert")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private String alert;

    @JsonProperty("android")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private Android android;

    @JsonProperty("ios")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private IOS ios;

    @JsonProperty("hmos")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private HMOS hmos;

    @JsonProperty("quickapp")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private QuickApp quickApp;

    /**
     * iOS VOIP 功能。该类型推送支持和 iOS 的 Notification 通知并存,详见 voip:https://docs.jiguang.cn/jpush/server/push/rest_api_v3_push#voip
     */
    @JsonProperty("voip")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private Map voip;

    @Data
    public static class Android {
        /**
         * 这里指定后会覆盖上级统一指定的 alert 信息。
         * 内容可以为空字符串,表示不展示到通知栏。
         * 各推送通道对此字段的限制详见 推送限制:https://docs.jiguang.cn/jpush/server/push/rest_api_v3_push#%E7%9B%B8%E5%85%B3%E5%8F%82%E8%80%83
         */
        @JsonProperty("alert")
        @JsonInclude(JsonInclude.Include.NON_NULL)
        private String alert;

        /**
         * 如果指定了,则通知里原来展示 App 名称的地方,将展示 title。
         * 各推送通道对此字段的限制详见 推送限制:https://docs.jiguang.cn/jpush/server/push/rest_api_v3_push#%E7%9B%B8%E5%85%B3%E5%8F%82%E8%80%83
         */
        @JsonProperty("title")
        @JsonInclude(JsonInclude.Include.NON_NULL)
        private String title;

        /**
         * Android SDK 可 设置通知栏样式:https://docs.jiguang.cn/jpush/client/Android/android_api#%E9%80%9A%E7%9F%A5%E6%A0%8F%E6%A0%B7%E5%BC%8F%E5%AE%9A%E5%88%B6-api
         * 根据样式 ID 来指定通知样式。
         * android 8.0 开始建议采用 NotificationChannel 配置:https://docs.jiguang.cn/jpush/client/Android/android_api#notificationchannel-%E9%85%8D%E7%BD%AE
         */
        @JsonProperty("builder_id")
        @JsonInclude(JsonInclude.Include.NON_NULL)
        private Integer builderId;

        /**
         * 根据 channel ID 来指定通知栏展示效果,不超过 1000 字节。
         * Android 8.0 开始可以进行 NotificationChannel 配置:https://docs.jiguang.cn/jpush/client/Android/android_api#notificationchannel-%E9%85%8D%E7%BD%AE
         * options.third_party_channel 下的小米、OPPO 和华为厂商参数也有 channel_id 字段,若有填充,则优先使用,若无填充则以本字段定义为准。
         */
        @JsonProperty("channel_id")
        @JsonInclude(JsonInclude.Include.NON_NULL)
        private String channelId;

        /**
         * 完全依赖 rom 厂商对 category 的处理策略。
         * 说明1:华为从 2023.09.15 开始基于《华为消息分类标准》 对其本地通知进行管控推送,参考:《华为本地通知频次及分类管控通知》 ,此字段值对应华为「本地通知」category取值,开发者通过极光服务发起推送时如果传递了此字段值,请务必按照华为官方要求传递,极光会自动适配华为本地通知importance取值,无需开发者额外处理。
         * 说明2:考虑到一次推送包含多个厂商用户的情况,建议此处传递的字段值要和您APP开发代码中创建的channel效果对应(category值一致),最好创建新的channelId,避免曾经已经创建了无法修改。
         * 官方category分类取值规则也可参考华为消息分类对应表
         */
        @JsonProperty("category")
        @JsonInclude(JsonInclude.Include.NON_NULL)
        private String category;

        /**
         * 默认为 0,范围为 -2~2。
         * 说明1:华为从 2023.09.15 开始基于《华为消息分类标准》 对其本地通知进行管控推送,参考:《华为本地通知频次及分类管控通知》 ,开发者通过极光服务发起推送时,如果有传递此字段值,请注意此字段要和 category 同时使用;反之,如果传了category,没传递此值时极光会自动帮您适配处理优先级。
         * priority = -2 时,对应华为本地通知 importance 级别为 IMPORTANCE_MIN;priority = 0 时,对应华为本地通知 importance 级别为 IMPORTANCE_DEFAULT。
         * 官方消息优先级取值规则也可参考华为消息分类对应表
         * 极光取值 -2 ~-1 对应 FCM 取值 normal,极光取值 0~2 对应 FCM 取值 high。
         */
        @JsonProperty("priority")
        @JsonInclude(JsonInclude.Include.NON_NULL)
        private Integer priority;

        /**
         * 用来指定通知栏样式类型,默认为 0。
         * 1:bigText
         * 2:Inbox
         * 3:bigPicture
         */
        @JsonProperty("style")
        @JsonInclude(JsonInclude.Include.NON_NULL)
        private Integer style;

        /**
         * 可选范围为 -1~7 ,默认按照 -1 处理。
         * 即0111二进制,左数第二位代表 light,第三位代表 vibrate,第四位代表 sound。 0:不生效,1:生效。
         * 如: Notification.DEFAULT_ALL = -1 ,Notification.DEFAULT_SOUND = 1, Notification.DEFAULT_VIBRATE = 2, Notification.DEFAULT_LIGHTS = 4 的任意 “or” 组合。
         */
        @JsonProperty("alert_type")
        @JsonInclude(JsonInclude.Include.NON_NULL)
        private Integer alertType;

        /**
         * 当 style = 1 时可用,内容会被通知栏以大文本的形式展示出来。
         * 若没有填充 厂商 big_text, 则也默认使用该 big_text 字段展示。
         * 支持 api 16 以上的 rom。
         */
        @JsonProperty("big_text")
        @JsonInclude(JsonInclude.Include.NON_NULL)
        private String bigText;

        /**
         * 这里的Object,可以是基础数据类型,也可以是Map
         * 当 style = 2 时可用, json 的每个 key 对应的 value 会被当作文本条目逐条展示。
         * 若没有填充 厂商 inbox,则默认使用该 inbox 字段展示。
         * 支持 api 16 以上的 rom。
         */
        @JsonProperty("inbox")
        @JsonInclude(JsonInclude.Include.NON_NULL)
        private Map inbox;

        /**
         * 使用详情参见 设置大图片文档:https://docs.jiguang.cn/jpush/practice/set_icon#android%E3%80%82
         * 当 style = 3 时可用,目前支持 .jpg 和 .png 格式的图片。
         * 支持网络图片 url、本地图片的 path、 极光 media_id(推荐使用),如果是 http/https 的 url,会自动下载;如果要指定开发者准备的本地图片就填 sdcard 的相对路径。
         * 若没有填充 厂商 big_pic_path,则默认使用该字段展示。
         * 支持 api 16 以上的 rom。
         */
        @JsonProperty("big_pic_path")
        @JsonInclude(JsonInclude.Include.NON_NULL)
        private String bigPicture;

        /**
         * 这里的Object,可以是基础数据类型,也可以是Map
         * 这里自定义 JSON 格式的 Key / Value 信息,以供业务使用。
         * 针对部分厂商跳转地址异常,可通过 third_url_encode 兼容处理,详情参考 厂商通道无法跳转问题分析:https://docs.jiguang.cn/jpush/faq/tech_faq#%E5%8E%82%E5%95%86%E9%80%9A%E9%81%93%E6%97%A0%E6%B3%95%E8%B7%B3%E8%BD%AC%EF%BC%9F
         * 当通知内容超过厂商的限制时,厂商通道会推送失败,可以在 extras 中配置 xx_content_forshort 参数传入对应厂商的通知内容,详情可展开表格查看。
         */
        @JsonProperty("extras")
        @JsonInclude(JsonInclude.Include.NON_NULL)
        private Map extras;

        /**
         * 使用详情参见 设置图标文档:https://docs.jiguang.cn/jpush/practice/set_icon#android%E3%80%82
         * 图标大小不超过 30 k(注:从 JPush Android SDK v4.0.0 版本开始,图片大小限制提升至 300 k)。
         * 支持网络图片 url、本地图片的 path、 极光 media_id(推荐使用),如果是 http/https 的 url,会自动下载;如果要指定开发者准备的本地图片就填 sdcard 的相对路径。
         * 此字段值,若是 media_id, 则对其它厂商通道生效,若非 media_id,则对走华硕通道和极光通道下发的消息生效,不影响请求走其它厂商通道。
         * 若没有填充 厂商 large_icon ,则默认使用该 large_icon 字段展示。
         */
        @JsonProperty("large_icon")
        @JsonInclude(JsonInclude.Include.NON_NULL)
        private String largeIcon;

        /**
         * 使用详情参见 设置图标文档:https://docs.jiguang.cn/jpush/practice/set_icon#android%E3%80%82
         * 图标大小不超过 30 k (注:从 JPush Android SDK v4.0.0 版本开始,图片大小限制提升至 300 k)。
         * 支持以 http 或 https 开头的网络图片和通过极光图片上传接口得到的 media_id 值(推荐使用)。
         * 此字段值,若是 media_id, 则对其它厂商通道生效,若非 media_id,则对走华硕通道和极光通道下发的消息生效,不影响请求走其它厂商通道。
         * 若没有填充 厂商 small_icon_uri,则默认使用该 small_icon_uri 字段展示。
         */
        @JsonProperty("small_icon_uri")
        @JsonInclude(JsonInclude.Include.NON_NULL)
        private String smallIcon;

        /**
         * 该字段仅对消息走极光通道下发生效。
         * 该字段能辅助解决部分设备小图标显示灰白情况,但最终还是依赖系统本身支持情况,建议开发者在设计UI图标时就做好适配工作。
         * 需要搭配 Android JPush SDK v5.5.0 及其以上版本使用。
         */
        @JsonProperty("icon_bg_color")
        @JsonInclude(JsonInclude.Include.NON_NULL)
        private String iconBgColor;

        /**
         * 使用 intent 里的 url 指定点击通知栏后跳转的目标页面;
         * SDK<422 的版本此字段值仅对走华硕通道和极光自有通道下发生效,不影响请求走其它厂商通道。
         * SDK≥422 的版本,API 推送时建议填写 intent 字段,否则点击通知可能无跳转动作。此字段支持以下三种类型:
         * 1. 跳转到目标页:
         * intent:#Intent;action=action 路径;component= 包名 /Activity 全名;end
         * (OPPO 和 FCM 通道必须传 "action 路径", 其他厂商必须传 "Activity 全名", 否则将出现对应厂商无法跳转问题)
         * 2. 跳转到 deeplink 地址:
         * scheme://test?key1=val1&key2=val2
         * 3. 应用首页: intent:#Intent;action=android.intent.action.MAIN;end (固定为此地址)
         */
        @JsonProperty("intent")
        @JsonInclude(JsonInclude.Include.NON_NULL)
        private Intent intent;

        /**
         * 用于指定开发者想要打开的 activity,值为 activity 节点的 “android:name”属性值。
         * 适配华为、小米、vivo 厂商通道跳转。
         * Jpush SDK≥V4.2.2,可不再填写本字段,仅设置 intent 字段即可。
         */
        @JsonProperty("uri_activity")
        @JsonInclude(JsonInclude.Include.NON_NULL)
        private String uriActivity;

        /**
         * 用于指定开发者想要打开的 activity,值为 "activity"-"intent-filter"-"action" 节点的 "android:name" 属性值。
         * 适配 oppo、fcm 跳转。
         * Jpush SDK≥V4.2.2,可不再填写本字段,仅设置 intent 字段即可,但若需兼容旧版 SDK 必须填写该字段
         */
        @JsonProperty("uri_action")
        @JsonInclude(JsonInclude.Include.NON_NULL)
        private String uriAction;

        /**
         * 此属性目前仅针对华为 EMUI 8.0 及以上、小米 MIUI 6 及以上、vivo、荣耀设备生效。
         * 此字段如果不填,表示不改变角标数字(小米设备由于系统控制,不论推送走极光通道下发还是厂商通道下发,即使不传递依旧是默认 +1 的效果)。
         * 取值范围为:1-99,若设置了取值范围内的数字,下一条通知栏消息配置的 badge_add_num 数据会和原角标数量进行相加,建议取值为 1。
         * 举例:badge_add_num 取值为 1,原角标数为 2,发送此角标消息后,应用角标数显示为 3。
         * 针对华为 / 荣耀通道,若 badge_set_num 与 badge_add_num 同时存在,则以 badge_set_num 为准;若“badge_add_num”和“badge_set_num”都设置为空,则应用角标数字默认加1。
         */
        @JsonProperty("badge_add_num")
        @JsonInclude(JsonInclude.Include.NON_NULL)
        private Integer badgeAddNumber;

        /**
         * 此属性目前仅针对华为 EMUI 8.0 及以上、荣耀设备走厂商通道时生效,若 badge_set_num 与 badge_add_num 同时存在,则以 badge_set_num 为准;若“badge_add_num”和“badge_set_num”都设置为空,则应用角标数字默认加1。
         * 取值范围为:0-99,若设置了取值范围内的数字,对应下一条通知栏消息配置的 badge_set_num 数字则为角标数值,举例:badge_set_num 取值为 1,无论应用之前角标数为多少,发送此角标消息后,应用角标数均显示为 1。
         */
        @JsonProperty("badge_set_num")
        @JsonInclude(JsonInclude.Include.NON_NULL)
        private Integer badgeSetNumber;

        /**
         * 仅华为和荣耀通道推送时生效,此值如果填写非主 Activity 类,以厂商限制逻辑为准。
         * 若需要实现角标累加功能,需配合 badge_add_num 使用,二者需要共存,缺少其一不可。
         * 若需要实现角标固定值功能,需配合 badge_set_num 使用,二者需要共存,缺少其一不可。
         */
        @JsonProperty("badge_class")
        @JsonInclude(JsonInclude.Include.NON_NULL)
        private String badgeClass;

        /**
         * 填写 Android 工程中 /res/raw/ 路径下铃声文件名称,无需文件名后缀.
         * 注意:针对 Android 8.0 以上,当传递了 channel_id 时,此属性不生效。
         */
        @JsonProperty("sound")
        @JsonInclude(JsonInclude.Include.NON_NULL)
        private String sound;

        /**
         * 此属性不填写,SDK 默认立即展示;此属性填写,则以填写时间点为准才开始展示。
         * JPush Android SDK v3.5.0 版本开始支持。
         */
        @JsonProperty("show_begin_time")
        @JsonInclude(JsonInclude.Include.NON_NULL)
        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
        private LocalDateTime showBeginTime;

        /**
         * 此属性不填写,SDK 会一直展示;此属性填写,则以填写时间点为准,到达时间点后取消展示。
         * JPush Android SDK v3.5.0 版本开始支持。
         */
        @JsonProperty("show_end_time")
        @JsonInclude(JsonInclude.Include.NON_NULL)
        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
        private LocalDateTime showEndTime;

        /**
         * 值为 "1" 时,APP 在前台会弹出/展示通知栏消息。
         * 值为 "0" 时,APP 在前台不会弹出/展示通知栏消息。
         * 注:默认情况下 APP 在前台会弹出/展示通知栏消息,JPush Android SDK v3.5.8 版本开始支持。
         */
        @JsonProperty("display_foreground")
        @JsonInclude(JsonInclude.Include.NON_NULL)
        private String displayForeground;

        @Data
        public static class Intent {
            @JsonProperty("url")
            @JsonInclude(JsonInclude.Include.NON_NULL)
            private String url;
        }
    }

    @Data
    public static class IOS {
        /**
         * 这里的Object,可以是String类型,也可以是Map
         * 这里指定内容将会覆盖上级统一指定的 alert 信息。
         * 内容为空则不展示到通知栏。
         * 支持字符串形式也支持官方定义的 alert payload 结构,在该结构中包含 title 和 subtitle 等官方支持的 key。
         */
        @JsonProperty("alert")
        @JsonInclude(JsonInclude.Include.NON_NULL)
        private Object alert;

        /**
         * 这里的Object,可以是String类型,也可以是Map
         * 普通通知: string 类型,如果无此字段,则此消息无声音提示;有此字段,如果找到了指定的声音就播放该声音,否则播放默认声音,如果此字段为空字符串,iOS 7 为默认声音,iOS 8 及以上系统为无声音。说明:JPush 官方 SDK 会默认填充声音字段,提供另外的方法关闭声音,详情查看各 SDK 的源码。
         * 告警通知: JSON Object , 支持官方定义的 payload 结构,在该结构中包含 critical 、name 和 volume 等官方支持的 key 。
         * 自定义铃声说明:格式必须是 Linear PCM、MA4(IMA/ADPCM)、alaw,μLaw 的一种,将声频文件放到项目 bundle 目录中,且时长要求 30s 以下,否则就是系统默认的铃声,详见 自定义铃声:https://docs.jiguang.cn/jpush/practice/custom_ringtone#apns-%E9%80%9A%E9%81%93%E9%80%9A%E7%9F%A5%E5%AE%9E%E7%8E%B0
         */
        @JsonProperty("sound")
        @JsonInclude(JsonInclude.Include.NON_NULL)
        private Object sound;

        /**
         * 可设置为 N、+N、-N,N 的取值范围为 [0,99]。若上传的角标值 value 为 10,表示角标会设置为 N、10+N、10-N(值小于 0 时默认清除角标)。
         * 为 0 或空字符串,则表示清除角标。
         * 如果不填,表示不改变角标数字。
         * JPush 官方服务端 SDK 会默认填充 badge 值为 "+1",详情参考:badge +1:https://community.jiguang.cn/article/464967
         */
        @JsonProperty("badge")
        @JsonInclude(JsonInclude.Include.NON_NULL)
        private String badge;

        /**
         * 推送的时候携带 "content-available":true,说明是 Background Remote Notification,如果不携带此字段则是普通的 Remote Notification。
         * 详情参考:Background Remote Notification:https://docs.jiguang.cn/jpush/client/iOS/ios_new_fetures#ios-7-background-remote-notification
         */
        @JsonProperty("content-available")
        @JsonInclude(JsonInclude.Include.NON_NULL)
        private Boolean contentAvailable;

        /**
         * iOS 10 新增的 Notification Service Extension 功能,用于上报每条 APNs 信息的送达状态,使用该功能需要客户端实现 Service Extension 接口 ,并在服务端使用 mutable-content 字段完成设置。
         * true:说明支持 iOS 10 的 UNNotificationServiceExtension 功能。
         * 如果不携带此字段则是普通的 Remote Notification,无法统计抵达数据。
         */
        @JsonProperty("mutable-content")
        @JsonInclude(JsonInclude.Include.NON_NULL)
        private Boolean mutableContent;

        /**
         * iOS 8 开始支持,设置 APNs payload 中的 "category" 字段值。
         */
        @JsonProperty("category")
        @JsonInclude(JsonInclude.Include.NON_NULL)
        private String category;

        /**
         * 这里的Object,可以是基础数据类型,也可以是Map
         * 这里自定义 Key / value 信息,以供业务使用,详情参考 如何设置右侧图标/大图片 和 iOS 通知点击跳转。
         */
        @JsonProperty("extras")
        @JsonInclude(JsonInclude.Include.NON_NULL)
        private Map extras;

        /**
         * ios 的远程通知通过该属性来对通知进行分组,同一个 thread-id 的通知归为一组。
         */
        @JsonProperty("thread-id")
        @JsonInclude(JsonInclude.Include.NON_NULL)
        private String threadId;

        /**
         * ios 15 的通知级别,取值只能是 active,critical,passive,time-sensitive 中的一个。
         * 详情参考:UNNotificationInterruptionLevel:https://developer.apple.com/documentation/usernotifications/unnotificationinterruptionlevel
         */
        @JsonProperty("interruption-level")
        @JsonInclude(JsonInclude.Include.NON_NULL)
        private String interruptionLevel;
    }

    @Data
    public static class HMOS {
        /**
         * 这里指定后会覆盖上级统一指定的 alert 信息。
         * 内容不可以是空字符串,否则推送厂商会返回失败。
         */
        @JsonProperty("alert")
        @JsonInclude(JsonInclude.Include.NON_NULL)
        private String alert;

        /**
         * 如果指定了,则通知里原来展示 App 名称的地方,将展示 title。否则使用WebPortal配置的默认title。
         */
        @JsonProperty("title")
        @JsonInclude(JsonInclude.Include.NON_NULL)
        private String title;

        /**
         * 此字段由于厂商为必填字段,效果也完全依赖 rom 厂商对 category 的处理策略,请开发者务必填写。极光内部对此字段实际未进行必填校验,请开发者按照必填处理。
         * 此字段值对应官方「云端category」取值,开发者通过极光服务发起推送时如果传递了此字段值,请务必按照官方要求传递,官方category分类取值规则也可参考鸿蒙消息分类标准:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/push-noti-classification-0000001727885246#section1521814368537
         */
        @JsonProperty("category")
        @JsonInclude(JsonInclude.Include.NON_NULL)
        private String category;

        /**
         * 要求传递网络地址,使用HTTPS协议,取值样例:https://example.com/image.png。
         * 图标大小不超过 30 k,图片长*宽<12800像素。
         */
        @JsonProperty("large_icon")
        @JsonInclude(JsonInclude.Include.NON_NULL)
        private String largeIcon;

        /**
         * 支持跳转到应用首页、deeplink 地址和Action跳转三种类型:
         * 1. 跳转应用首页:固定 action.system.home
         * 2. 跳转到 deeplink 地址: scheme://test?key1=val1&key2=val2
         * 3. 跳转到 action 地址: com.test.action
         * 说明:此字段由于厂商为必填字段,请开发者务必填写。极光内部对此字段实际未进行必填校验,请开发者按照必填处理。
         */
        @JsonProperty("intent")
        @JsonInclude(JsonInclude.Include.NON_NULL)
        private Android.Intent intent;

        /**
         * 此字段如果不填,表示不改变角标数字
         * 取值范围为:1-99,若设置了取值范围内的数字,下一条通知栏消息配置的 badge_add_num 数据会和原角标数量进行相加,建议取值为 1。
         * 举例:badge_add_num 取值为 1,原角标数为 2,发送此角标消息后,应用角标数显示为 3。
         */
        @JsonProperty("badge_add_num")
        @JsonInclude(JsonInclude.Include.NON_NULL)
        private Integer badgeAddNumber;

        /**
         * 此字段如果不填,表示不改变角标数字
         * 取值范围为:0-99,若设置了取值范围内的数字,对应下一条通知栏消息配置的 badge_set_num 数字则为角标数值,举例:badge_set_num 取值为 1,无论应用之前角标数为多少,发送此角标消息后,应用角标数均显示为 1。
         */
        @JsonProperty("badge_set_num")
        @JsonInclude(JsonInclude.Include.NON_NULL)
        private Integer badgeSetNumber;

        /**
         * 测试消息标识:
         * false:正常消息(默认值)
         * true:测试消息
         */
        @JsonProperty("test_message")
        @JsonInclude(JsonInclude.Include.NON_NULL)
        private Boolean isTest;

        /**
         * 输入一个唯一的回执 ID 指定本次下行消息的回执地址及配置,该回执 ID 可以在鸿蒙回执参数配置中查看。
         */
        @JsonProperty("receipt_id")
        @JsonInclude(JsonInclude.Include.NON_NULL)
        private String receiptId;

        /**
         * 这里的Object,可以是基础数据类型,也可以是Map
         * 这里自定义 JSON 格式的 Key / Value 信息,以供业务使用。
         */
        @JsonProperty("extras")
        @JsonInclude(JsonInclude.Include.NON_NULL)
        private Map extras;

        /**
         * 通知栏样式类型,默认为0,0:普通样式 2:多文本样式
         */
        @JsonProperty("style")
        @JsonInclude(JsonInclude.Include.NON_NULL)
        private Integer style;

        /**
         * 这里的Object,可以是基础数据类型,也可以是Map
         * 对应 style 的取值类型 2。
         */
        @JsonProperty("inbox")
        @JsonInclude(JsonInclude.Include.NON_NULL)
        private Map inbox;

        /**
         * 对应华为 push-type 字段,默认值 0,目前仅支持:0-通知消息,2-通知拓展消息,10-VoIP呼叫消息,其它值报错,voip消息与通知消息互斥,不可同时下发
         */
        @JsonProperty("push_type")
        @JsonInclude(JsonInclude.Include.NON_NULL)
        private Integer pushType;

        /**
         * 对应华为 extraData 字段,当 push_type=2 或 push_type=10 时生效,此时是必填的,push_type=0时忽略此字段
         */
        @JsonProperty("extra_data")
        @JsonInclude(JsonInclude.Include.NON_NULL)
        private String extraData;

        @Data
        public static class Intent {
            @JsonProperty("url")
            @JsonInclude(JsonInclude.Include.NON_NULL)
            private String url;
        }
    }

    @Data
    public static class QuickApp {
        @JsonProperty("title")
        @JsonInclude(JsonInclude.Include.NON_NULL)
        private String title;

        @JsonProperty("alert")
        @JsonInclude(JsonInclude.Include.NON_NULL)
        private String alert;

        @JsonProperty("page")
        @JsonInclude(JsonInclude.Include.NON_NULL)
        private String page;

        /**
         * 这里的Object,可以是基础数据类型,也可以是Map
         */
        @JsonProperty("extras")
        @JsonInclude(JsonInclude.Include.NON_NULL)
        private Map extras;
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy