1.需求布景&方针

1.1需求布景

依据极光后台检查发送记载,大概有超越一半的push发送失败,此次push重构为了添加推送成功率

Android实战——极光推送前后端整体设计

Android实战——极光推送前后端整体设计

1.2方针

  1. 推送类型

在线推送:app在前台或后台,依据极光战略推送,默许战略是先极光通道再厂商通道。华为现在已强制厂商通道,其他厂商有次数限制所以运用默许战略

离线推送:app进程不在,这个有必要走厂商通道才干送达

  1. 方针:app在后台/app进程不在时展现推送,在前台不展现推送

2.技术方案设计

2.1核心模块

2.1.1发送push链路

Android实战——极光推送前后端整体设计

2.1.2上报alias流程图

客户端setAlias将当时设备绑定到该alias=md5(userId),并上报给极光,这样发每条推送home server拿到方针用户的userId后,经过jiguang push serivce 计算出alias=md5(userId)调极光api发推送,极光经过alias找到对应设备后发送推送

Android实战——极光推送前后端整体设计

2.1.3App上报前后台状况给Jiguang Push Service

为了实现方针中app在前台不发推送,app在后台发推送,需求jiguang push service维护一份发送推送时该用户app在前后台状况。为了处理app反常退出未上报的鸿沟情况,app在前台时守时的告诉jiguang push service

Android实战——极光推送前后端整体设计

2.1.4Jiguang push service发送push前置条件

作为中间层,home service发来恳求时,会依据当时alias的push开关、前后台状况来决议是否调用极光api发送push

Android实战——极光推送前后端整体设计

2.2后端接口界说

//上报alias给极光
JPushInterface.setAlias(context, 0, getPushAlias())
​
//移除极光推送Alias绑定的一切设备:由jpushservice供给
@POST("mobile/deleteAlia")
fun deleteAliasRequest(@Body deleteAliasReq: DeleteAliasReq): Observable<Response<Void>>
 
//上报pushService前后台状况:由jpushservice供给
@POST("mobile/report")
fun reportActiveRequest(@Body reportActiveReq: ReportActiveReq): Observable<Response<Void>>
 
//从极光移除alias
JPushInterface.deleteAlias(context, 0)

2.3鸿沟情况

  1. 第一次登陆后忽然断网,导致alias上报失败,下次再进入首页会从头触发2.1.2上报alias逻辑
  2. app断网后,无法上报前后台状况,jiguang push service会执行发送逻辑,来网后仍然接收到push
  3. app反常退出没有上报前后台状况,jiguang push service会依据轮询时刻已过期,触发极光离线推送逻辑
  4. 华为因为极光通道不稳定强制走厂商,vivo因为默许测验,所以调整为出产:
thirdPartyChannel = new HashMap<>();
JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("importance", importance);
jsonObject.addProperty("distribution", "ospush");
thirdPartyChannel.put("huawei", jsonObject);
​
JsonObject vivoParam = new JsonObject();
vivoParam.addProperty("classification", 1);
thirdPartyChannel.put("vivo", vivoParam);

2.4兼容性

push开关逻辑不兼容之前已装置且已封闭push

不兼容未更新app版别用户

3.0上线注意事项

需求Jiguang push service & home server & android app同步上线,app需求强制更新

4.0参考资料

1.各个厂商注册push:docs.jiguang.cn/jpush/clien…

2.Android集成各个厂商通道:docs.jiguang.cn/jpush/clien…

3.Android SDK集成指南:docs.jiguang.cn/jpush/clien…

4.删去别号一切设备绑定关系:docs.jiguang.cn/jpush/serve…删去别号

5.vivo选择推送系统消息:dev.vivo.com.cn/documentCen…