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
  • 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
  • 测试环境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消息,不会生成具体的任务,拿到了直接发给用户。发的过程中会记日志。

消息格式体

参数名称 参数类型 可否为空 参数解释 默认值 备注
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());
    }

}