JAVA SDK 极光推送后台DEMO
来源:互联网 发布:还珠格格知画怎么怀孕 编辑:程序博客网 时间:2024/06/01 09:05
pom导依赖
<properties> <comLog.version>1.1.1</comLog.version> </properties> <dependencies> <dependency> <groupId>cn.jpush.api</groupId> <artifactId>jpush-client</artifactId> <version>3.2.7</version> </dependency> <dependency> <groupId>cn.jpush.api</groupId> <artifactId>jiguang-common</artifactId> <version>1.0.1</version> </dependency> <dependency> <groupId>io.netty</groupId> <artifactId>netty-all</artifactId> <version>4.1.6.Final</version> <scope>compile</scope> </dependency> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.3</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.7</version> </dependency> <!-- For log4j --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.7</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>${comLog.version}</version> </dependency> </dependencies>
编写工具类,比较健全的,一般要用的都写了
package com.lyt.jpush.api;import java.util.Map;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import cn.jpush.api.JPushClient;import cn.jpush.api.common.resp.APIConnectionException;import cn.jpush.api.common.resp.APIRequestException;import cn.jpush.api.push.PushResult;import cn.jpush.api.push.model.Message;import cn.jpush.api.push.model.Options;import cn.jpush.api.push.model.Platform;import cn.jpush.api.push.model.PushPayload;import cn.jpush.api.push.model.PushPayload.Builder;import cn.jpush.api.push.model.audience.Audience;import cn.jpush.api.push.model.audience.AudienceTarget;import cn.jpush.api.push.model.notification.AndroidNotification;import cn.jpush.api.push.model.notification.IosNotification;import cn.jpush.api.push.model.notification.Notification; /** * * @ClassName: MessagePushUtil * @Description: (消息推送工具类) * @date 2015年12月22日 下午2:36:45 * */ public class MsgPushUtils{ protected static Logger LOG = LoggerFactory.getLogger(MsgPushUtils.class);// private static final String MASTER_SECRET = "XXXXXX";// private static final String APP_KEY = "XXXXX"; private static final String MASTER_SECRET = "XXXXXX"; private static final String APP_KEY = "XXXXXXX"; private static PushPayload pushPayload ;// private static Builder builder; // static {// Builder builder = PushPayload.newBuilder();// pushPayload = builder// .setNotification(Notification.alert(""))// .setAudience(Audience.all())// .setPlatform(Platform.all())// .setOptions(Options.newBuilder().setTimeToLive(0L).build())// .build();// } public static final String BEEN_CONCERNED_ALERT = ""; public static final String SOUND = ""; public static final int BADGE = 1; /** * @throws APIRequestException * @throws APIConnectionException * * @Title: pushMessage * @Description: (推送消息) * @param @param json * @param @return 设定文件 * @return HttpResponse 返回类型 * @throws */ public static PushResult sendPush(PushPayload payload) throws APIConnectionException, APIRequestException{ JPushClient jPushClient = new JPushClient(MASTER_SECRET, APP_KEY); return jPushClient.sendPush(payload); } /** * @Title: sendPushTryCatch * @Description: try catch 推送 * @param @param payload * @param @param logger * @param @return 设定文件 * @return String 返回类型 * @throws */ public static void sendPushTryCatch(PushPayload payload, Logger logger){ JPushClient jPushClient = new JPushClient(MASTER_SECRET, APP_KEY); try { PushResult pushResult = jPushClient.sendPush(payload); logger.info("返回结果" + pushResult); } catch (APIConnectionException e) { logger.error("连接错误,稍后尝试" + e); } catch (APIRequestException e) { logger.error("极光推送内部错误", e); logger.info("网络请求状态" + e.getStatus()); logger.info("错误状态码" + e.getErrorCode()); logger.info("错误信息" + e.getErrorMessage()); logger.info("信息ID" + e.getMsgId()); logger.info("极光推送错误信息:" + e.getErrorMessage()); } } /** * * @Title: buildPushObjectAllAllAlert * @Description: (快捷地构建推送对象:所有平台,所有设备,内容为 alert 的通知) * @param @param alert * @param @return 设定文件 * @return PushPayload 返回类型 * @throws */ @SuppressWarnings("static-access") public static PushPayload buildPushObjectAllAllAlert(String alert) { return pushPayload.alertAll(alert); } /** * @Title: buildPushObjectAliasAlert * @Description: (所有平台,推送目标是别名为 alias,通知内容为 alert) * @param @param alert * @param @param alias * @param @return 设定文件 * @return PushPayload 返回类型 * @throws */ public static PushPayload buildPushObjectAliasAlert(String days,String alert, String... alias) { Builder builder = PushPayload.newBuilder(); return builder .setPlatform(Platform.android_ios()) .setAudience(Audience.alias(alias)) .setNotification(Notification.newBuilder() .setAlert(alert) .addPlatformNotification( AndroidNotification.newBuilder() .addExtra("sign", "5") .build()) .addPlatformNotification(IosNotification.newBuilder() .addExtra("sign", "5") .build()) .build()) .setOptions(Options.newBuilder() .setApnsProduction(false) .setTimeToLive(Long.valueOf(Integer.valueOf(days)*86400)) .build()) .build(); } /** * * @Title: buildPushObjectIos * @Description: (iOS推送 badge sound) * @param @param alias * @param @param alert * @param @param badge * @param @return 设定文件 * @return PushPayload 返回类型 * @throws */ public static PushPayload buildPushObjectIosAndroid(String days,Map<String, String> params, String[] alias, String alert, int badge, String sound, String msgContent) { Builder builder = PushPayload.newBuilder(); return builder .setPlatform(Platform.android_ios()) .setAudience(Audience.alias(alias)) .setNotification(Notification.newBuilder() .addPlatformNotification(IosNotification.newBuilder() .setAlert(alert) .setBadge(badge) .addExtras(params) .setSound(sound) .build()) .addPlatformNotification(AndroidNotification.newBuilder() .setAlert(alert) .addExtras(params) .build()) .build()) .setMessage(Message.newBuilder() .setMsgContent(msgContent) .build()) .setOptions(Options.newBuilder() .setApnsProduction(false) .setTimeToLive(Long.valueOf(Integer.valueOf(days)*86400)) .build()) .build(); } /** * @Title: buildPushObjectAllAliasAlert * @Description: (所有平台,推送目标是别名为 alias,通知标题为 title,通知内容为 alert) * @param @param params * @param @param alias * @param @return 设定文件 * @return PushPayload 返回类型 * @throws */ public static PushPayload buildPushObjectAllAliasAlert(String days,Map<String, String> params, String alert, String title,String... alias) { Builder builder = PushPayload.newBuilder(); return builder .setPlatform(Platform.android_ios()) .setAudience(Audience.alias(alias)) .setNotification(Notification.newBuilder() .setAlert(alert) .addPlatformNotification(AndroidNotification.newBuilder() .setTitle(title) .addExtras(params) .build()) .addPlatformNotification(IosNotification.newBuilder() .addExtras(params) .build()) .build()) .setOptions(Options.newBuilder() .setApnsProduction(false) .setTimeToLive(Long.valueOf(Integer.valueOf(days)*86400)) .build()) .build(); } /** * @Title: buildPushObjectAndroidTagAlertWithTitle * @Description: (平台是 Android,目标是 tag 为 tag 的设备,内容是 Android 通知 alert,并且标题为 title) * @param @param tag * @param @param alert * @param @param title * @param @return 设定文件 * @return PushPayload 返回类型 * @throws */ public static PushPayload buildPushObjectAndroidTagAlertWithTitle(String days,String tag, String alert, String title) { Builder builder = PushPayload.newBuilder(); return builder .setPlatform(Platform.android()) .setAudience(Audience.tag(tag)) .setNotification(Notification.android(alert, title, null)) .setOptions(Options.newBuilder() .setApnsProduction(false) .setTimeToLive(Long.valueOf(Integer.valueOf(days)*86400)) .build()) .build(); } /** * @Title: buildPushObjectIosTagAndAlertWithExtrasAndMessage * @Description: ( * 构建推送对象:平台是 iOS,推送目标是 tag, tagAll 的交集, * 推送内容同时包括通知与消息 - 通知信息是 alert,角标数字为 number, * 消息内容是 msgContent。 * 通知是 APNs 推送通道的,消息是 JPush 应用内消息通道的。 * APNs 的推送环境是“开发”(如果不显式设置的话,Library 会默认指定为开发) * true 表示推送生产环境,true 表示要推送开发环境 * ) * @param @param tag * @param @param tagAll * @param @param number * @param @param alert * @param @param msgContent * @param @return 设定文件 * @return PushPayload 返回类型 * @throws */ public static PushPayload buildPushObjectIosTagAndAlertWithExtrasAndMessage(String days, String tag, String tagAll, int number, String alert, String msgContent) { Builder builder = PushPayload.newBuilder(); return builder .setPlatform(Platform.ios()) .setAudience(Audience.tag_and(tag, tagAll)) .setNotification(Notification.newBuilder() .addPlatformNotification(IosNotification.newBuilder() .setAlert(alert) .setBadge(number) .build()) .build()) .setMessage(Message.content(msgContent)) .setOptions(Options.newBuilder() .setApnsProduction(false) .setTimeToLive(Long.valueOf(Integer.valueOf(days)*86400)) .build()) .build(); } /** * 构建推送对象:平台是 Andorid 与 iOS, * 推送目标是 (tag1 与 tag2 的并集), * 推送内容是 - 内容为 msgContent 的消息 * @Title: buildPushObjectIosAudienceMoreMessageWithExtras * @param @param tag1 * @param @param tag2 * @param @param msgContent * @param @return 设定文件 * @return PushPayload 返回类型 * @throws */ public static PushPayload buildPushObjectIosAudienceMoreMessageWithExtras(String days, String tag1, String tag2, String msgContent) { Builder builder = PushPayload.newBuilder(); return builder .setPlatform(Platform.android_ios()) .setAudience(Audience.newBuilder() .addAudienceTarget(AudienceTarget.tag(tag1, tag2)) .build()) .setMessage(Message.newBuilder() .setMsgContent(msgContent) .build()) .setOptions(Options.newBuilder() .setApnsProduction(false) .setTimeToLive(Long.valueOf(Integer.valueOf(days)*86400)) .build()) .build(); } /** * @Title: sendAndroidMessageWithAliasAndExtras * @Description: 用户自定义消息类型,以及传递附属信息,发送给安卓和IOS特定用户 * @param @param extras * @param @param title * @param @param msgContent * @param @param alias * @param @return * @param @throws APIConnectionException * @param @throws APIRequestException 设定文件 * @return PushPayload 返回类型 * @throws */ public static PushPayload sendAndroidAndIosMessageWithAliasAndExtras(String days,Map<String, String>extras,String title, String msgContent, String... alias) throws APIConnectionException, APIRequestException { Builder builder = PushPayload.newBuilder(); return builder .setPlatform(Platform.android_ios()) .setAudience(Audience.alias(alias)) .setMessage(Message.newBuilder() .setTitle(title) .setMsgContent(msgContent) .addExtras(extras) .build()) .setOptions(Options.newBuilder() .setApnsProduction(false) .setTimeToLive(Long.valueOf(Integer.valueOf(days)*86400)) .build()) .build(); } /** * @Title: sendAndroidMessageWithAlias * @Description: 用户自定义消息类型,无附加属性信息,发送给安卓和IOS特定用户 * @param @param title * @param @param msgContent * @param @param alias * @param @return * @param @throws APIConnectionException * @param @throws APIRequestException 设定文件 * @return PushPayload 返回类型 * @throws */ public static PushPayload sendAndroidAndIosMessageWithAlias(String days,Map<String,String> extras,String title, String msgContent, String... alias) throws APIConnectionException, APIRequestException { Builder builder = PushPayload.newBuilder(); return builder .setPlatform(Platform.android_ios()) .setAudience(Audience.alias(alias)) .setMessage(Message.newBuilder() .setTitle(title) .setMsgContent(msgContent) .addExtras(extras) .build()) .setOptions(Options.newBuilder() .setApnsProduction(false) .setTimeToLive(Long.valueOf(Integer.valueOf(days)*86400)) .build()) .build(); } /** * @Title: sendAndroidAndIosMessageAndNotification * @Description: 推送消息和通知,发送给所有安卓和IOS用户 * @param @param title * @param @param alert * @param @return 设定文件 * @return PushPayload 返回类型 * @throws */ public static PushPayload sendAndroidAndIosMessageAndNotification(String days,String content,String alert){ Builder builder = PushPayload.newBuilder(); return builder .setPlatform(Platform.android_ios()) .setNotification(Notification.newBuilder() .setAlert(alert) .build()) .setMessage(Message.newBuilder() .setTitle("") .setMsgContent(content) .build()) .setOptions(Options.newBuilder() .setApnsProduction(false) .setTimeToLive(Long.valueOf(Integer.valueOf(days)*86400)) .build()) .build(); }// public static void main(String[] args) {// try {// sendPush(sendAndroidAndIosMessageWithAlias("1", null,"超神了哦", "123456"));// } catch (APIConnectionException e) {// LOG.error("Connection error. Should retry later. ", e);// } catch (APIRequestException e) {// LOG.error("Error response from JPush server. Should review and fix it. ", e);// LOG.info("HTTP Status: " + e.getStatus());// LOG.info("Error Code: " + e.getErrorCode());// LOG.info("Error Message: " + e.getErrorMessage());// }// // }}
与项目整合及运用,本人习惯把它整成一个工具类然后打成JAR包放入需要他的项目中
<dependency> <groupId>com.lyt</groupId> <artifactId>lytJPush</artifactId> <version>0.0.1</version> </dependency>
//极光推送自定义消息 String title = postInfoService.getPostById(postReview.getPostId()).getTitle(); if(postReview.getParentId()!=null){ String pUserId = postReviewDao.select(postReview.getParentId()).getUserId().toString(); String userName = Base64Util.getFromBase64(userService.getUserInfo(postReview.getUserId()).getNickName()); String[] alias = {pUserId}; Map<String,String> parms = new HashMap<>(); parms.put("userId", postReview.getUserId()+""); parms.put("postId", postReview.getPostId()+""); parms.put("userName", userName); parms.put("title", title+""); parms.put("type","5"); try { PushPayload data = MsgPushUtils.sendAndroidAndIosMessageWithAliasAndExtras("10",parms,PushConstant.getModelReviewReply(title), "回复了您的评论", alias); MsgPushUtils.sendPush(data); } catch (APIConnectionException e) { log.error("Connection error. Should retry later. ", e); } catch (APIRequestException e) { log.error("Error response from JPush server. Should review and fix it. ", e); log.info("HTTP Status: " + e.getStatus()); log.info("Error Code: " + e.getErrorCode()); log.info("Error Message: " + e.getErrorMessage()); } }
注意:setApnsProduction(false)
IOS开发者模式的话这个不关闭是搜不到消息的,IOS对应的值 该为YES
至于安卓则没有这方面的限制
还有很多设置提示背景音乐啊什么的这个没深入研究也就没弄。
0 0
- JAVA SDK 极光推送后台DEMO
- 极光推送>>java SDK服务端集成后台项目
- 极光推送>>java SDK服务端集成后台项目
- 极光推送>>java SDK服务端集成后台项目
- 极光推送Java后台实现
- JPush极光推送 Java服务器端Demo
- 极光推送Java SDK源码学习
- 极光推送 Demo
- 极光推送Demo学习
- 极光推送demo
- 极光推送Demo
- JPUSH后台极光推送
- 极光推送 SDK教程
- 极光推送经验之谈-Java后台服务器实现极光推送的两种实现方式
- 极光推送经验之谈-Java后台服务器实现极光推送的两种实现方式
- 极光推送---安卓Demo
- AndroidStudio集成极光推送SDK
- 极光推送iOS SDK教程
- 求二次根式(汇编浮点数指令fsqrt实现)
- hdu 3622 Bomb Game(二分+2-sat)
- linux ----- cp
- L3-001. 凑零钱【dp】
- yii2.0basic版的配置
- JAVA SDK 极光推送后台DEMO
- Mongodb PITR恢复
- SharePoint 2016 配置用户请求应用程序
- OpenResty(Nginx)+Lua+GraphicsMagick实现图片截图与缓存 二
- iptables 基本用法
- V I M 教 程
- python——selenium的应用(1)
- 备忘 IOS UI主线程刷新
- 细说"Callable"与"Runable接口"