您的位置:首页 > 其它

极光推送

2016-02-20 00:00 295 查看
进行推送的关键在于构建一个PushPayload对象。以下示例一般的构建对象的用法。

1、快速地构建推送对象:所有平台,所有设备,内容为ALERT的通知:

publicstatic PushPayload buildPushObject_all_all_alert(){

return PushPayload.alertAll(ALERT);

}

2、构建推送对象:所有平台,推送目标是别名为”alias1”,通知内容为ALERT。

publicstatic PushPayload buildPushObject_all_alias_alert() {

return PushPayload.newBuilder()

.setPlatform(Platform.all())

.setAudience(Audience.alias("alias1"))

.setNotification(Notification.alert(ALERT))

.build();

}

3、构建推送对象:平台是Android,推送目标是tag为”tag1”的设备,内容是Android通知ALERT,并且标题为TITLE。

publicstatic PushPayload buildPushObject_android_tag_alertWithTitle(){

return PushPayload.newBuilder()

.setPlatform(Platform.android())

.setAudience(Audience.tag("tag1"))

.setNotification(Notification.android(ALERT, TITLE, null))
.build();

}

4、//构建推送对象:平台是 iOS,推送目标是 "tag1", "tag_all" 的交集,推送内容同时包括通知与消息 -

//通知信息是 ALERT,角标数字为 5,通知声音为 "happy",并且附加字段 from = "JPush";消息内容是 MSG_CONTENT。

//通知是 APNs 推送通道的,消息是 JPush 应用内消息通道的。APNs 的推送环境是“生产”(如果不显式设置的话,Library 会默认指定为开发)

publicstatic PushPayload buildPushObject_ios_tagAnd_alertWithExtrasAndMessage(){

return PushPayload.newBuilder()

.setPlatform(Platform.ios())

.setAudience(Audience.tag_and("tag1","tag_all"))

.setNotification(Notification.newBuilder()

.addPlatformNotification(IosNotification.newBuilder()
.setAlert(ALERT)

.setBadge(5)

.setSound("happy")

.addExtra("from", "JPush")

.build())

.build())

.setMessage(Message.content(MSG_CONTENT))

.setOptions(Options.newBuilder()

.setApnsProduction(true)

.build())

.build();

}

5、//构建推送对象:平台是Andorid与 iOS,推送目标是("tag1" 与 "tag2" 的并集)且("alias1" 与 "alias2" 的并集),

//推送内容是 - 内容为 MSG_CONTENT 的消息,并且附加字段 from = JPush。
publicstatic PushPayload buildPushObject_ios_audienceMore_messageWithExtras() {

return PushPayload.newBuilder()

.setPlatform(Platform.android_ios())

.setAudience(Audience.newBuilder()

.addAudienceTarget(AudienceTarget.tag("tag1", "tag2"))
.addAudienceTarget(AudienceTarget.alias("alias1", "alias2"))
.build())

.setMessage(Message.newBuilder()

.setMsgContent(MSG_CONTENT)

.addExtra("from", "JPush")

.build())

.build();

}
进行推送的关键在于构建一个 PushPayload 对象。推送如下:
publicvoid push(){
JPushClient jPushClient = new JPushClient(masterSecret, appKey, 3);
PushPayload pushPayload = buildPushObject_all_all_alert();

try{

PushResult pushResult = jPushClient.sendPush(pushPayload);

}catch(Exception e){

e.printStackTrace();

}

}

platform

JPush当前支持Android、iOS、Windows Phone三个平台的推送。其关键字分别为:”android”、”ios”、”winphone”。
推送到所有平台:{“platform”:”all”}。
指定特定推送平台:{“platform”:[“android”,”ios”]}
audience

推送设备对象,表示一条推送可以被推送到哪些设备列表。确认推送设备对象,JPush提供了多种方式,如:别名、标签、注册ID、分群、广播等。
all

如果要发广播(全部设备),则直接写”all”。

广播外的设备选择方式,如下几种:
关键字含义类型说明备注
tagJSON Array标签数组。多个标签之间是OR的关系,即取并集用标签来进行大规模的设备属性、用户属性分群。一次推送最多20个。
有效的tag组成:字母(区分大小写)、数字、下划线、汉字。
限制:每一个tag的长度限制为40字节。(判断长度需采用UTF-8编码)
tag_andJSON Array标签 AND数组。多个标签之间是AND关系,即取交集。注册与tag区分。一次推送最多20个。
aliasJSON Array别名数组。多个别名之间是OR关系,即取并集。用别名来标识一个用户。一个设备只能绑定一个别名,但多个设备可以绑定同一个别名。一次推送最多1000个。
有效的alias组成:字母(区分大小写)、数字、下划线、汉字。
限制:每一个tag的长度限制为40字节。(判断长度需采用UTF-8编码)
registration_idJSON Array注册ID数组。多个注册ID之间是OR关系,即取并集。设备标识。一次推送最多1000个
这几种类型可以并存。并存时多项的隐含关系是AND,及取交集。
推送给全部(广播):
{
“platform”:”all”,
“audience”:”all”,
“notification”:{

“alert”:”Hi,JPush”,
“android”:{},
“ios”:{
“extras”:{“newsid”:321}
}
}
}

