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,上线后拉取消息)