SpringBoot服務端集成極光推送

1. 添加依賴

<!-- 極光推送 -->
		<dependency>
			<groupId>cn.jpush.api</groupId>
			<artifactId>jpush-client</artifactId>
			<version>3.4.6</version>
		</dependency>

2. 推送工具類

/**
 * create by 星航指揮官
 * create on 2020/11/22
 * 不過是大夢一場空
 * 不過是孤影照驚鴻
 */
public class JpushUtils {
    // 設置app_key和masterSecret
    private static String APP_KEY = "71e7432cf51877daf5334115";
    private static String MASTER_SECRET = "acf5f4dd6302eaebf24c1eef";


    /*
    * android端推送
    * parm參數是Controller層傳來的參數,設置了通知的具體內容
    * */
    public static void jpushAndroid(Map<String, String> parm) {

        //建立JPushClient(極光推送的實例)
        JPushClient jpushClient = new JPushClient(MASTER_SECRET, APP_KEY);
        //推送的關鍵,構造一個payload
        PushPayload payload = PushPayload.newBuilder()
                .setPlatform(Platform.android())//指定android平臺
//                .setAudience(Audience.all())//通知所有  即廣播(免費版一天只有10次機會)
//                .setAudience(Audience.alias(parm.get("alias")))//根據別名發送
                .setAudience(Audience.tag(parm.get("tag")))//根據標籤發送
//                .setAudience(Audience.registrationId(parm.get("id")))//指定用戶發送
                .setOptions(Options.newBuilder().setApnsProduction(true).setTimeToLive(7200).build())
                // apnProduction指定開發環境 true爲生產模式 false 爲測試模式 (android不區分模式,ios區分模式) 不用設置也不要緊
                // TimeToLive 緩存時間
                .setNotification(Notification.android(parm.get("msg"), parm.get("title"), parm))  //發送通知
                .setMessage(Message.content(parm.get("msg")))//自定義信息  和上一個二選一 固然也能夠一塊兒發
                .build();//建立
        try {
            PushResult pushResult = jpushClient.sendPush(payload);
            System.out.println(pushResult.toString());
        } catch (APIConnectionException e) {
            e.printStackTrace();
        } catch (APIRequestException e) {
            e.printStackTrace();
        }
    }

    /*
     * ios端推送
     * parm參數是Controller層傳來的參數,設置了通知的具體內容
     * */
    public static void jpushIOS(Map<String, String> parm) {

        //建立JPushClient
        JPushClient jpushClient = new JPushClient(MASTER_SECRET, APP_KEY);
        PushPayload payload = PushPayload.newBuilder()
                .setPlatform(Platform.ios())//ios平臺
                .setAudience(Audience.all())//全部用戶
                //.setAudience(Audience.registrationId(parm.get("id")))//registrationId指定用戶
                .setNotification(Notification.newBuilder()
                        .addPlatformNotification(IosNotification.newBuilder()
                                .setAlert(parm.get("msg"))
                                .setBadge(+1)
                                .setSound("happy")//這裏是設置提示音
                                .addExtras(parm)
                                .build())
                        .build())
                .setOptions(Options.newBuilder().setApnsProduction(false).build())
                .setMessage(Message.newBuilder().setMsgContent(parm.get("msg")).addExtras(parm).build())//自定義信息
                .build();

        try {
            PushResult pushResult = jpushClient.sendPush(payload);
            System.out.println(pushResult.toString());
        } catch (APIConnectionException e) {
            e.printStackTrace();
        } catch (APIRequestException e) {
            e.printStackTrace();
        }
    }


    /*
     * android於ios端同時推送
     * parm參數是Controller層傳來的參數,設置了通知的具體內容
     * */
    public static void jpushAll(Map<String, String> parm) {
        //建立JPushClient
        JPushClient jpushClient = new JPushClient(MASTER_SECRET, APP_KEY);
        //建立option
        PushPayload payload = PushPayload.newBuilder()
                .setPlatform(Platform.all())  //全部平臺的用戶
                .setAudience(Audience.registrationId(parm.get("id")))//registrationId指定用戶
                .setNotification(Notification.newBuilder()
                        .addPlatformNotification(IosNotification.newBuilder() //發送ios
                                .setAlert(parm.get("msg")) //消息體
                                .setBadge(+1)
                                .setSound("happy") //ios提示音
                                .addExtras(parm) //附加參數
                                .build())
                        .addPlatformNotification(AndroidNotification.newBuilder() //發送android
                                .addExtras(parm) //附加參數
                                .setAlert(parm.get("msg")) //消息體
                                .build())
                        .build())
                .setOptions(Options.newBuilder().setApnsProduction(true).build())//指定開發環境 true爲生產模式 false 爲測試模式 (android不區分模式,ios區分模式)
                .setMessage(Message.newBuilder().setMsgContent(parm.get("msg")).addExtras(parm).build())//自定義信息
                .build();
        try {
            PushResult pushResult = jpushClient.sendPush(payload);
            System.out.println(pushResult.toString());
        } catch (APIConnectionException e) {
            e.printStackTrace();
        } catch (APIRequestException e) {
            e.printStackTrace();
        }
    }
}

3. 推送消息

@RequestMapping("/androidPush")
    public Result pushMessageToAndroid(){
        //建立參數集合
        Map<String, String> parm = new HashMap<>();
        //設置標題
        parm.put("title","Alin");
        //設置內容
        parm.put("msg","Hello Alin !");
        //設置標籤
        parm.put("tag","0x412");
        //設置別名
        parm.put("alias","0x123");
        //發送推送
        JpushUtils.jpushAndroid(parm);

        return new Result(49,"SUCCESS",null);
    }

4. 小提示

若是極光推送沒有用戶會報錯誤碼:1011java

此時先檢查集成是否成功android

再檢查標籤或者別名是否是設置錯誤ios

END

相關文章
相關標籤/搜索