问题描述
在测试推送时,发现控制台报了如下错误
定位到问题是推送传输的内容过长导致的
在阿里云文档中找到相关的描述
解决办法
出现该错误的原因是服务端在推送时进行了优化处理,相同类型的数据由轮询推送改为直接推送一条 List
,导致提交的实体长度过长。目前这样处理的推送有许多:
目前的解决办法就是将实体拆分成多个子数据块分别传输,代码如下:
List类型的数据进行拆分后不会影响数据的完整性,其他类型的数据拆分后数据完整性会受到影响。因此目前仅处理了 List
类型的数据,其他类型的数据如果长度过长仍然会报该错误。目前想到的解决办法有两个:
- 类似
netty
的拆包粘包操作。正常拆分,拆分后的子数据块增加标识,App
在接收到有相应标识的数据时,需要进行相应的处理。 - 若数据过长,则不执行推送。而是推送一条特殊数据给
App
端,App
端在接收到该数据后,主动请求服务器执行拉取操作。
阿里云推送的其他限制
详细见链接:移动推送使用限制