1.极光推送账号准备
要使用极光消息推送必须先在官方网站上注册账号,并添加应用.
产品介绍:https://docs.jiguang.cn/jpush/guideline/intro/
注册开发者账号:https://www.jiguang.cn/accounts/register
注册完成后需要添加应用
应用配置好后有两个重要的数据,必须获取到,在后面发送消息的时候要使用:
2.极光推送后端管理配置认识
要做极光推送,得先认识极光账号的后端管理平台,应为在开发的时候很多参数和配置来自于后端管理系统
先宏观认识一下消息推送流程图:
后端管理说明:https://docs.jiguang.cn/jpush/console/Instructions/
3.集成java服务端
3.1.添加maven依赖,使用官方提供的sdk
1 <!-- 极光推送 -->
2 <dependency>
3 <groupId>cn.jpush.api</groupId>
4 <artifactId>jpush-client</artifactId>
5 <version>3.3.12</version>
6 </dependency>
3.2.客户端java代码
代码参考文档:
https://docs.jiguang.cn/jpush/server/push/server_overview/
1 package com.qianxingniwo.client;
2
3
4 import cn.jpush.api.JPushClient;
5 import cn.jpush.api.push.PushResult;
6 import cn.jpush.api.push.model.Message;
7 import cn.jpush.api.push.model.Options;
8 import cn.jpush.api.push.model.Platform;
9 import cn.jpush.api.push.model.PushPayload;
10 import cn.jpush.api.push.model.audience.Audience;
11 import cn.jpush.api.push.model.notification.AndroidNotification;
12 import cn.jpush.api.push.model.notification.Notification;
13 import org.slf4j.Logger;
14 import org.slf4j.LoggerFactory;
15
16 import java.util.ArrayList;
17 import java.util.List;
18
19 /**
20 * @Copyright (C) 四川千行你我科技有限公司
21 * @Author: LI DONG PING
22 * @Date: 7/3 19:11
23 * @Description:
24 */
25
26 public class JpushClientUtil {
27 private static final Logger log = LoggerFactory.getLogger(JpushClientUtil.class);
28
29 private final static String appKey = "应用的key(非登录账号)";
30
31 private final static String masterSecret = "应用的密码(非登录密码)";
32
33 private static JPushClient jPushClient = new JPushClient(masterSecret, appKey);
34
35
36 /**
37 * 发送给所有安卓用户
38 *
39 * @param notification_title 通知内容标题
40 * @param msg_title 消息内容标题
41 * @param msg_content 消息内容
42 * @param extrasparam 扩展字段
43 * @return 0推送失败,1推送成功
44 */
45 public static int sendToAllAndroid(String notification_title, String msg_title, String msg_content, String extrasparam, String cid) {
46 int result = 0;
47 try {
48 PushPayload pushPayload = JpushClientUtil.buildPushObject_android_all_alertWithTitle(notification_title, msg_title, msg_content, extrasparam, cid);
49 System.out.println("推送参数:" + pushPayload);
50 PushResult pushResult = jPushClient.sendPush(pushPayload);
51 System.out.println("推送结果:" + pushResult);
52 if (pushResult.getResponseCode() == 200) {
53 result = 1;
54 }
55 } catch (Exception e) {
56
57 e.printStackTrace();
58 }
59
60 return result;
61 }
62
63 /**
64 * 生产发送条件
65 *
66 * @param notification_title
67 * @param msg_title
68 * @param msg_content
69 * @param extrasparam
70 * @param cid
71 * @return
72 */
73 private static PushPayload buildPushObject_android_all_alertWithTitle(String notification_title, String msg_title, String msg_content, String extrasparam, String cid) {
74 log.info("构建推送参数,如推荐平台,接收对象");
75 //具体参看接口文档
76 //https://docs.jiguang.cn/jpush/server/push/rest_api_v3_push/
77 List list = new ArrayList();
78 // Audience.tag(list);
79 // Audience audience = Audience.alias("112201","112202");//别名推送
80 // Audience audience = Audience.tag("tag1");
81 //Audience audience = Audience.all();
82 // Audience audience = Audience.registrationId("112201", "112202");
83 Audience audience = Audience.segment("c8f2fff736");
84 return PushPayload.newBuilder()
85 //指定要推送的平台,all代表当前应用配置了的所有平台,也可以传android等具体平台
86 .setPlatform(Platform.android())
87 //设置发送消息id
88 // .setCid(cid)
89 //指定推送的接收对象,all代表所有人,也可以指定已经设置成功的tag或alias或该应应用客户端调用接口获取到的registration id
90 .setAudience(audience)
91 // .setAudience(Audience.tag(list))
92 //jpush的通知,android的由jpush直接下发,iOS的由apns服务器下发,Winphone的由mpns下发
93 .setNotification(Notification.newBuilder()
94 //指定当前推送的android通知
95 .addPlatformNotification(AndroidNotification.newBuilder()
96 .setAlert(notification_title)
97 .setTitle(notification_title)
98 //此字段为透传字段,不会显示在通知栏。用户可以通过此字段来做一些定制需求,如特定的key传要指定跳转的页面(value)
99 .addExtra("androidNotification extras key", extrasparam)
100 .build())
101 .build()
102 )
103 //Platform指定了哪些平台就会像指定平台中符合推送条件的设备进行推送。 jpush的自定义消息,
104 // sdk默认不做任何处理,不会有通知提示。建议看文档http://docs.jpush.io/guideline/faq/的
105 // [通知与自定义消息有什么区别?]了解通知和自定义消息的区别
106 .setMessage(Message.newBuilder()
107 .setMsgContent(msg_content)
108 .setTitle(msg_title)
109 .addExtra("message extras key", extrasparam)
110 .build())
111
112 .setOptions(Options.newBuilder()
113 //此字段的值是用来指定本推送要推送的apns环境,false表示开发,true表示生产;对android和自定义消息无意义
114 .setApnsProduction(false)
115 //此字段是给开发者自己给推送编号,方便推送者分辨推送记录
116 .setSendno(1)
117 //此字段的值是用来指定本推送的离线保存时长,如果不传此字段则默认保存一天,最多指定保留十天,单位为秒
118 .setTimeToLive(86400)
119 .build())
120 .build();
121 }
122
123 /**
124 * 发送测试
125 *
126 * @param args
127 */
128 public static void main(String[] args) {
129 String num = "-0405-别名";
130 String notification_title = "推送测试-通知标题" + num;
131 String msg_title = "推送测试-内容标题" + num;
132 String msg_content = "我是内容" + num;
133 String extrasparam = "我是扩展的json" + num;
134 String cid = String.valueOf(System.currentTimeMillis());
135 int i = JpushClientUtil.sendToAllAndroid(notification_title, msg_title, msg_content, extrasparam, cid);
136 System.out.println("i=" + i);
137 }
138 }
View Code
3.3.发送测试
执行发送后,如果发送成功,我们可以在后端管理系统中看见消息详情
3.3.注意事项
1.刚建立的极光账号由于配置的原因,很多发送条件是测试不了的,一定要信息阅读接口文档,如下:
2.cid并非任意编号,而是有规则的
3.遇到问题再补充....