Java 整合極光推送官方文檔:https://github.com/jpush/jpush-api-java-client
這里記錄一下簡單的使用步驟:創建一個普通的 Maven 工程然后添加依賴
<dependency>
<groupId>cn.jpush.api</groupId>
<artifactId>jpush-client</artifactId>
<version>3.4.8</version>
</dependency>
然后創建一個類測試消息推送,代碼如下所示:
public class PushTest {
public static void main(String[] args) throws Exception {
// 實現推送最基本的兩個參數
String APP_KEY = "APP_KEY";
String MASTER_SECRET = "SECRET";
// 構建極光客戶端對象
JPushClient jpushClient = new JPushClient(MASTER_SECRET, APP_KEY);
// 獲取Payload對象,對象內封裝這消息主體、消息接收范圍等等,Payload是個重點
PushPayload payload = getPayload("消息接收測試");
// 調用客戶端對象中的sendPush函數進行發送消息
jpushClient.sendPush(payload);
}
}
構建 Payload 對象
可以看到,通過兩個基本參數構建了極光推送實例,然后獲取到Payload
將其發送出去完成了推送,這里含金量最高的地方就是獲取 payload 的過程,上面獲取 payload 的函數並沒有寫出來,這里單獨拿出來看:
public static PushPayload getPayload(String msg) {
return new PushPayload.Builder()
.setPlatform(Platform.android())
.setAudience(Audience.all())
.setNotification(Notification.alert(msg))
.build();
}
構建最基本的 Payload 對象語法是這樣寫的:
PushPayload payload = new PushPayload.Builder().build();
但是這樣構建出來的是空對象,我們需要在build()
之前對這個實例進行一些操作,例如:
1. 發送消息的內容:最終顯示在通知上的內容
PushPayload payload = new PushPayload.Builder()
// 消息的具體內容,會顯示在通知上
.setNotification(Notification.alert("【系統提示】您有五元話費優惠券待領取"))
.build();
顯示在手機上類似這種效果:
2. 限制接收消息的平台:例如限制為安卓、蘋果
PushPayload payload = new PushPayload.Builder()
.setNotification(Notification.alert("【系統提示】您有五元話費優惠券待領取"))
/*
* setPlatform代表客戶端平台,也就是設備類型,最常用的幾個參數為:
* 1. Platform.all():所有設備都可以接收
* 2. Platform.android():僅安卓設備可接收
* 3. Platform.ios():僅蘋果設備可接收
* 4. Platform.android_ios():安卓、蘋果都可以接收
* ....
*/
.setPlatform(Platform.all())
.build();
3. 限制接收消息的設備:匹配客戶端自行設置的 TAG 標簽以及 Alias 別名
PushPayload payload = new PushPayload.Builder()
.setNotification(Notification.alert("【系統提示】您有五元話費優惠券待領取"))
.setPlatform(Platform.all())
/*
* setAudience可以過濾符合條件的客戶端,最常用的幾個參數為:
* 1. Audience.all():沒有設置過濾條件
* 2. Audience.alias("01", "02" ...):設置了目標別名的設備才能接收到
* 3. Audience.tag("VIP1", "VIP2" ...):添加了目標標簽才可以接收到
* 4. Audience.tag_and("VIP", "SVIP" ...):必須同時擁有這兩個標簽才能接收到
* 5. Audience.tag_not("Guest" ...):必須不包含這些標簽才能接收到
* 還有一些更高級的交集並集玩兒法等等....
*/
.setAudience(Audience.all())
.build();
4. 關於消息的其他配置項:
PushPayload payload = new PushPayload.Builder()
.setNotification(Notification.alert("【系統提示】您有五元話費優惠券待領取"))
.setPlatform(Platform.all())
.setAudience(Audience.all())
/*
* setOptions對消息進行其他設置,需要傳入Options實例,同樣是鏈式編程然后跟上build()函數,例如:
* setTimeToLive(10):消息離線生存時間/s,發送消息后10秒內用戶打開了APP就會收到消息,否則收不到
* 其他配置項我這里沒用過就沒去找....
*/
.setOptions(Options.newBuilder()
.setTimeToLive(10)
.build())
.build();