【极光推送】给指定用户发送消息

前言

如果你还没有搭建极光推送服务器,建议你根据情况,先从服务器搭建开始。

前文标题:

《【极光推送】jpush服务端开发详尽过程》

链接:

http://ningmengjiabing.blog.163.com/blog/static/20484719820163194218972/

如果你已经完成推送服务器的搭建,最后在验证推送功能时,返回的options大致格式应该如下所示:

{"sendno":1525934458,"apns_production":false}

出现这个东东的原因:

1. 我们并未在极光推送(https://www.jpush.cn)的控制台为Android以及iOS应用进行应用登记信息。

正文

一、 控制台操作

1. 在控制台登记相关应用配置信息。

二、 客户端集成

1. 客户端上需要增加Android版本或是iOS版本的SDK。下载地址:https://www.jpush.cn/common/products。位置如下图所示:

1. 你可以在极光推送官方文档中,找到相关平台的SDK集成方式,链接为:http://docs.jpush.io/

2. 具体的SDK集成方式再次不做赘述,因为笔者不是专业的移动开发人士,甚至连服务器开发也是临时凑热闹搭把手而已。

三、 客户端开发

想要实现给指定人群推送消息的功能,首先要对推送人群方式进行一个简单的了解。深入的内容可以参考社区中极光推送博客的《推送人群的选择 – 技术篇》文章,地址是http://blog.jpush.cn/push_audience_tech/。

这里只是对具体场景应用简单描述,设计一下。

我们的消息分为三类,一类是通知消息,给所有人。另一类是具体的工作安排,给某一部门的人。还有一类是具体的个人消息,如给领导发请假通知等。所以我们最终决定使用的方式包括一下方式:

1) 广播:顾名思义就是给所有人群发消息

2) 别名(alias):给指定id的终端设备发送消息。别名需要客户端进行设置。

3) 标签(tag):分组发送消息,理解起来应该类似于微信建了一个群聊的赶脚。标签需要客户端进行设置。

客户端开发步骤简述

1. 集成SDK(之前已经完成)

2. 启动后,到服务器上注册,并获取注册ID(RegistrationID)

3. 调用Method - setAliasAndTags (with Callback)函数完成别名和标签的设置。

注1:这里,我们应用的别名就是员工ID,标签就是部门ID。以此来进行分类推送

注2:具体的参数定义可参照官方文档《别名与标签 API》一文。链接地址为:http://docs.jpush.cn/pages/viewpage.action?pageId=557241

注3:只有call back返回0时才设置成功,其他结果均会让服务器返回1011错误。

四、 服务端开发

1. 设置推送平台

setPlatform(Platform.all()) //设置所有平台

setPlatform(Platform.android())//设置android

setPlatform(Platform.android_ios())//设置Android和iOS

setPlatform(Platform.ios())//设置iOS

2. 设置受众(收到推送消息的人群)

setAudience(Audience.all())设置所有受众

setAudience(Audience.tag("tag1","tag2"))//设置tag为tag1,tag2的受众,群发

setAudience(AudienceTarget.alias("alias1", "alias2")) //设置别名alias为alias1,alias2的受众,单发

注1: 更多的发送方式,可以到官网上去找文档,可以这是多个条件混合发送。由于本项目中没有那么复杂的应用需求,所以此处省略不提。

3. 设置通知方式

setNotification(Notification.alert(ALERT)) //设置通用通知,以alert方式提醒

setNotification(Notification.android(ALERT, TITLE, null))//增加标题

setNotification(Notification.newBuilder()

.addPlatformNotification(IosNotification.newBuilder()

.setAlert(ALERT)

.setBadge(5)

.setSound("happy")

.addExtra("from", "JPush")

.build())

.build())//不管什么东西,iOS的总要复杂一些。

注1: 可以不设置通知方式,让其使用默认的通知方式进行消息推送

4. 设置通知内容

setMessage(Message.content(MSG_CONTENT))//MSG_CONTENT中就是通知内容。

5. 设置控制选项

setOptions(M\options(sendno, time_to_live, override_msg_id, apns_production,big_push_duration))

当前包含如下几个可选项:

sendno int 可选 推送序号 纯粹用来作为 API 调用标识,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 表示要推送开发环境; 如果不指定则为推送生产环境。

注:JPush 官方 API LIbrary (SDK) 默认设置为推送 “开发环境”。

big_push_duration int 可选 定速推送时长(分钟) 又名缓慢推送,把原本尽可能快的推送速度,降低下来,在给定的 n 分钟内,均匀地向这次推送的目标用户推送。最大值为 1440。未设置则不是定速推送。

6. 开始推送

sendPush(PushPayload类型参数)

7. 获取返回结果

PushResult类型参数,可以回去到返回值。结果大致格式如下:

{"msg_id":3270259240,"sendno":34919015}

8. 附上两段分标签以及分别名推送的函数代码

//description:自定义推送函数--分组推送
//createTime: 04-21
//author: xk
public static PushPayload buildPushObject_android_and_iosByTag(String tag,String title,String content) {
return PushPayload.newBuilder()
.setPlatform(Platform.android_ios())
.setAudience(Audience.tag(tag))
.setNotification(Notification.newBuilder()
.setAlert(content)
.addPlatformNotification(AndroidNotification.newBuilder()
.setTitle(title).build())
.addPlatformNotification(IosNotification.newBuilder()
.incrBadge(1)
.addExtra(title, content).build())
.build())
.build();
}

