您的位置:首页 > 编程语言 > Java开发

JPush极光推送API工具类(JAVA)

2017-04-22 15:08 477 查看
package com.util.push;

import cn.jpush.api.common.resp.APIConnectionException;
import cn.jpush.api.common.resp.APIRequestException;
import cn.jpush.api.push.model.PushPayload.Builder;
import cn.jpush.api.JPushClient;
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.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;
import org.apache.log4j.Logger;
import java.util.Map;

/**
* @author SuperMudada
* @ClassName: MessagePushUtil
* @Description: TODO(消息推送工具类)
* TODO(考察文档 http://docs.jiguang.cn/jpush/server/push/rest_api_v3_push/) * @Created-Date: 2017/4/22  15:04
*/
public class MessagePushUtil {
private static final String MASTER_SECRET = "";  //TODO(填写你的MASTER_SECRET)
private static final String APP_KEY = "";     //TODO(填写你的APP_KEY)
private static Logger logger = Logger.getLogger(JpushUtils.class);
private static PushPayload pushPayload;
private static Builder builder =PushPayload.newBuilder();

public static void main(String[] args) throws Exception {
//TODO(构建推送内容,推送目标,推送类型)
//pushPayload = MessagePushUtil.pushAndroidAndIosByAlias("30", "哈哈", "hehei");
pushPayload=PushPayload.alertAll("哈哈");
//TODO(开始推送)
sendPushTryCatch(pushPayload);
}

/**
* @param @param payload
* @Title: sendPushTryCatch TODO(开始推送)
* @Description: try catch 推送
*/
public static void sendPushTryCatch(PushPayload payload) {
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());
}
}

/**
* @param alias   推送别名
* @param alert   推送标题
* @param content 推送内容(推荐json格式)
* @return
*/
public static PushPayload pushAndroidAndIosByAlias(String alias, String alert, String content) {
return builder
.setPlatform(Platform.android_ios())  //推送平台
.setAudience(Audience.alias(alias))   //推送目标,这里指定进行别名推送
.setNotification(Notification.newBuilder()
.setAlert(alert)
.addPlatformNotification(
AndroidNotification.newBuilder()
.addExtra("sign", "5")
.addExtra("content", content)
.build())
.addPlatformNotification(IosNotification.newBuilder()
.addExtra("sign", "5")
.addExtra("content", content)
.build())
.build())
.setOptions(
Options.newBuilder()
.setApnsProduction(false)//IOS推送環境、True 表示推送生产环境,False 表示要推送开发环境;
.setTimeToLive(0)   //推送当前用户不在线时,为该用户保留多长时间的离线消息,以便其上线时再次推送。默认 86400 (1 天),最长 10 天。设置为 0 表示不保留离线消息,只有推送当前在线的用户可以收到。
.build())
.build();
}

/**
* @param @param  alert
* @param @return 设定文件
* @return PushPayload    返回类型
* @throws
* @Title: buildPushObjectAllAllAlert
* @Description: TODO(快捷地构建推送对象:所有平台,所有设备,内容为 alert 的通知)
*/
@SuppressWarnings("static-access")
public static PushPayload buildPushObjectAllAllAlert(String alert) {
return pushPayload.alertAll(alert);
}

/**
* @param @param  alert
* @param @param  alias
* @param @return 设定文件
* @return PushPayload    返回类型
* @throws
* @Title: buildPushObjectAliasAlert
* @Description: TODO(所有平台,推送目标是别名为 alias,通知内容为 alert)
*/
public static PushPayload buildPushObjectAliasAlert(String alert, String... alias) {
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()

c196
.addExtra("sign", "5")
.build())
.build())
.build();
}

/**
* @param @param  alias
* @param @param  alert
* @param @param  badge
* @param @return 设定文件
* @return PushPayload    返回类型
* @throws
* @Title: buildPushObjectIos
* @Description: TODO(iOS推送 badge sound)
*/
public static PushPayload buildPushObjectIosAndroid(Map<String, String> params,
String[] alias, String alert, int badge, String sound, String msgContent) {
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())
.build();
}

/**
* @param @param  params
* @param @param  alias
* @param @return 设定文件
* @return PushPayload    返回类型
* @throws
* @Title: buildPushObjectAllAliasAlert
* @Description: TODO(所有平台,推送目标是别名为 alias,通知标题为 title,通知内容为 alert)
*/
public static PushPayload buildPushObjectAllAliasAlert(Map<String, String> params, String alert, String title, String... alias) {
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())
.build();
}

/**
* @param @param  tag
* @param @param  alert
* @param @param  title
* @param @return 设定文件
* @return PushPayload    返回类型
* @throws
* @Title: buildPushObjectAndroidTagAlertWithTitle
* @Description: TODO(平台是 Android,目标是 tag 为 tag 的设备,内容是 Android 通知 alert,并且标题为 title)
*/
public static PushPayload buildPushObjectAndroidTagAlertWithTitle(String tag, String alert, String title) {
return builder
.setPlatform(Platform.android())
.setAudience(Audience.tag(tag))
.setNotification(Notification.android(alert, title, null))
.build();
}

/**
* @param @param  tag
* @param @param  tagAll
* @param @param  number
* @param @param  alert
* @param @param  msgContent
* @param @return 设定文件
* @return PushPayload    返回类型
* @throws
* @Title: buildPushObjectIosTagAndAlertWithExtrasAndMessage
* @Description: TODO(构建推送对象:平台是 iOS,推送目标是 tag, tagAll 的交集, 推送内容同时包括通知与消息 - 通知信息是 alert,角标数字为 number,消息内容是 msgContent。通知是 APNs 推送通道的,消息是 JPush 应用内消息通道的。
* APNs 的推送环境是“开发”(如果不显式设置的话,Library 会默认指定为开发)
* True 表示推送生产环境,False 表示要推送开发环境
*)
*/
public static PushPayload buildPushObjectIosTagAndAlertWithExtrasAndMessage(
String tag, String tagAll, int number, String alert, String msgContent) {
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)
.build())
.build();
}

/**
* 构建推送对象:平台是 Andorid 与 iOS,
* 推送目标是 (tag1 与 tag2 的并集),
* 推送内容是 - 内容为 msgContent 的消息
*
* @param @param  tag1
* @param @param  tag2
* @param @param  msgContent
* @param @return 设定文件
* @return PushPayload    返回类型
* @throws
* @Title: buildPushObjectIosAudienceMoreMessageWithExtras
* @Description: TODO()
*/
public static PushPayload buildPushObjectIosAudienceMoreMessageWithExtras(
String tag1, String tag2, String msgContent) {
return builder
.setPlatform(Platform.android_ios())
.setAudience(Audience.newBuilder()
.addAudienceTarget(AudienceTarget.tag(tag1, tag2))
.build())
.setMessage(Message.newBuilder()
.setMsgContent(msgContent)
.build())
.build();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java jpush api util