1. 程式人生 > 實用技巧 >springboot整合極光推送實現APP通知

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