//description:自定义推送函数--按别名推送
//createTime: 04-21
//author: xk
public static PushPayload buildPushObject_android_and_iosByAlias(String alias,String title,String content) {
return PushPayload.newBuilder()
.setPlatform(Platform.android_ios())
.setAudience(Audience.alias(alias))
.setNotification(Notification.newBuilder()
.setAlert(content)
.addPlatformNotification(AndroidNotification.newBuilder()
.setTitle(title).build())
.addPlatformNotification(IosNotification.newBuilder()
.incrBadge(1)
.addExtra(title, content).build())
.build())
.build();
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-11 09:14:54

【极光推送】给指定用户发送消息的相关文章

极光推送--服务器端

极光推送,由名字可知是一款推送软件.由于android自带的推送在大陆被墙掉了,所以在国内用第三方推送的用户特别多,比较有名的有极光推送.百度云推送.推送的主要用途是用来推送消息给客户端,比如说推送一个消息给android客户端或才iphone客户端,让所有的用户都接到这个通知. 我现在在写的这个程序是利用极光推送,写一个聊天程序,例用极光推送可以发到指定某人.某组或者全体用户.客户端及服务器端有各自对应的jar包,现在这里主要讲解服务器端的编码. 服务器端发送到指定用户时,可以使用方法Audi

【Android应用开发】 推送原理解析 极光推送使用详解 (零基础精通推送)

作者 : octopus_truth 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/45046283 推送技术产生场景 : -- 服务器端主动性 : 客户端与服务器交互都是客户端主动的, 服务器一般不能主动与客户端进行数据交互, 因为服务器端无法得知客户端的 IP 地址 及 状态; -- 数据实时性 : 如果服务器端有紧急数据要传递给客户端, 就必须主动向客户端发送数据; -- 基本原理 : 使客户端实时获取服务器端消息,

推送原理解析 极光推送使用详解

推送原理解析 极光推送使用详解 原军锋 12016.09.22 18:10:07字数 5,705阅读 19,494 推送技术产生场景: --服务器端主动性: 客户端与服务器交互都是客户端主动的, 服务器一般不能主动与客户端进行数据交互, 因为服务器端无法得知客户端的 IP 地址 及 状态; --数据实时性: 如果服务器端有紧急数据要传递给客户端, 就必须主动向客户端发送数据; --基本原理: 使客户端实时获取服务器端消息, Pull 方式, 小周期轮询, 费电费流量; 另一个就是 Push 方式

极光推送的代码实现

一:去官网下载SDK或者直接在maven项目中进行相应配置 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springfram

使用极光推送实现分组发送和服务端集成

推送功能在手机应用开发中越来越重要,几乎成为所有App必备的功能,由于Android本身没有消息推送机制,通常采用的是基于XMPP协议的推送,但这种开发很麻烦,因此在市场上应运而生了提供消息推送服务的诸多产品,例如:百度云.个推.极光等. 极光推送正是一个整合了Android推送.iOS推送的统一推送服务平台.下面讲解一下如何使用极光实现消息推送应用,并重点讲解一下如何实现向分组发送消息及推送服务端和自身应用集成,具体实现过程如下: 目录: 一.注册应用 二.环境搭建 三.Android开发,实

.net平台借助第三方推送服务在推送Android消息(极光推送)

.net平台借助第三方推送服务在推送Android消息(极光推送) 最近做的.net项目(Windows Service)需要向Android手机发送推送消息,真是有点困难,没有搞过就不停的搜文档,最后看到了一个开源项目PushSharp,可以在.net平台推送IOS,Android,Windows Phone等设备消息,大喜,然后先做了IOS的,成功了,但是做Android的时候遇到了问题,一直推送不成功,程序执行了,但是推送一直出不来,后来费劲的在网上搜,没有找到,最后放弃使用这种推送And

用JPUSH极光推送实现服务端向安装了APP应用的手机推送消息(C#服务端接口)

这次公司要我们做一个功能,就是当用户成功注册以后,他登录以后要收到消息,当然这个消息是安装了我们的手机APP应用的手机咯. 极光推送的网站的网址是:https://www.jpush.cn/ 极光推送的官方API以及帮助文档都在这里:http://docs.jpush.cn/display/dev/Index 其中服务端的接口以及示例代码都在这里:http://docs.jpush.cn/display/dev/Server-SDKs 大家有兴趣的可以看看,因为这次我做的不是客户端APP,所以一

使用极光推送(www.jpush.cn)向安卓手机推送消息【服务端向客户端主送推送】C#语言

链接网址:http://www.cnblogs.com/yangwujun/p/5973120.html 在VisualStudio2010中新建网站JPushAndroid.添加引用json帮助类库Newtonsoft.Json.dll. 在web.config增加appkey和mastersecret,可以在极光官网www.jpush.cn申请.web.config源码: <?xml version="1.0"?> <!-- 有关如何配置 ASP.NET 应用程序

用Jpush极光推送实现实时抓取用户Log到七牛云服务器.md

##场景## 我们的app常常会出现某个特定用户的手机出现异常情况,(注意不是所有用户,特定机型特定用户)如果用友盟,那么多log你也抓不完 ,看不到log就无法解决问题. 那么问题来了,如何实现对特定某个用户实时抓取log呢,比如我就想要用户id为 **lixiaodaoaaa**这个用户的日志信息呢?(用户自己不知道我们要抓她的log,对了你可以干点邪恶的事) 发送通知给他,而接收到通知,设备可以啥都不提示,可以干点邪恶的事,不过我想想还是算了.(他的log.我们默认log都会用LogUti