极光推送

进行推送的关键在于构建一个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当前支持AndroidiOSWindows Phone三个平台的推送。其关键字分别为:”android””ios””winphone”

推送到所有平台:{“platform”:”all”}

指定特定推送平台:{“platform”:[“android”,”ios”]} 

audience

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

   all

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

广播外的设备选择方式,如下几种:

关键字 含义 类型 说明 备注
tag JSON Array 标签 数组。多个标签之间是OR的关系,即取并集

用标签来进行大规模的设备属性、用户属性分群。一次推送最多20个。

有效的tag组成:字母(区分大小写)、数字、下划线、汉字。

限制:每一个tag的长度限制为40字节。(判断长度需采用UTF-8编码)
tag_and JSON Array 标签 AND 数组。多个标签之间是AND关系,即取交集。 注册与tag区分。一次推送最多20个。
alias JSON Array 别名 数组。多个别名之间是OR关系,即取并集。

用别名来标识一个用户。一个设备只能绑定一个别名,但多个设备可以绑定同一个别名。一次推送最多1000个。

有效的alias组成:字母(区分大小写)、数字、下划线、汉字。

限制:每一个tag的长度限制为40字节。(判断长度需采用UTF-8编码)
registration_id JSON 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平台上的通知。

支持的字段有:

关键字 类型 选项 含义 说明
alert string 必填 通知内容 这里指定了,则会覆盖上级统一的alert信息;内容可以为空字符串,则表示不展示到通知栏
title string 可选 通知标题 如果指定了,则通知到原来展示App名称的地方,将展示成这个字段
builder_id int 可选 通知栏样式ID Android SDK可设置通知栏样式,这里根据样式ID来指定该使用哪套样式
extras JSON 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收到消息内容后透传给AppApp需要自行处理。

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

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

消息包含如下字段:

关键字
类型 选项 含义
msg_content String 必填 消息内容本身
title String 可选 消息标题
content_type String 可选 消息内容类型
extras JSON Object 可选 JSON格式的可选参数

options

推送可选项:

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

APNS:苹果推送通知服务


你可能感兴趣的:(极光推送)