1、簡介——官方文檔
極光,主要指極光推送,還有IM,短信等其它服務,是國內一家上市公司提供的一個消息推送系統。規模較小不強依賴消息,接收一定延遲及小概率宕機事件可以直接使用免費服務,VIP服務最低約3000/月。集成比較簡單,web,Android,IOS都有對應的sdk和詳細的中文文檔,集成成本較低。原理圖如下,類似websocket,在官網註冊創建應用獲取appKey masterSecret,可使用sdk內的 api進行用戶管理,消息發送,也可在web控制檯進行,另外web控制檯提供了較全面的管理界面及統計信息。
推送方式:
- 廣播(所有人)
- 註冊ID(RegistrationID)
- 別名(alias)
- 標籤(tag,分組)
- 用戶分羣(Segment)
2.依賴,參考 GITHUB地址
<dependency>
<groupId>cn.jpush.api</groupId>
<artifactId>jpush-client</artifactId>
<version>3.3.10</version>
</dependency>
3.推送測試
沒有用戶可使用極光的用戶管理相關API增加用戶,如下:使用alias別名推送方式API推送測試。
import cn.jiguang.common.resp.APIConnectionException;
import cn.jiguang.common.resp.APIRequestException;
import cn.jpush.api.JPushClient;
import cn.jpush.api.push.PushResult;
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.notification.AndroidNotification;
import cn.jpush.api.push.model.notification.IosNotification;
import cn.jpush.api.push.model.notification.Notification;
import com.alibaba.fastjson.JSON;
/**
* Description: TODO
*
* @author majun
* @version 1.0
* @date 2020-04-07 17:21
*/
public class JpushTest {
public static PushPayload buildAndroidIosPaylod(String alias, String title, String content) {
return PushPayload.newBuilder()
.setPlatform(Platform.android_ios())
.setAudience(Audience.alias(alias))
.setNotification(Notification.newBuilder()
.setAlert(content)
.addPlatformNotification(AndroidNotification.newBuilder()
.setTitle(title).build())
.addPlatformNotification(IosNotification.newBuilder()
.incrBadge(1)
//.setSound("sound.caf")
//extra 爲透傳字段,不會顯示在通知欄。用戶可以通過此字段來做一些定製需求,如特定的key傳要指定跳轉的頁面(value)
.addExtra(title, content).build())
.build())
.build();
}
public static void main(String[] args) throws APIConnectionException, APIRequestException {
JPushClient jpushClient = new JPushClient("XXXXXXXX1818ffXXXXXXXX", "XXXXXXXX1c0abe1XXXXXXXX");
PushResult result = jpushClient.sendPush(buildAndroidIosPaylod("181112950xx", "my title", "my content"));
System.out.println(JSON.toJSONString(result));
}
}
控制檯結果,也可用這裏的【發送通知】手動發送推送
App app需要集成android/ios SDK且在線(既與極光建立長連接,否則看到的極光通道成功數據統計未0,對於不在線的用戶,可以將消息存一份到DB,上線後拉取消息)