首頁 > 軟體

Java伺服器端呼叫JPushAPI

2019-12-10 18:38:18

實現主動推播,還是需要結合我們應用的業務邏輯來判斷具體什麼時候、推播什麼資訊

這裡就詳細介紹下Java伺服器端呼叫JPushAPI

1

去下載jpush伺服器端sdk。

如果使用maven直接在pom.xml中加入對應的依賴包

在原有的基礎上加上:

<dependency>

           <groupId>com.google.code.gson</groupId>

           <artifactId>gson</artifactId>

           <version>2.2.4</version>

       </dependency>

  <dependency>

      <groupId>cn.jpush.api</groupId>

      <artifactId>jpush-client</artifactId>

      <version>3.2.3</version>

  </dependency>

  <dependency>

    <groupId>net.sf.json-lib</groupId>

    <artifactId>json-lib</artifactId>

    <version>2.4</version>

    <classifier>jdk15</classifier>

   </dependency>


2

使用推播的關鍵在於構建PushPayload

先構建一個推播所有平台、所有裝置的推播物件

public static PushPayload buildPushAllPayload(String alert) {

        return PushPayload.alertAll(alert);

}


3

因為IOS和Android通知的顯示形式不一樣,所以我們這兩者分開寫,分別單獨推播。

根據別名、內容、標題,構建一個推播IOS平台的推播物件

這裡可以對別名進行統一處理,譬如jpush不支援別名中含點號,而我們的賬號中都是含有點號的,這裡就可以統一替換,而不用每次呼叫時替換

同樣在用戶端登陸時需要把點號換成"_"進行設定別名。

public static PushPayload buildIOSPayload(String alias,String alert) {

        return PushPayload.newBuilder()

                .setPlatform(Platform.ios_winphone())

                .setAudience(Audience.alias(alias.replace(".", "_")))

                .setNotification(Notification.newBuilder()

                .setAlert(alert)

                .build())

                 .build();

    }


4

根據別名、內容、標題,構建一個推播Android和windows phone平台的推播物件

public static PushPayload buildAndroidWinphonePayload(String alias,

    String alert,String title) {

        return PushPayload.newBuilder()

                .setPlatform(Platform.android())

                .setAudience(Audience.alias(alias.replace(".", "_")))

                .setNotification(Notification.newBuilder()

                .setAlert(alert)

                .addPlatformNotification(AndroidNotification.newBuilder()

                .setTitle(title).build())

                .build())

                 .build();

    }


5

測試

寫個main方法測試下如何吧

appKey、masterSecret對應你的應用申請的key和secret

這時候我們傳別名的時候,可以直接用原有的包含「.」的賬號


6

如果別名不存在,會丟擲異常。 Your request params is invalid.

用對應的賬號登陸下用戶端,這時JPush才知道別名對應哪個裝置,再傳送ok成功了。去裝置上看下結果



7

移動裝置顯示效果

這是Android的顯示效果,內容只會顯示部分,而IOS可以顯示內容詳情,

所以有時才有需求要根據平台分別推播。


8

注意項:

發個不同平台分別推播的部分程式碼

如果你的賬號只登陸了一個IOS裝置,推播Android平台時就會拋異常,所以兩個推播不能寫在一個例外處理塊中,同樣這樣異常資訊也不用處理啦,太多啦。。。



IT145.com E-mail:sddin#qq.com