push api v3 java_JPush極光推送API工具類(JAVA)

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()

.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 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 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();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值