diff --git a/README.md b/README.md
index 905251e..034a496 100644
--- a/README.md
+++ b/README.md
@@ -15,13 +15,13 @@
## 1. 集成
引入sdk包
```xml
-
+
io.github.jpush
jiguang-sdk
- 5.1.11
+ 5.1.12
```
diff --git a/example-for-spring/pom.xml b/example-for-spring/pom.xml
index 5a174c5..ea3a086 100644
--- a/example-for-spring/pom.xml
+++ b/example-for-spring/pom.xml
@@ -13,7 +13,7 @@
io.github.jpush
example-for-spring
- 5.1.11
+ 5.1.12
8
@@ -26,7 +26,7 @@
io.github.jpush
jiguang-sdk
- 5.1.11
+ 5.1.12
diff --git a/jiguang-sdk/pom.xml b/jiguang-sdk/pom.xml
index 8a12a02..317fc12 100644
--- a/jiguang-sdk/pom.xml
+++ b/jiguang-sdk/pom.xml
@@ -7,13 +7,13 @@
io.github.jpush
jiguang-sdk-java
- 5.1.11
+ 5.1.12
../pom.xml
io.github.jpush
jiguang-sdk
- 5.1.11
+ 5.1.12
jar
diff --git a/jiguang-sdk/src/main/java/cn/jiguang/sdk/bean/push/PushSendParam.java b/jiguang-sdk/src/main/java/cn/jiguang/sdk/bean/push/PushSendParam.java
index e51b871..cf0fe78 100644
--- a/jiguang-sdk/src/main/java/cn/jiguang/sdk/bean/push/PushSendParam.java
+++ b/jiguang-sdk/src/main/java/cn/jiguang/sdk/bean/push/PushSendParam.java
@@ -16,7 +16,6 @@
@Data
public class PushSendParam {
-
@JsonProperty("cid")
@JsonInclude(JsonInclude.Include.NON_NULL)
private String cid;
@@ -37,36 +36,64 @@ public class PushSendParam {
@JsonProperty("platform")
private Object platform;
+ /**
+ * 推送参数
+ */
@JsonProperty("options")
@JsonInclude(JsonInclude.Include.NON_NULL)
private Options options;
+ /**
+ * 通知内容体,是被推送到客户端的内容。
+ * 与 message 一起二者必须有其一,可以二者并存。
+ */
@JsonProperty("notification")
@JsonInclude(JsonInclude.Include.NON_NULL)
private NotificationMessage notification;
+ /**
+ * 消息内容体,是被推送到客户端的内容。
+ * 与 notification 一起二者必须有其一,可以二者并存。
+ */
@JsonProperty("message")
@JsonInclude(JsonInclude.Include.NON_NULL)
private CustomMessage custom;
+ /**
+ * 实时活动内容体。
+ * 不可与 notification 或 message 等并存。
+ */
@JsonProperty("live_activity")
@JsonInclude(JsonInclude.Include.NON_NULL)
private LiveActivityMessage liveActivity;
+ /**
+ * 面向于通知栏消息类型,需搭配notification参数一起使用,对于通知权限关闭的用户可设置启用此功能。
+ * 不可与 message 同时并存。
+ */
@JsonProperty("inapp_message")
@JsonInclude(JsonInclude.Include.NON_NULL)
private InAppMessage inApp;
+ /**
+ * 自定义消息转厂商通知内容体。
+ * 与 message 一起使用。
+ */
@JsonProperty("notification_3rd")
@JsonInclude(JsonInclude.Include.NON_NULL)
private ThirdNotificationMessage thirdNotificationMessage;
+ /**
+ * 短信渠道补充送达内容体
+ */
@JsonProperty("sms_message")
@JsonInclude(JsonInclude.Include.NON_NULL)
private SmsMessage smsMessage;
+ /**
+ * 回调参数
+ */
@JsonProperty("callback")
@JsonInclude(JsonInclude.Include.NON_NULL)
private Callback callback;
-
}
diff --git a/jiguang-sdk/src/main/java/cn/jiguang/sdk/bean/push/message/custom/CustomMessage.java b/jiguang-sdk/src/main/java/cn/jiguang/sdk/bean/push/message/custom/CustomMessage.java
index 620edfd..3c9df30 100644
--- a/jiguang-sdk/src/main/java/cn/jiguang/sdk/bean/push/message/custom/CustomMessage.java
+++ b/jiguang-sdk/src/main/java/cn/jiguang/sdk/bean/push/message/custom/CustomMessage.java
@@ -10,32 +10,32 @@
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class CustomMessage {
-
- @JsonProperty("title")
- @JsonInclude(JsonInclude.Include.NON_NULL)
- public String title;
-
+ /**
+ * 消息内容本身。
+ */
@JsonProperty("msg_content")
@JsonInclude(JsonInclude.Include.NON_NULL)
public String content;
- @JsonProperty("alternate_title")
- @JsonInclude(JsonInclude.Include.NON_NULL)
- public String alternateTitle;
-
- @JsonProperty("alternate_content")
+ /**
+ * 消息标题。
+ */
+ @JsonProperty("title")
@JsonInclude(JsonInclude.Include.NON_NULL)
- public String alternateContent;
+ public String title;
+ /**
+ * 消息内容类型,开发者可根据自身业务定义具体类型。
+ */
@JsonProperty("content_type")
@JsonInclude(JsonInclude.Include.NON_NULL)
public String contentType;
/**
* 这里的Object,可以是基础数据类型
+ * JSON 格式的可选参数
*/
@JsonProperty("extras")
@JsonInclude(JsonInclude.Include.NON_NULL)
public Map extras;
-
}
diff --git a/jiguang-sdk/src/main/java/cn/jiguang/sdk/bean/push/message/notification/NotificationMessage.java b/jiguang-sdk/src/main/java/cn/jiguang/sdk/bean/push/message/notification/NotificationMessage.java
index 82600a1..2683a16 100644
--- a/jiguang-sdk/src/main/java/cn/jiguang/sdk/bean/push/message/notification/NotificationMessage.java
+++ b/jiguang-sdk/src/main/java/cn/jiguang/sdk/bean/push/message/notification/NotificationMessage.java
@@ -20,10 +20,6 @@ public class NotificationMessage {
@JsonInclude(JsonInclude.Include.NON_NULL)
private String alert;
- @JsonProperty("alternate_alert")
- @JsonInclude(JsonInclude.Include.NON_NULL)
- private String alternateAlert;
-
@JsonProperty("android")
@JsonInclude(JsonInclude.Include.NON_NULL)
private Android android;
@@ -40,112 +36,253 @@ public class NotificationMessage {
@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;
+ 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;
@@ -162,6 +299,9 @@ public static class Intent {
public static class IOS {
/**
* 这里的Object,可以是String类型,也可以是Map
+ * 这里指定内容将会覆盖上级统一指定的 alert 信息。
+ * 内容为空则不展示到通知栏。
+ * 支持字符串形式也支持官方定义的 alert payload 结构,在该结构中包含 title 和 subtitle 等官方支持的 key。
*/
@JsonProperty("alert")
@JsonInclude(JsonInclude.Include.NON_NULL)
@@ -169,38 +309,67 @@ public static class IOS {
/**
* 这里的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;
@@ -208,49 +377,89 @@ public static class IOS {
@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;
/**
- * 这里的Object,可以是基础数据类型,也可以是Map
+ * 测试消息标识:
+ * false:正常消息(默认值)
+ * true:测试消息
*/
- @JsonProperty("extras")
- @JsonInclude(JsonInclude.Include.NON_NULL)
- private Map extras;
-
@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:多文本样式
*/
@@ -260,6 +469,7 @@ public static class HMOS {
/**
* 这里的Object,可以是基础数据类型,也可以是Map
+ * 对应 style 的取值类型 2。
*/
@JsonProperty("inbox")
@JsonInclude(JsonInclude.Include.NON_NULL)
diff --git a/jiguang-sdk/src/main/java/cn/jiguang/sdk/bean/push/message/notification/ThirdNotificationMessage.java b/jiguang-sdk/src/main/java/cn/jiguang/sdk/bean/push/message/notification/ThirdNotificationMessage.java
index 8b98bf0..d4f4562 100644
--- a/jiguang-sdk/src/main/java/cn/jiguang/sdk/bean/push/message/notification/ThirdNotificationMessage.java
+++ b/jiguang-sdk/src/main/java/cn/jiguang/sdk/bean/push/message/notification/ThirdNotificationMessage.java
@@ -10,48 +10,102 @@
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class ThirdNotificationMessage {
-
+ /**
+ * 补发通知标题,如果为空则默认为应用名称。
+ */
@JsonProperty("title")
@JsonInclude(JsonInclude.Include.NON_NULL)
private String title;
+ /**
+ * 补发通知的内容,如果存在 notification_3rd 这个 key,content 字段不能为空,且值不能为空字符串。
+ */
@JsonProperty("content")
private String content;
+ /**
+ * 使用 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;
+ /**
+ * 桌面图标对应的应用入口 Activity 类,比如“com.test.badge.MainActivity”。
+ * 仅华为和荣耀通道推送时生效,此值如果填写非主 Activity 类,以厂商限制逻辑为准。
+ * 若需要实现角标累加功能,需配合 badge_add_num 使用,二者需要共存,缺少其一不可。
+ * 若需要实现角标固定值功能,需配合 badge_set_num 使用,二者需要共存,缺少其一不可。
+ */
@JsonProperty("badge_class")
@JsonInclude(JsonInclude.Include.NON_NULL)
private String badgeClass;
+ /**
+ * 设置角标数字累加值,在原角标的基础上进行累加,取值范围为:1-99。
+ * 此属性目前仅针对华为 EMUI 8.0 及以上、小米 MIUI 6 及以上、vivo、荣耀设备走厂商通道时生效。
+ * 此字段如果不填,表示不改变角标数字(小米设备由于系统控制,不论推送走极光通道下发还是厂商通道下发,即使不传递依旧是默认 +1 的效果)。
+ * 若设置了取值范围内的数字,下一条通知栏消息配置的 badge_add_num 数据会和原角标数量进行相加,建议取值为1。
+ * 举例:badge_add_num 取值为1,原角标数为2,发送此角标消息后,应用角标数显示为3。
+ * 针对华为/荣耀通道,如果 badge_set_num 与 badge_add_num 同时存在,则以 badge_set_num 为准。
+ */
@JsonProperty("badge_add_num")
@JsonInclude(JsonInclude.Include.NON_NULL)
private Integer badgeAddNumber;
+ /**
+ * 设置角标数字固定值,取值范围为:0-99。
+ * 此属性目前仅针对华为 EMUI 8.0 及以上、荣耀设备走厂商通道时生效,如果 badge_set_num 与 badge_add_num 同时存在,则以 badge_set_num 为准。
+ * 取值范围为:0-99,若设置了取值范围内的数字,对应下一条通知栏消息配置的 badge_set_num 数字则为角标数值,举例:badge_set_num 取值为 1,无论应用之前角标数为多少,发送此角标消息后,应用角标数均显示为1。
+ */
@JsonProperty("badge_set_num")
@JsonInclude(JsonInclude.Include.NON_NULL)
private Integer badgeSetNumber;
+ /**
+ * 填写 Android 工程中 /res/raw/ 路径下铃声文件名称,无需文件名后缀。
+ * 注意:针对 Android 8.0 以上,当传递了 channel_id 时,此属性不生效。
+ */
@JsonProperty("sound")
@JsonInclude(JsonInclude.Include.NON_NULL)
private String sound;
+ /**
+ * 根据 channel ID 来指定通知栏展示效果,不超过 1000 字节。
+ * Android 8.0 开始可以进行 NotificationChannel 配置:https://docs.jiguang.cn/jpush/client/Android/android_api#notificationchannel-%E9%85%8D%E7%BD%AE
+ */
@JsonProperty("channel_id")
@JsonInclude(JsonInclude.Include.NON_NULL)
private String channelId;
/**
* 这里的Object,可以是基础数据类型,也可以是Map
+ * 扩展字段;这里自定义 JSON 格式的 Key / Value 信息,以供业务使用。
*/
@JsonProperty("extras")
@JsonInclude(JsonInclude.Include.NON_NULL)
@@ -63,5 +117,4 @@ public static class Intent {
@JsonInclude(JsonInclude.Include.NON_NULL)
private String url;
}
-
}
diff --git a/jiguang-sdk/src/main/java/cn/jiguang/sdk/bean/push/message/sms/SmsMessage.java b/jiguang-sdk/src/main/java/cn/jiguang/sdk/bean/push/message/sms/SmsMessage.java
index 495f71b..7d1ba4c 100644
--- a/jiguang-sdk/src/main/java/cn/jiguang/sdk/bean/push/message/sms/SmsMessage.java
+++ b/jiguang-sdk/src/main/java/cn/jiguang/sdk/bean/push/message/sms/SmsMessage.java
@@ -10,25 +10,44 @@
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class SmsMessage {
-
- @JsonProperty("temp_id")
+ /**
+ * 短信发送的延迟时间,若在设定的时间内没有推送成功,则下发短信。
+ * 设置为 0,表示立即发送短信,即通知和短信并发。
+ * 设置不为 0,表示若在设定的时间内没有推送成功,则进行短信补发。
+ * 单位为秒,不能超过 24 小时。
+ * 该参数仅对 android 和 iOS 平台有效。
+ */
+ @JsonProperty("delay_time")
@JsonInclude(JsonInclude.Include.NON_NULL)
- private Integer tempId;
+ private Integer delayTime;
+ /**
+ * 签名 ID,该字段为空则使用应用默认签名。
+ */
@JsonProperty("signid")
@JsonInclude(JsonInclude.Include.NON_NULL)
private Integer signId;
- @JsonProperty("delay_time")
- @JsonInclude(JsonInclude.Include.NON_NULL)
- private Integer delayTime;
-
- @JsonProperty("active_filter")
+ /**
+ * 短信补充的内容模板 ID,没有填写该字段即表示不使用短信补充功能。
+ */
+ @JsonProperty("temp_id")
@JsonInclude(JsonInclude.Include.NON_NULL)
- private Boolean activeFilter;
+ private Integer tempId;
+ /**
+ * 短信模板中的参数。
+ */
@JsonProperty("temp_para")
@JsonInclude(JsonInclude.Include.NON_NULL)
private Map tempParams;
+ /**
+ * active_filter 字段用来控制是否对补发短信的用户进行活跃过滤。
+ * 默认为 true ,做活跃过滤。
+ * 为 false,则不做活跃过滤。
+ */
+ @JsonProperty("active_filter")
+ @JsonInclude(JsonInclude.Include.NON_NULL)
+ private Boolean activeFilter;
}
diff --git a/jiguang-sdk/src/main/java/cn/jiguang/sdk/bean/push/options/Options.java b/jiguang-sdk/src/main/java/cn/jiguang/sdk/bean/push/options/Options.java
index a7fb9f3..e3ed32a 100644
--- a/jiguang-sdk/src/main/java/cn/jiguang/sdk/bean/push/options/Options.java
+++ b/jiguang-sdk/src/main/java/cn/jiguang/sdk/bean/push/options/Options.java
@@ -11,61 +11,94 @@
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class Options {
-
+ /**
+ * 纯粹用来作为 API 调用标识,API 返回时被原样返回,以方便 API 调用方匹配请求与返回。
+ * 值为 0 表示该 messageid 无 sendno,所以字段取值范围为非 0 的 int。
+ */
@JsonProperty("sendno")
@JsonInclude(JsonInclude.Include.NON_NULL)
private Long sendNo;
- @JsonProperty("override_msg_id")
- @JsonInclude(JsonInclude.Include.NON_NULL)
- private Long overrideMsgId;
-
- @JsonProperty("apns_production")
- @JsonInclude(JsonInclude.Include.NON_NULL)
- private Boolean apnsProduction;
-
+ /**
+ * 推送当前用户不在线时,为该用户保留多长时间的离线消息,以便其上线时再次推送。
+ * 默认 86400 (1 天),普通用户最长 3 天, VIP 用户最长 10 天。设置为 0 表示不保留离线消息,只有推送当前在线的用户可以收到。
+ * 该字段对 iOS 的 Notification 消息无效。
+ */
@JsonProperty("time_to_live")
@JsonInclude(JsonInclude.Include.NON_NULL)
private Long timeToLive;
- @JsonProperty("alternate_set")
- @JsonInclude(JsonInclude.Include.NON_NULL)
- private Boolean alternateEnable;
-
- @JsonProperty("portal_extra")
- @JsonInclude(JsonInclude.Include.NON_NULL)
- private PortalExtra portalExtra;
-
- @JsonProperty("target_event")
+ /**
+ * 如果当前的推送要覆盖之前的一条推送,这里填写前一条推送的 msg_id 就会产生覆盖效果,即:
+ * 该 msg_id 离线收到的消息是覆盖后的内容,即使该 msg_id Android 端用户已经收到,如果通知栏还未清除,则新的消息内容会覆盖之前这条通知。
+ * 覆盖功能起作用的时限是:1 天,如果在覆盖指定时限内该 msg_id 不存在,则返回 1003 错误,提示不是一次有效的消息覆盖操作,当前的消息不会被推送。
+ * 该字段仅对 Android 有效仅支持极光通道、小米通道、魅族通道、OPPO 通道、FCM 通道、荣耀通道和华为通道(EMUI10 及以上的设备)。
+ */
+ @JsonProperty("override_msg_id")
@JsonInclude(JsonInclude.Include.NON_NULL)
- private List targetEvent;
+ private Long overrideMsgId;
- @JsonProperty("third_party_channel")
+ /**
+ * 该字段仅对 iOS 的 Notification 有效,如果不指定则为推送生产环境。注意:JPush 服务端 SDK 默认设置为推送 “开发环境”。
+ * true:表示推送生产环境。
+ * false:表示推送开发环境。
+ */
+ @JsonProperty("apns_production")
@JsonInclude(JsonInclude.Include.NON_NULL)
- private Map thirdPartyChannel;
+ private Boolean apnsProduction;
+ /**
+ * APNs 新通知如果匹配到当前通知中心有相同 apns-collapse-id 字段的通知,则会用新通知内容来更新它,并使其置于通知中心首位。
+ * collapse id 长度不可超过 64 bytes。
+ */
@JsonProperty("apns_collapse_id")
@JsonInclude(JsonInclude.Include.NON_NULL)
private String apnsCollapseId;
+ /**
+ * 又名缓慢推送,把原本尽可能快的推送速度,降低下来,给定的 n 分钟内,均匀地向这次推送的目标用户推送;最大值为 1400。
+ * 最多能同时存在 20 条定速推送。
+ * 未设置则不是定速推送。
+ */
@JsonProperty("big_push_duration")
@JsonInclude(JsonInclude.Include.NON_NULL)
private Integer bigPushDuration;
+ /**
+ * 参考:https://docs.jiguang.cn/jpush/server/push/rest_api_v3_push#third_party_channel-%E8%AF%B4%E6%98%8E
+ */
+ @JsonProperty("third_party_channel")
+ @JsonInclude(JsonInclude.Include.NON_NULL)
+ private Map thirdPartyChannel;
+
+ /**
+ * 极光不对指定的消息类型进行判断或校准,会以开发者自行指定的消息类型适配 Android 厂商通道。不填默认为 0。
+ * 0:代表运营消息。
+ * 1:代表系统消息。
+ * 此字段优先级最高,会覆盖 options.third_party_channel.vivo.classification 设置的值。
+ */
@JsonProperty("classification")
@JsonInclude(JsonInclude.Include.NON_NULL)
private Integer classification;
- @JsonProperty("geofence")
+ /**
+ * 目标转化事件支持传递「自定义事件」和「极光预置事件」,目前支持Android和iOS平台(要求JPush SDK ≥ 5.0.0 ,且JCore ≥ 4.2.0),支持通知消息和应用内消息两种消息类型。
+ * 自定义事件:需集成极光分析SDK,开发者在极光分析产品中自行创建的业务事件(如:加入购物车、浏览商品等),详情参考 如何创建自定义事件 和 SDK如何上报自定义事件
+ * 极光预置事件:极光推送SDK默认支持,无需开发者创建,也无需集成极光分析SDK,系统已预置;目标支持的预置事件有2个:jg_app_show(应用切换到前台)、jg_app_hide(应用切换到后台)。
+ * 代码示例:{"options": {"target_event": ["jg_app_show"]}}
+ */
+ @JsonProperty("target_event")
@JsonInclude(JsonInclude.Include.NON_NULL)
- private Map geofence;
+ private List targetEvent;
/**
* 测试消息标识,指定鸿蒙平台通知和自定义消息推送配置,优先级大于hmos通知体内的test_message字段
+ * false:正常消息(默认值)
+ * true:测试消息
*/
@JsonProperty("test_message")
@JsonInclude(JsonInclude.Include.NON_NULL)
- private Boolean testMessage;
+ private Boolean isTest;
/**
* 华为回执ID,指定鸿蒙平台通知和自定义消息推送配置,优先级大于hmos通知体内的receipt_id字段
@@ -74,12 +107,35 @@ public class Options {
@JsonInclude(JsonInclude.Include.NON_NULL)
private String receiptId;
- @Data
- @JsonIgnoreProperties(ignoreUnknown = true)
- public static class PortalExtra {
- @JsonProperty("task")
- @JsonInclude(JsonInclude.Include.NON_NULL)
- private String task;
- }
+ /**
+ * true-使用亮屏推送,false-不使用亮屏推送,默认值false。
+ * 此功能为增值付费服务,需要额外申请权限。
+ * 当使用亮屏推送时,建议同时设置need_backup=true。
+ * 此功能仅支持单纯通知消息,不支持自定义消息或者通知+自定义消息推送,否则请求会返回 code 码 1035。
+ * 此功能不支持定速推送,否则请求会返回 code 码 1035。
+ * 亮屏推送支持的时间范围是每天 7:00 - 22:00
+ * 亮屏推送对于Android厂商用户的下发策略固定为在线走极光,离线走厂商。
+ */
+ @JsonProperty("active_push")
+ @JsonInclude(JsonInclude.Include.NON_NULL)
+ private Boolean activePush;
+ /**
+ * true-使用亮屏兜底策略,false-不使用亮屏兜底策略,默认值false。
+ * 若此字段指定为true,则active_push字段值必须为true。
+ * 是否使用兜底策略主要是确认离线消息到期后的处理逻辑。
+ * 当使用兜底策略下发时:如果是厂商用户(离线消息到期后 0-5 分钟之内通过厂商通道下发),如果是非厂商用户(离线消息到期后,如果用户是在线状态则直接下发;如果用户离线则丢弃)。
+ * 例如上午 8 点推送此条消息,设置了离线时间 2 小时。在 8:00 - 10:00 内,设备亮屏则会触发消息下发。剩余未发送的用户,在到达10:00后,0-5 分钟之内剩余消息走厂商通道下发。
+ * 当不使用兜底策略下发时:离线消息到期后未下发的直接丢弃,不区分是否厂商用户。
+ */
+ @JsonProperty("need_backup")
+ @JsonInclude(JsonInclude.Include.NON_NULL)
+ private Boolean needBackup;
+
+ /**
+ * 需先通过极光 WebPortal 创建计划标识值,创建步骤参考推送计划文档:https://docs.jiguang.cn/jpush/console/config_manage/push_plan
+ */
+ @JsonProperty("business_operation_code")
+ @JsonInclude(JsonInclude.Include.NON_NULL)
+ private String business_operation_code;
}
diff --git a/pom.xml b/pom.xml
index 4e73e9d..84dacc3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
io.github.jpush
jiguang-sdk-java
- 5.1.11
+ 5.1.12
pom
Jiguang SDK For Rest Api