qdjianghao 2015-1-8 15:58
杰瑞教育原创:极光推送实现分组发送和服务端集成
[font=Georgia,]推送功能在手机应用开发中越来越重要,几乎成为所有App必备的功能,由于Android本身没有消息推送机制,通常采用的是基于XMPP协议的推送,[/font]
[font=Georgia,]但这种开发很麻烦,因此在市场上应运而生了提供消息推送服务的诸多产品,例如:百度云、个推、极光等。[/font]
[font=Georgia,]极光推送正是一个整合了Android推送、iOS推送的统一推送服务平台。下面讲解一下如何使用极光实现消息推送应用,[/font]
[font=Georgia,]并重点讲解一下如何实现向分组发送消息及推送服务端和自身应用集成,具体实现过程如下:[/font]
[font=Georgia,]一、注册应用[/font]
[font=Georgia,]1、首先进入官网首页www#jpush#cn,注册账号[/font]
[font=Georgia,]2、注册应用[/font]
[font=Georgia,]登录到用户平台,点击创建应用如图所示:[/font]
[font=Georgia,][img=600,225]http://images.cnitblog.com/blog/708076/201501/081353128596520.jpg[/img][/font]
[font=Georgia,]包名:创建应用项目的基础包[/font]
[font=Georgia,]单击创建,产生应用信息如图所示:[/font]
[font=Georgia,][img=600,346]http://images.cnitblog.com/blog/708076/201501/081353324065149.jpg[/img][/font]
[font=Georgia,]产生AppKey和API主密码,每个客户端应用使用唯一一个AppKey[/font]
[font=Georgia,]二、环境搭建[/font]
[font=Georgia,]1、SDK下载[/font]
[font=Georgia,] 官网资源地址:www#jpush#cn/downloads/sdk/android/ 下载 JPUSH Android – SDK[/font]
[font=Georgia,]2、导入 SDK 开发包[/font]
[list][*]复制 libs/jpush-sdk-release1.x.y.jar 到工程 libs/ 目录下[*]复制 libs/armeabi/libjpush.so 到工程 libs/armeabi 目录下[/list][font=Georgia,]3、配置 AndroidManifest.xml[/font]
[font=Georgia,] 详细请参照官网docs#jpush#io/guideline/android_guide/#sdk文档中说明进行配置[/font]
[font=Georgia,]4、集成完成后,JPush 提供的推送服务是默认就已经开启,这时客户端就可以接收到来自服务的消息了,可通过登录到JPush用户平台,发送通知测试集成是否成功[/font]
[font=Georgia,] 如图所示:[/font]
[font=Georgia,][img=600,213]http://images.cnitblog.com/blog/708076/201501/081354198437755.jpg[/img][/font]
[font=Georgia,]如终端收到消息说明集成成功[/font]
[font=Georgia,][/font]
[font=Georgia,]三、Android端开发,实现向指定人群推送消息[/font]
[font=Georgia,]集成成功之后,服务端发送消息会被所有的安装应用的客户端所接收,我们再继续看看[/font]
[font=Georgia,]如何在应用中向指定的人群进行消息推送?[/font]
[font=Georgia,]要指定向某一个特定的人,或者某一群特定的人,则相对复杂。因为对于 JPush 来说,某一个人就是一个注册ID,[/font]
[font=Georgia,]这个注册ID与开发者App没有任何关系,或者说对开发者App是没有意义的。[/font]
[font=Georgia,]如果要对开发者App有意义的某个特定的用户推送消息,则需要:把 JPush 注册用户与开发者App 用户绑定起来。我们可以使用别名与标签的功能[/font]
[font=Georgia,]1、设置别名(alias)[/font]
[font=Georgia,]为安装了应用程序的用户,取个别名来标识。以后给该用户 Push 消息时,就可以用此别名来指定。[/font]
[font=Georgia,]每个用户只能指定一个别名。[/font]
[font=Georgia,]同一个应用中,尽可能为每个客户端用户标识唯一名称,以便服务端能通过该名称来唯一确定用户。[/font]
[font=Georgia,][img]http://www.kaifaer.com/data/attachment/forum/201501/08/153532jyiww2vwqiidq9mq.png[/img][/font]
[img]http://www.kaifaer.com/data/attachment/forum/201501/08/153533jwrg0fh7nt6rm2t9.png[/img]
[font=Georgia,]2、设置标签(tag)[/font]
[font=Georgia,]标签实质就是将应用客户根据应用的需要按类别进行分组,服务端可以组为单位[/font]
[font=Georgia,]来批量下发 Push 消息,这样组内客户端所有用户都可以收到该消息。一个用户可以打多个标签,标签没有唯一性要求。[/font]
[font=Georgia,]调用JPushInterface方法:[/font]
[font=Georgia,][img]http://www.kaifaer.com/data/attachment/forum/201501/08/153534hwuo3unociubfjjh.png[/img][/font]
[font=Georgia,]3、同时设置组和标签[/font]
[font=Georgia,]也可调用JPushInterface的setAliasAndTags方法同时设置别名和标签,方法如下:[/font]
[font=Georgia,][img]http://www.kaifaer.com/data/attachment/forum/201501/08/153534hqavyz1558i0of6x.png[/img][/font]
[font=Georgia,]这样服务端可以以专业和班级为单位实现批量发送消息,也可以按学号向指定学生发消息[/font]
[font=Georgia,][/font]
[size=19px]四、开发消息推送服务端:[/size][font=Georgia,]一、环境搭建[/font]
[font=Georgia,]1、 下载服务端SDK[/font]
[font=Georgia,] 下载地址[/font]
[font=Georgia,] do[/font]s#jpush#cn/download/attachments/2228302/jpush-client-3.2.3.zip?version=2&modificationDate=1415166491000
[font=Georgia,]2、 在项目中加入jar包[/font]
[font=Georgia,][img=513,121]http://images.cnitblog.com/blog/708076/201501/081401361879117.jpg[/img][/font]
[font=Georgia,]二、服务端实现步骤[/font]
[font=Georgia,]1、创建JPushClient[/font]
JPushClient jpushClient = new JPushClient(masterSecret, appKey, 3);
[font=Georgia,] 参数说明:[/font]
[font=Georgia,] masterSecret:注册应用的主密码,即API 主密码[/font]
[font=Georgia,] appKey:注册应用的应用Key[/font]
[font=Georgia,] maxRetryTime:最大的尝试次数,设为3表示:跟服务器进行建立连接若失败会尝试再进行两次尝试[/font]
[font=Georgia,]2、构建一个 PushPayload 对象(推送对象)[/font]
[font=Georgia,] 确定推送消息的目标,包括推送的平台(Android、IOS)、消息内容和目标(所有人、别名、标签)[/font]
[font=Georgia,][img]http://www.kaifaer.com/data/attachment/forum/201501/08/153535wfan7jf0q77jyfak.png[/img][/font]
[font=Georgia,]3、推送消息[/font]
PushResult result=jpushClient.sendPush(payload);
[font=Georgia,][/font]
[font=Georgia,] 向应用客户推送消息[/font]
[font=Georgia,] 参数:payload 即第二步创建的推送对象[/font]
[font=Georgia,] 返回值:PushResult 表示服务端推送结果[/font]
[font=Georgia,] 包含下列数据:[/font]
[font=Georgia,] msg_id:返回推送消息的id[/font]
[font=Georgia,][/font]
[font=Georgia,]三、服务端代码实现:[/font]
[font=Georgia,] 1、编写MessagePush组件封装消息推送方法[/font]
[font=Georgia,][img]http://www.kaifaer.com/data/attachment/forum/201501/08/153532m0022lkcjapwy33j.png[/img][/font]
[font=Georgia,]2、Jsp页面:[/font]
[font=Georgia,] 主要是设计表单将数据提交给MessagePushServlet,这里页面代码就不附加了[/font]
[font=Georgia,][img=600,246]http://images.cnitblog.com/blog/708076/201501/081404372968453.jpg[/img][/font]
[font=Georgia,][/font]
[font=Georgia,]3、编写Servlet[/font]
[font=Georgia,][color=#286446][img]http://www.kaifaer.com/data/attachment/forum/201501/08/153531jr3qum66qnq691ou.png[/img][/color][/font]
[font=Georgia,][color=#286446][font=Arial][size=0.83em]777.png (33.31 KB, 下载次数: 0)
[url=http://www.kaifaer.com/forum.php?mod=attachment&aid=NjA1MHw5MjkzODBlY3wxNDIwNzAzMjUyfDMwNnwxMjM2NA%3D%3D¬humb=yes]下载附件[/url]
[float=right]12 分钟前 上传[/float]
[/size][/font]
[/color][/font]
[color=#286446][/color]
[align=left]烟台杰瑞教育科技原创,转载请注明出处。原文请点击杰瑞教育博客园:www#cnblogs#com/jerehedu[/align][align=left][color=#ff0000]由于URL限制,本文所有链接中的#请替换为.[/color][/align][color=#ff0000]
[/color]