极光推送[待完善版]

需求:
公司需要对接极光推送推送平台,完成全局推送,定向推送,定时任务推送,定期任务推送,推送结果查询,对于不成功的推送用短信方式补偿。


http://docs.jiguang.cn/jpush/server/push/rest_api_v3_push/


一.基本逻辑
1,APP 端集成极光SDK  强制用户更新,启动APP会自动初始化极光SDK 此时 APP 端会获取到极光服务器发送过来的注册ID(简称:reg_id)
1,1 此时 后台可以做全体推送,没办法做定向推送,因为还没有 注册ID 与 用户的对应关系。
1,2 当用户登录APP 或 注册成功 或 修改密码成功(视具体逻辑) APP 会请求后台 发送 用户ID 与 注册ID,后台做操作 保存对应关系。
1,3 此处应当是每次登陆 ,每次修改密码,都应该请求后台发送注册ID 与 用户ID,如用户卸载APP或 重置系统 等一些其他更改,很大程度上会造成注册ID 的变化,用户如果登录到其他设备,那么定向推送时 是推送到当前设备的.


二.贴标签逻辑
1,想实现定向推送(指定接收推送消息人),最简单的方式就是给某一部分人打上标签,比如‘90后’ ‘穷三代’..然后按标签推送。
2,用户贴标签,能贴标签的用户 数据库记录应当是有注册ID 这个值的,即后台贴标签页面筛选的用户是注册ID不为NULL 或空字符串的
demo method:
//regId 注册ID 
//alias 别名,别名其实就是 regId,只不过 相对于regId 看起来比较直观
//tagsAdd 贴多个标签
//tagsRemove 撕多个标签  此处这个Set 不应该有值
public void labeling(String regId,String alias,Set<String> tagsAdd,Set<String> tagsRemove){
//调用极光API
}
3,用户撕标签,能撕标签的用户 同上。如果此用户没有此标签,做撕标签操作  不会报错
//regId 注册ID 
//alias 别名,别名其实就是 regId,只不过 相对于regId 看起来比较直观
//tagsAdd 贴多个标签 此处这个Set 不应该有值
//tagsRemove 撕多个标签  
public void labeling(String regId,String alias,Set<String> tagsAdd,Set<String> tagsRemove){
//调用极光API
}
4,验证是否 撕贴成功 ,极光提供API 方法


三.推送逻辑
目前分为以下几种情况推送(视具体业务)
1,普通消息+临时消息
2,普通消息+周期消息
3,收益消息+临时消息
4,收益消息+周期消息


简要说下极光 定时任务 与 定期任务 
定时任务 应当是在某个时间点执行一次,此处不同于quartz  timer 等定时任务。
定期任务 应当是依照某个时间点 循环执行 相同于quartz  timer,当然timer 可以只执行一次




(1),普通消息+临时消息  处理:
临时消息  应当是在某个时间点 推送一次,即可以用极光API提供的定时任务完成 执行的时间格式遵守 yyyy-MM-dd HH:mm:ss 24小时制
(2),普通消息+周期消息  处理
周期消息 应当是依照某个时间点 循环执行,极光称之为 定期任务,以每天为单位,当然可以配置复杂的循环时间
(3),收益消息+临时消息  处理
收益消息 与普通消息不同之处在于 一个是定向推送(也就是只推送有收益的用户),一个是全局推送(只要是更新过集成SDK的APP)
由于每个有收益的用户 收益金额是不一样的,即每一个有收益的用户 就是一个推送任务,这一点无法用极光API 实现,因为极光在定时任务这块是有数量限制,收益用户数量绝对大于此限制
由于是临时消息 只执行一次,可用java.util.timer实现,timer内将单个收益用户的收益封装成推送内容结合注册ID  组成一个推送任务,推送给极光。
(4),收益消息+周期消息  处理
解决思路:quartz持久化 或 timer 




四.推送不成功,以及后续处理
1,如果是全局推送,极光视作 推送一次。
2,定向推送,应当是有多个返回结果,此结果服务端可以接收,判断此结果,做相应补发推送。
3,如果是定时任务定向推送,此时返回结果,应当是APP端 将返回结果告知服务端,然后做相应补发推送。




五.推送应该注意
1,按标签推送 多个标签 默认并集关系(tag),可修改为 交集(tag_and)
2,按标签推送 最多支持20个标签 忽略 并集 交集
3,单个标签名称按UTF-8 编码方式 小于等于40字节长度
4,别名 或 regid 推送 最多1000个
5,定期任务时间最大跨度 12个月
6,定时任务 与 定期任务  2者之和不能大于100个
7,删除指定的定时任务与定期任务 之前 需判断 ID 是否存在 如不存在报404
8,更新定时任务与定期任务  一定是没有过期的 才能更新,即执行时间 或 结束时间 不能在当前时间之前
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值