push-对外接口文档.md
9.24 KB
push 对外接口文档
1、生成推送任务接口【入库,可针对场景统计发送总数和打开总数】
适用场景:
- 针对一批确定的用户,比如订阅了某个秒杀活动的20W用户,给他们推
秒杀活动即将开始
的消息。
对接方式:
- 直接往rabbitMQ写一条消息进MQ, 所有
push
节点会监听MQ, 接收到推送任务之后,生成一条具体的task。- topic类型 :
yoho_task_push
- 测试环境rabbitMq账号密码:[取的是global-autoconfig.properties中
rabbit_common
的值]- rabbit_host=${rabbit_common} 【
192.168.102.211:5672
】 - rabbit_user=${rabbit_common_user}【yoho】
- rabbit_password=${rabbit_common_password}【yoho】
- rabbit_vhost=yoho
- AWS rabbitMq账号密码:[取的是global-autoconfig.properties中
rabbit_common
的值] - rabbit_host=${rabbit_common} 【
rabbitmq-common.yohoops.org:5672
】 - rabbit_user=${rabbit_common_user}【yoho】
- rabbit_password=${rabbit_common_password}【yoho】
- rabbit_vhost=yoho
- rabbit_host=${rabbit_common} 【
- topic类型 :
- PUSH收到此中MQ消息,会生成一条具体的推送任务入库,表名是q_msg_system的send_task表。PUSH在处理的时候会把该条推送对应的用户写进redis。
消息格式体
参数名称 | 参数类型 | 可否为空 | 参数解释 | 默认值 | 备注 |
---|---|---|---|---|---|
androidTitle | String | 是 | 安卓推送标题 | null | 无 |
androidContent | String | 是 | 安卓推送内容 | null | 安卓的推送分为title和content两部分 |
iosAlert | String | 是 | ios推送内容 | null | ios的推送只有alert |
appendParams | String | 否 | APP跳转链接 | null | 必须为JSON格式 的字符串,给APP跳转使用 |
sendTime | long | 否 | 发送时间 | null | 可做定时用,此值小于PUSH服务器的时间即会发送 |
sceneType | String | 否 | 此次推送的场景 | null | 如品牌上新 为ADDED_BRANDS |
sceneKey | String | 否 | 此次推送的场景key | null | 如品牌上新 时此值为brand_id |
uids | List | 否 | 推送给哪些用户 | null | 大小不要超过10000,量大时自行分片 |
iosVersions | List | 是 | ios版本号 | null | 无 |
androidVersions | List | 是 | 安卓的版本号 | null | 无 |
- 参数申明
- androidTitle和androidContent同时为空,则不会生成安卓的推送任务。
- iosAlert为空,则不会生成ios的推送任务。
- sceneType 和 sceneKey 很重要,大数据统计时会用到,请合理命名。
- uids大小不要超过1W,数据量大时,请自行分片。
生成MQ消息实体的demo
- PushTaskMqMessage对象
public class PushTaskMqMessage{
private String androidTitle;// 安卓推送标题
private String androidContent;// 安卓推送内容
private String iosAlert;// IOS推送内容
private String appendParams = "{\"type\":\"event\",\"ad_action\":\"go.brand\",\"ad_option\":\"brand=4\"}";// 推送跳转的链接,默认品牌首页
private Long sendTime;// 推送时间
private String sceneType;// sceneType 的类型(如上新推送、改价推送、到时候有统一的配置,方便)
private String sceneKey;// 推送场景的key(如上新推送的brandId)
private List<String> uids;// 要给哪些用户推送
private List<String> iosVersions;// 推送的版本号
private List<String> androidVersions;// 推送的版本号
}
- 生成写进MQ的消息字符串
public static void main(String[] args) {
JSONObject pushMessage = new JSONObject();
PushTaskMqMessage pushTaskMqMessage = new PushTaskMqMessage();
//设置安卓推送标题和内容,同时为空则不推送安卓
pushTaskMqMessage.setAndroidTitle("秒杀活动即将开始");
pushTaskMqMessage.setAndroidContent("adidas秒杀活动计即将开始,赶紧戳进来>>");
//设置IOS推送内容,为空则不推送IOS
pushTaskMqMessage.setIosAlert("您订阅的adidas秒杀活动计即将开始,赶紧戳进来>>");
//APP跳转链接,有参考文档,一定要是个完整的JSON字符串
pushTaskMqMessage.setAppendParams("{\"type\":\"event\",\"ad_action\":\"go.url\",\"ad_option\":\"link=http://feature.yoho.cn/1019/1019NEWGIRL/index.html?app_version=4.9.2.1609120001\",\"isLogin\":\"Y\",\"act_id\":\"841\"}");
//设置推送场景和推送key
pushTaskMqMessage.setSceneType("SpecilSkill");
pushTaskMqMessage.setSceneKey("841");
//设置推送的uids,一批不要超过1W,量大自行分片
pushTaskMqMessage.setUids(Arrays.asList("1","2","3","4","5","6","7","8","9","10","11","12","13","14","15"));
//设置APP版本,不设则所有的版本
pushTaskMqMessage.setIosVersions(null);
pushTaskMqMessage.setAndroidVersions(null);
//生成丢进mq的字符串
pushMessage.put("data", pushTaskMqMessage);
String addToMqString = pushMessage.toJSONString();
System.out.println(addToMqString);
//TODO ADD pushMessage json String to RabbitMq,topic is yoho_task_push
}
2、直接发给用户【不入库,日志中可统计推送总数,无法统计打开总数】
适用场景:
- 针对某些业务场景,如给用户发一条‘你的订单即将过期,请赶紧支付’的消息,默认不入库。
对接方式:
- 直接往rabbitMQ写一条消息进MQ, 所有
push
节点会监听MQ, 接收到推送任务之后,进行推送。- topic类型 :
yoho_push
- topic类型 :
- 测试环境rabbitMq账号密码:[取的是global-autoconfig.properties中
rabbit_common
的值] - rabbit_host=${rabbit_common} 【192.168.102.211:5672
】 - rabbit_user=${rabbit_common_user}【yoho】 - rabbit_password=${rabbit_common_password}【yoho】 - rabbit_vhost=yoho- AWS rabbitMq账号密码:[取的是global-autoconfig.properties中
rabbit_common
的值]- rabbit_host=${rabbit_common} 【
rabbitmq-common.yohoops.org:5672
】 - rabbit_user=${rabbit_common_user}【yoho】
- rabbit_password=${rabbit_common_password}【yoho】
- rabbit_vhost=yoho
- PUSH收到此中MQ消息,不会生成具体的任务,拿到了直接发给用户。发的过程中会记日志。
- rabbit_host=${rabbit_common} 【
- AWS rabbitMq账号密码:[取的是global-autoconfig.properties中
消息格式体
参数名称 | 参数类型 | 可否为空 | 参数解释 | 默认值 | 备注 |
---|---|---|---|---|---|
id | int | 否 | 任务id,请设为0
|
无 | |
title | String | 否 | 推送标题 | 无 | 推送类型为安卓时,为安卓标题,ios则设为'' |
content | String | 否 | 推送内容 | 无 | 安卓推送的内容或IOS推送的内容 |
sendMethods | String | 否 | 推送方法 | android_getui或ios | 安卓为android_getui,ios为ios |
version | String | 是 | APP推送的具体版本 | null | 不传为全部版本 |
appendParams | String | 否 | APP跳转链接 | null | 必须为JSON格式 的字符串,给APP跳转使用 |
pushScene | String | 否 | 此次推送的场景 | null | 如订单即将关闭 为ORDER_PUSH |
pushSceneKey | String | 否 | 此次推送的场景key | null | 如订单即将关闭 ,此值为order_id |
uids | List | 否 | 推送给哪些用户 | null | 大小不要超过10000,量大时自行分片 |
- 参数申明
- title和content表示推送的内容和标题,安卓两个字段都要填,ios的title设为'',content设为完整的推送内容
- id为send_task表中对应的id,因为业务方并不知道,默认情况下直接设为0即可。
- sceneType 和 sceneKey 很重要,大数据统计时会用到,请合理命名。
- uids大小不要超过1W,数据量大时,请自行分片。
生成MQ消息实体的demo
- PushSendTaskBO对象
public class PushSendTaskBO {
private int id = 0;//任务id,为0即可
private String title;//推送标题
private String content;//推送内容
private String sendMethods;//ios/android_getui
private String version;//版本,可为空
private String appendParams;//APP跳转链接
private String pushScene;//推送场景
private String pushSceneKey;//推送场景key
}
- DispatchPushMsgBO对象
public class DispatchPushMsgBO {
private PushSendTaskBO task;
private List<String> uids;
}
- 生成写进MQ的消息字符串
public class DispatchPushMsgDemo {
public static void main(String[] args) {
JSONObject dispatchPushMsgDemo = new JSONObject();
DispatchPushMsgBO dispatchPushMsg = new DispatchPushMsgBO();
//构造推送内容
PushSendTaskBO pushSendTaskBO = new PushSendTaskBO();
pushSendTaskBO.setId(0);
pushSendTaskBO.setTitle("");
pushSendTaskBO.setContent("您订阅的adidas秒杀活动计即将开始,赶紧戳进来>>");
pushSendTaskBO.setAppendParams("{\"type\":\"event\",\"ad_action\":\"go.url\",\"ad_option\":\"link=http://feature.yoho.cn/1019/1019NEWGIRL/index.html?app_version=4.9.2.1609120001\",\"isLogin\":\"Y\",\"act_id\":\"841\"}");
pushSendTaskBO.setPushScene("SpecilSkill");
pushSendTaskBO.setPushSceneKey("841");
pushSendTaskBO.setSendMethods("ios");
dispatchPushMsg.setTask(pushSendTaskBO);
//构造推送的uids
dispatchPushMsg.setUids(Arrays.asList("1","2","3","4","5","6","7","8","9","10","11","12","13","14","15"));
dispatchPushMsgDemo.put("data", dispatchPushMsg);
//显示MQ消息的内容
System.out.println(dispatchPushMsgDemo.toJSONString());
}
}