推送给多个标签(只要在任何一个标签范围内都满足):在深圳、广州、或者北京
{
“audience”:{
“tag”:[“深圳”,”广州”,”北京”]
}
}
推送给多个标签(需要同时在多个标签范围内):在深圳并且是“女”
{
“audience”:{
“tag_and”:[“深圳”,”女”]
}
}
推送给多个别名:
{
“audience”:{
“alias”:[“4314”,”892”,”4531”]
}
}

推送给多个注册ID:
{
“audience”:{
“registration_id”:[“2342aasd23”,”7878565qew”,”3234sfds”]
}
}
可同时推送指定多类推送目标:在深圳或者广州,并且是“女”“会员”
{
“audience”:{
“tag”:[“深圳”,”广州”]
“tag_and”:[“女”,”会员”]
}
}
notification

“通知”对象,的一条推送的实体内容对象之一(另一个是”消息”),是会作为”通知”推送到客户端的。
其下属性包含4种,3个平台属性,以及一个”alert”属性。
alert:通知的内容在各个平台上,都可能只有这一个最基本的属性”alert”。
这个位置的”alert”属性(直接在notification对象下),是一个快捷定义,各个平台的alert信息如果都一样,则不可定义。如果各平台有定义,则覆盖这里的定义。
{
“notification”:{
“alert”:”Hello,JPush”
}
}
上面定义的notification对象,将被推送到”platform”指定的多个平台,并且其通知alert信息都一样。
android

Android平台上的通知。

支持的字段有:

关键字类型选项含义说明
alertstring必填通知内容这里指定了,则会覆盖上级统一的alert信息;内容可以为空字符串,则表示不展示到通知栏
titlestring可选通知标题如果指定了,则通知到原来展示App名称的地方,将展示成这个字段
builder_idint可选通知栏样式IDAndroid SDK可设置通知栏样式,这里根据样式ID来指定该使用哪套样式
extrasJSON Object可选扩展字段这里自定义JSON格式的key/value信息,以供业务使用
{

“notification”:{

“android”:{

“alert”:”hello,JPush”,

“title”:”JPush test”,

“builder_id”:3,

“extras”:{

“news_id”:134,
“my_key”:”a value”
}
}
}
}

message

应用内消息。或者称作:自定义消息,透传消息。

此部分内容不会展示到通知栏上,JPush SDK收到消息内容后透传给App。App需要自行处理。

iOS平台上,有此部分内容,才会推送应用内消息通道。

Windows Phone平台上,暂不支持应用内消息。

消息包含如下字段:

关键字
类型选项含义
msg_contentString必填消息内容本身
titleString可选消息标题
content_typeString可选消息内容类型
extrasJSON Object可选JSON格式的可选参数
options

推送可选项:
关键字类型选项含义说明
sendnoint可选推送序号作为API调用标识,API返回时被原样返回
time_to_liveint可选离线消息保留时长(秒)推送当前用户不在线时,为该用户保留多长时间的离线消息,以便其上线时再次推送。默认为86400(1天),最长10天。设置为0表示不保留离线消息,只有推送当前在线的用户可以收到
override_msg_id
long可选要覆盖的消息ID如果当前的推送要覆盖之前的一条推送,这里填写前一条推送的msg_id就会产生覆盖消息,即:1)该msg_id离线收到的消息是覆盖后的内容;2)即使该msg_id Android端用户已经收到,如果通知栏还未消除,则新的消息内容会覆盖之前这条通知;覆盖功能起作用的时限是:1天。如果在覆盖指定时限内该msg_id不存在,则返回1003错误,提示不是一次有效的消息覆盖操作,当前的消息不会被推送
apns_productionboolean可选APNs是否生产环境true表示推送生产环境,false表示要推送开发环境,如果不指定则为推送生产环境。官方API默认为开发环境
big_push_durationint可选定速推送时长(分钟)又名缓慢推送,把原本尽可能快的推送速度,降低下来,给定的n分钟内,均匀地向这次推送的目标用户推送。最大值为1400,未设置则不是定速推送
APNS:苹果推送通知服务
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: