需要先去極光申請註冊極光IM,獲取appkey和masterSecret
https://docs.jiguang.cn/jmessage/server/rest_api_im/
http://jpush.github.io/jmessage-api-java-client/apidocs/
https://github.com/jpush/jmessage-api-java-client
pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <artifactId>wnews</artifactId> <groupId>com.fd.wnews</groupId> <version>0.0.1-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>fd-wnews-common</artifactId> <dependencies><!-- <dependency> <groupId>io.netty</groupId> <artifactId>netty-all</artifactId> <version>4.1.2.Final</version> </dependency>--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-support</artifactId> </dependency> <dependency> <groupId>io.swagger</groupId> <artifactId>swagger-annotations</artifactId> </dependency> <dependency> <groupId>io.netty</groupId> <artifactId>netty-transport</artifactId> </dependency> <dependency> <groupId>com.fd.businessengine</groupId> <artifactId>be-common-entity</artifactId> <version>1.0.2-SNAPSHOT</version> <scope>compile</scope> </dependency> <dependency> <groupId>cn.jpush.api</groupId> <artifactId>jpush-client</artifactId> <version>3.2.17</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpmime</artifactId> <version>4.5.9</version> </dependency> <dependency> <groupId>com.arronlong</groupId> <artifactId>httpclientutil</artifactId> <version>1.0.4</version> </dependency> <dependency> <groupId>cn.jpush.api</groupId> <artifactId>jiguang-common</artifactId> <version>1.1.3</version> </dependency> <dependency> <groupId>backport-util-concurrent</groupId> <artifactId>backport-util-concurrent</artifactId> <version>3.1</version> </dependency> <dependency> <groupId>cn.jpush.api</groupId> <artifactId>jmessage-client</artifactId> <version>1.1.8</version> </dependency> </dependencies> </project>
工具類
package com.fd.wnews.utils.jiguang; 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.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.notification.AndroidNotification; import cn.jpush.api.push.model.notification.IosNotification; import cn.jpush.api.push.model.notification.Notification; import java.util.Map; /** * @Description 極光推送工具類 * @Author lc * @Date 2019-11-20 上午 11:20 */ public class PushUtil { public static final String APP_KEY = "*************"; public static final String MASTER_SECRET = "*************"; /** * @param param * @return cn.jpush.api.push.PushResult * @Description Android * @Author lc * @Date 2019-11-20 上午 11:34 **/ public static PushResult jpushAndroid(Map<String, String> param) { //創建JPushClient(極光推送的實例) JPushClient jpushClient = new JPushClient(MASTER_SECRET, APP_KEY); //推送的關鍵,構造一個payload PushPayload payload = PushPayload.newBuilder() .setPlatform(Platform.android())//指定android平臺的用戶 .setAudience(Audience.all())//你項目中的所有用戶 //.setAudience(Audience.registrationId(param.get("id")))//registrationId指定用戶 .setNotification(Notification.android(param.get("msg"), "這是title", param)) //發送內容 .setOptions(Options.newBuilder().setApnsProduction(false).build()) //這裏是指定開發環境,不用設置也沒關係 .setMessage(Message.content(param.get("msg")))//自定義信息 .build(); PushResult pu = null; try { pu = jpushClient.sendPush(payload); } catch (APIConnectionException e) { e.printStackTrace(); } catch (APIRequestException e) { e.printStackTrace(); } return pu; } /** * @param param * @return cn.jpush.api.push.PushResult * @Description ios * @Author lc * @Date 2019-11-20 上午 11:34 **/ public static PushResult jpushIOS(Map<String, String> param) { //創建JPushClient JPushClient jpushClient = new JPushClient(MASTER_SECRET, APP_KEY); PushPayload payload = PushPayload.newBuilder() .setPlatform(Platform.ios())//ios平臺的用戶 .setAudience(Audience.all())//所有用戶 //.setAudience(Audience.registrationId(param.get("id")))//registrationId指定用戶 .setNotification(Notification.newBuilder() .addPlatformNotification(IosNotification.newBuilder() .setAlert(param.get("msg")) .setBadge(+1) .setSound("happy")//這裏是設置提示音(更多可以去官網看看) .addExtras(param) .build()) .build()) .setOptions(Options.newBuilder().setApnsProduction(false).build()) .setMessage(Message.newBuilder().setMsgContent(param.get("msg")).addExtras(param).build())//自定義信息 .build(); PushResult pu = null; try { pu = jpushClient.sendPush(payload); } catch (APIConnectionException e) { e.printStackTrace(); } catch (APIRequestException e) { e.printStackTrace(); } return pu; } /** * @param param * @return void * @Description All所有平臺 * @Author lc * @Date 2019-11-20 上午 11:26 **/ public static PushResult jpushAll(Map<String, String> param) { //創建JPushClient JPushClient jpushClient = new JPushClient(MASTER_SECRET, APP_KEY); //創建option PushPayload payload = PushPayload.newBuilder() .setPlatform(Platform.all()) //所有平臺的用戶 .setAudience(Audience.registrationId(param.get("id")))//registrationId指定用戶 .setNotification(Notification.newBuilder() .addPlatformNotification(IosNotification.newBuilder() //發送ios .setAlert(param.get("msg")) //消息體 .setBadge(+1) .setSound("happy") //ios提示音 .addExtras(param) //附加參數 .build()) .addPlatformNotification(AndroidNotification.newBuilder() //發送android .addExtras(param) //附加參數 .setAlert(param.get("msg")) //消息體 .build()) .build()) .setOptions(Options.newBuilder().setApnsProduction(true).build())//指定開發環境 true爲生產模式 false 爲測試模式 (android不區分模式,ios區分模式) .setMessage(Message.newBuilder().setMsgContent(param.get("msg")).addExtras(param).build())//自定義信息 .build(); PushResult pu = null; try { pu = jpushClient.sendPush(payload); System.out.println(pu.toString()); } catch (APIConnectionException e) { e.printStackTrace(); } catch (APIRequestException e) { e.printStackTrace(); } return pu; } }