springboot整合極光推送實現APP通知


JPush 簡介

JPush 是經過考驗的大規模 App 推送平台,每天推送消息數超過 5 億條。 開發者集成 SDK 后,可以通過調用 API 推送消息。同時,JPush 提供可視化的 web 端控制台發送通知,統計分析推送效果。 JPush 全面支持 Android, iOS, Winphone 三大手機平台。

消息形式

JPush 提供四種消息形式:通知,自定義消息,富媒體和本地通知。

推送目標

通過使用標簽,別名,Registration ID 和用戶分群,開發者可以向特定的一個或多個用戶推送消息。

快速開始

  • 到極光推送官方網站注冊開發者帳號
  • 登錄進入管理控制台,創建應用程序,得到 Appkey(SDK 與服務器端通過 Appkey 互相識別);
  • 在推送設置中給 Android 設置包名、給 iOS 上傳證書、啟用 WinPhone,根據你的需求進行選擇;
  • 下載 SDK 集成到 App 里。

1.依賴

        <dependency>
            <groupId>cn.jpush.api</groupId>
            <artifactId>jpush-client</artifactId>
            <version>3.3.0</version>
        </dependency>
        <dependency>
            <groupId>cn.jpush.api</groupId>
            <artifactId>jiguang-common</artifactId>
            <version>1.0.8</version>
        </dependency>

2.代碼

package com.huasharp.smartapartment.util;

import cn.jiguang.common.ClientConfig;
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 com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.huasharp.smartapartment.entity.Usermssage;

import java.util.*;

/**
 *
 */
public class JpushManager {

    private static JpushManager instance;

    private String appkey = null;
    private String appMasterSecret = null;
    private JPushClient jpushClient = null;

    /**
     * @return
     */
    public static JpushManager getInstance() {
        if (instance == null) {
            instance = new JpushManager("56565165", "65956599681");
        }
        return instance;
    }

    /**
     * @param key
     * @param secret
     */
    private JpushManager(String key, String secret) {
        try {
            appkey = key;
            appMasterSecret = secret;

            jpushClient = new JPushClient(appMasterSecret, appkey, null, ClientConfig.getInstance());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * @param alias   別名
     * @param
     * @param title   標題
     * @param content 內容
     * @param
     * @param
     * @param isRing
     * @throws Exception
     */
    public void send(Collection<String> alias, String title, String content, String type, boolean isRing) throws Exception {
        try {
            //推送安卓
            AndroidNotification androidNotification = AndroidNotification.newBuilder().setAlert(content).addExtra("type", type).build();

            PushPayload payload = PushPayload.newBuilder().setPlatform(Platform.android())
                    .setAudience(Audience.newBuilder().addAudienceTarget(AudienceTarget.alias(alias)).build())
                    .setNotification(Notification.newBuilder().addPlatformNotification(androidNotification).build())
                    .setMessage(Message.newBuilder().setTitle(title).setMsgContent(content).build()).build();
            PushResult result = jpushClient.sendPush(payload);
            System.err.println(result);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        try {
            //ios
            IosNotification iosNotification = IosNotification.newBuilder().setAlert(content).addExtra("type", type).setBadge(5)
                    .setSound("Alarm.aif").build();
            PushPayload payloadIos = PushPayload.newBuilder().setPlatform(Platform.ios())
                    .setAudience(Audience.newBuilder().addAudienceTarget(AudienceTarget.alias(alias)).build())
                    .setOptions(Options.newBuilder().setApnsProduction(true).build())//true-推送生產環境 false-推送開發環境(測試使用參數)
                    .setNotification(Notification.newBuilder().addPlatformNotification(iosNotification).build())
                    .build();
            jpushClient.sendPush(payloadIos);
        } catch (Exception ex) {
            ex.printStackTrace();
        }

    }

    public static void main(String[] args) {// 極光推送
            Usermssage usermssage = new Usermssage();
            usermssage.setUserid("1");
            usermssage.setCategory("2");
            usermssage.setMessagetype(4);
            usermssage.setResourceurl("http://47.120.13.865:8001/huasharp/file/用戶須知.docx");
            usermssage.setContent("歡迎您成為平台用戶,我們將熱忱為您服務。請點擊閱讀《用戶須知》");
            usermssage.setStatus(0);
            usermssage.setCommonid(null);
            usermssage.setSendtime(new Date());
            usermssage.setCreatetime(new Date());
            usermssage.setModifytime(new Date());
            usermssage.setTitle("注冊信息");
            List<String> userList = new ArrayList<>();
            userList.add("441900U00000044");
            String type = JSONObject.toJSONString(usermssage, SerializerFeature.WriteDateUseDateFormat, SerializerFeature.WriteNullStringAsEmpty, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullNumberAsZero);
            try {
                    JpushManager.getInstance().send(userList, "提示", "歡迎您成為平台用戶,我們將熱忱為您服務。請點擊閱讀《用戶須知》", type, true);

            } catch (Exception e) {
                e.printStackTrace();
            }
               
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM