maven:
<!-- 极光推送 --> <dependency> <groupId>cn.jpush.api</groupId> <artifactId>jpush-client</artifactId> <version>3.3.10</version> </dependency> <dependency> <groupId>cn.jpush.api</groupId> <artifactId>jiguang-common</artifactId> <version>1.1.4</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> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.7</version> </dependency> <!--The end of Jiguang push-->
Official code:
import java.util.HashMap; import java.util.Map; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import cn.jiguang.common.ClientConfig; import cn.jiguang.common.TimeUnit; import cn.jiguang.common.resp.APIConnectionException; import cn.jiguang.common.resp.APIRequestException; import cn.jpush.api.JPushClient; import cn.jpush.api.push.PushResult; import cn.jpush.api.push.model.Message; 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.notification.AndroidNotification; import cn.jpush.api.push.model.notification.IosNotification; import cn.jpush.api.push.model.notification.Notification; import cn.jpush.api.push.model.notification.WinphoneNotification; import cn.jpush.api.report.ReceivedsResult; import cn.jpush.api.report.ReceivedsResult.Received; import cn.jpush.api.report.UsersResult; public class tuisong { protected static final Logger log = LoggerFactory.getLogger(tuisong.class); // demo App defined in resources/jpush-api.conf private static final String APPKEY = "58854e6e9763f66fd3d3d245"; private static final String MASTERSECRET = "f7935b875f2eb06fb904f9d8"; public static JPushClient jpushClient = null; /** * 推送通知接口 * @ Device ID * @ tag array * @ 推送标题 * @ 推送类型 * @ Push content */ public static void main(String[] args) { sendPushNotice("160a3797c870b06d4e0", null, "title", "type", "Mingkai push message test"," content"); // sendPushNotice(null, null, "title", "type", " testalert ","content"); } public static void sendPushNotice(String registrationId, String[] tags, String title, String btype, String alert, String content) { jpushClient = new JPushClient(MASTERSECRET, APPKEY); PushPayload payload = null; // Generate push content, here we first test all pushes // Notification prompt information if (content != null) { Map< String, String> map = new HashMap<String,String>(); map.put("btype", btype); // Push according to alias if (registrationId != null && tags == null) { payload = buldPushObject_all_all_alias(registrationId, title,alert, content, map); } else if (registrationId == null && tags != null) { // 根据tag[]推送 payload = buldPushObject_all_all_tag(tags, title,alert, content, map); } else if (registrationId != null && tags != null) { // 别名和tags[] 推送通知 payload = buldPushObject_all_all_aliasAndTag(registrationId, tags, title,alert, content, map); } else if (registrationId == null && tags == null) { payload = buldPushObject_all_all(title,alert, content, map); } } else { log.info("No notification - " + content); } try { System.out.println(payload.toString()); PushResult result = jpushClient.sendPush(payload); System.out.println("推送结果:"+result.getResponseCode()); log.info("Got result - " + result); } 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()); log.info("Msg ID: " + e.getMsgId()); } } /** * 推送自定义消息接口.Modify the tag according to the alias * @param alias alias * @param content Push content */ public static void sendPushMessage(String alias, String content) { jpushClient = new JPushClient(MASTERSECRET, APPKEY); PushPayload payload = null; // For push, all you need do is to build PushPayload object. // PushPayload payload = buildPushObject_all_all_alert(); // Push and modify the tag only when it is judged that the user alias and tag are not empty if (content != null && alias != null) { payload = PushPayload.newBuilder() . setAudience(Audience.alias(alias)) .setPlatform(Platform.all()) .setMessage(Message.content(content)).build(); } else { log.info("No notification-"+ content); } try { System.out.println(payload.toString()); PushResult result = jpushClient.sendPush(payload); System.out.println(result + "................................"); log.info("Got result - " + result); } 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()); log.info("Msg ID: " + e.getMsgId()); * Query the number of records pushed successfully /** } } * @param mid */ public static void countPush(String mid) { jpushClient = new JPushClient(MASTERSECRET, APPKEY); PushPayload payload = null; try { ReceivedsResult result = jpushClient.getReportReceiveds(mid); Received received = result.received_list.get(0); System.out.println("android_received:" + received.android_received + "\nios:" + received.ios_apns_sent); log.debug("Got result - " + result); } catch (APIConnectionException e) { // Connection error, should retry later log.error("Connection error, should retry later", e); } catch (APIRequestException e) { // Should review the error, and fix the request log.error("Should review the error, and fix the request", e); log.info("HTTP Status: " + e.getStatus()); log.info("Error Code: " + e.getErrorCode()); log.info("Error Message: " + e.getErrorMessage()); } } /** * 统计用户数据。需要vip用户才能访问 */ public static void getReportUser() { jpushClient = new JPushClient(MASTERSECRET, APPKEY); PushPayload payload = null; try { UsersResult result = jpushClient.getReportUsers(TimeUnit.DAY, "2015-04-28", 8); // Received received =result // System.out.println("android_received:"+received.android_received+"\nios:"+received.ios_apns_sent); log.debug("Got result - " + result); } catch (APIConnectionException e) { // Connection error, should retry later log.error("Connection error, should retry later", e); } catch (APIRequestException e) { // Should review the error, and fix the request log.error("Should review the error, and fix the request", e); log.info("HTTP Status: " + e.getStatus()); log.info("Error Code: " + e.getErrorCode()); * @ alert Push content * @ alias * Push notification based on alias /** } log.info("Error Message: " + e.getErrorMessage()); } * @return */ public static PushPayload buldPushObject_all_all_alias(String registrationId, String title,String alert, String content, Map<String, String> map) { return PushPayload .newBuilder() .setPlatform(Platform.all()) .setAudience(Audience.registrationId(registrationId)) .setNotification( Notification .newBuilder() .addPlatformNotification( IosNotification.newBuilder() .setAlert(alert) .addExtra("content", content) .addExtras(map).build()) .addPlatformNotification( AndroidNotification.newBuilder() .setAlert(alert) .addExtra("content", content) .setTitle(title).addExtras(map) .build()) .addPlatformNotification( WinphoneNotification.newBuilder() .setAlert(alert) .addExtra("content", content) .addExtras(map).build()) .build()).build(); } /** * Push according to tag notification * @ alias * @ alert Push content * @return */ public static PushPayload buldPushObject_all_all_tag(String[] tags, String title,String alert, String content, Map<String, String> map) { return PushPayload .newBuilder() .setPlatform(Platform.all()) .setAudience(Audience.tag(tags)) .setNotification( Notification .newBuilder() .addPlatformNotification( IosNotification.newBuilder() .setAlert(alert) .addExtra("content", content) .addExtras(map).build()) .addPlatformNotification( AndroidNotification.newBuilder() .setAlert(alert) .addExtra("content", content) .setTitle(title).addExtras(map) .build()) .addPlatformNotification( WinphoneNotification.newBuilder() .setAlert(alert) .addExtra("content", content) .addExtras(map).build()) .build()).build(); } /** * 根据tag通知推送 * @ alias 别名 * @ alert 推送内容 * @return */ public static PushPayload buldPushObject_all_all_aliasAndTag(String registrationId, String[] tags,String alert, String title, String content, Map<String, String> map) { return PushPayload .newBuilder() .setPlatform(Platform.all()) .setAudience(Audience.registrationId(registrationId)) .setAudience(Audience.tag(tags)) .setNotification( Notification .newBuilder() .addPlatformNotification( IosNotification.newBuilder() .setAlert(alert) .addExtra("content", content) .addExtras(map).build()) .addPlatformNotification( AndroidNotification.newBuilder() .setAlert(alert) .addExtra("content", content) .setTitle(title).addExtras(map) .build()) .addPlatformNotification( WinphoneNotification.newBuilder() .setAlert(alert) .addExtra("content", content) .addExtras(map).build()) .build()).build(); } /** * 根据通知推送 * @ alias 别名 * @ alert 推送内容 * @return */ public static PushPayload buldPushObject_all_all(String title,String alert, String content, Map<String, String> map) { return PushPayload .newBuilder() .setPlatform(Platform.all()) .setAudience(Audience.all()) .setNotification( Notification .newBuilder() .addPlatformNotification( IosNotification.newBuilder() .setAlert(alert) .addExtra("content", content) .addExtras(map).build()) .addPlatformNotification( AndroidNotification.newBuilder() .setAlert(alert) .addExtra("content", content) .setTitle(title).addExtras(map) .build()) .addPlatformNotification( WinphoneNotification.newBuilder() .setAlert(alert) .addExtra("content", content) .addExtras(map).build()) .build()).build(); } }