PushMessage

推送消息Wrapper

无论一条消息的目标客户端和推送方式如何,推送消息都共享一个公共的结构,我们使用PushMessage类来封装它们。

PushMessage可以设置展示时间窗口,有三种不同的消息类型:Notification, Transmission, 和 revoke。三种消息类型之间相互冲突,一条推送消息只能设置为其中的一种。

构造推送消息

库中提供了一个PushMessageBuilder类以通过链式语法构造新的推送消息。

一个简单的例子:

PushMessage msg = new PushMessageBuilder()
                .transmission("Do not answer! Do not answer! Do not answer!")
                .setDuration(1590547347000L, 1590633747000L)
                .build();

Methods

setDuration(long startTime, long endTime)

给消息设置展示时间段,起止时间皆为毫秒时间戳。起始间隔需大于 10 分钟。

notification(Notification notification)

将消息设置为 Notification 类型,并将notification添加为消息主体。

安卓与鸿蒙支持,与 Transmission 和 Revoke 冲突。

Notification类型消息的构造参见下方的 构造 Notification.

transmission(String transmission)

将消息设置为 Transmission 类型,并将字符串透传消息transmission添加为消息主体。

安卓和iOS支持,与 Transmission 和 Revoke 冲突。在测试中,直接输入中文句子会报错,带有中文字段的 Json 可以成功发送。

revoke(Revoke revoke)

将消息设置为 Revoke 类型,并将revoke添加为消息主体。

用于撤回个推通道的消息,与 Notification 和 Transmission 冲突。

Revoke类型指令的构造参见下方的 构造 Revoke.

build()

返回构造完成的PushMessage消息Wrapper.


构造 Notification

库中提供了一个NotificationBuilder类以通过链式语法构造 Notification 类型的消息主体。

一个简单的例子:

Notification notification = new NotificationBuilder()
                .init("VE Day- It's All Over", "All quiet till 9p.m.", "url")
                .setAction("www.dailymail.co.uk")
                .build();

Methods

init(String title, String body, String click_type)

必需,设置消息的标题title,内容body和点击通知后续动作的类型click_type.

后续动作click_type的值与接下来的setAction方法相关,请参考setAction方法下的对照表。

setAction(String action)

某些 click_type 下必需,设置了点击通知之后的具体后续动作内容,与click_type的对照关系如下:

click_type
入参 action 的值
描述

intent

安卓 intent:// 链接或鸿蒙 want (鸿蒙还未实装)

安卓和鸿蒙可用,点击之后打开应用内特定页面

url

可访问的链接

点击之后打开链接

payload

自定义透传消息

透传消息并启动应用

payload_custom

自定义透传消息

透传消息但不启动应用

startapp

无需使用此方法

启动应用首页

none

无需使用此方法

无操作

setBigText(String big_text)

给通知消息添加长文本,与setBigImage冲突。

setBigImage(String big_image)

给通知消息添加大图,big_image为大图 url 地址,与setBigText冲突。

setLogo(String logo,String logo_url)

设定通知的图标,logo为图标的文件名(包含扩展名),logo_url为图标的 url 地址。

setChannel(String channel_id, String channel_name,int channel_level)

设定通知渠道的 id channel_id, 名称channel_name, 和渠道的重要性级别channel_level.

渠道重要性级别channel_level参考(Android 8.0 以上):

级别
声音
振动
锁屏提示
通知栏提示
唤醒屏幕
亮屏时弹出

0

1

2

3

4

setNotifyId(int notify_id)

设定一个 notify_id, 在两条消息具有相同的 notify_id 时,新的消息会覆盖旧的消息。

setRing(String ring_name)

只支持个推通道。设定通知铃声,ring_name为不包含扩展名的铃声文件名。

setBadge(int badge_add_num)

只支持华为和荣耀。让 App 角标显示的数字增加badge_add_num.

setThreadId(String thread_id)

只支持安卓个推通道。设定一个 thread_id, 在消息具有相同的 thread_id 时,会被折叠成合并通知。

setCategory(String category)

只支持华为。华为的消息分类,未实装。

build()

返回构造完成的Notification消息.


构造 Revoke

同样地,库中也提供了RevokeBuilder以链式语法构造 Revoke 类型的消息主体。

一个例子:

Revoke revoke = new RevokeBuilder()
                .init("RASA_0427_7047196a938c339f79cdf84d0a4568c4")
                .forceRevoke()
                .build();

Methods

init(String old_task_id)

必需,传入要撤回的消息发送时返回的 taskId.

forceRevoke()

使用forceRevoke时,如果个推没有查询到传入的 taskId 对应的推送任务,将会强制撤回当前 App 的所有通知消息。

build()

返回构造完成的Revoke指令.

最后更新于