推送消息收不到排查步骤
最新资讯 • U-Push
34843
2019-6-5
摘要:
推送的消息收不到是开发者问得比较多的,其原因也有很多种,需要一步步排查才能确定是哪个环节出了问题。在推送服务无故障的情况下,开发者可从以下几个方面来排查。

推送的消息收不到是开发者问得比较多的,其原因也有很多种,需要一步步排查才能确定是哪个环节出了问题。在推送服务无故障的情况下,开发者可从以下几个方面来排查。

一  不同的平台(android,ios)

首先需要明确的是,推送是区分平台的,根据平台不同有一些排查步骤是不同的。

1.android

如果设备收不到消息,可以先在工具里面查询是消息确实没有下发还是因为设备的长连接不在线导致的。如下图所示。

        

如果根据token看不到对应的消息记录,表示确实没有给这个设备发。可能的原因:a.device_token无效了;b.appkey和device_token不对应;c.没有筛选出来(具体原因需要根据发送类型来查)

如果能查到消息记录,看看消息状态,如果是【已受理】,表示因为设备长连不在线导致消息没有下发;如果是【已过期】,表示设备在消息的有效期内没有在线,消息不会再下发了;如果是【已送达】,可能是开发者没有注意或者是sdk端集成有问题,或者不允许展示通知,具体原因可能需要在客户端看一下日志。

 2.ios

需要强调一点,iOS是严格区分生产和开发环境的,device_token在不同环境下是不一样的,需要开发者自己确定使用的环境,到具体的环境下去发送消息。

同android一样,后台工具中也可以根据device_token查询消息历史。


有具体的失败原因,一般都是环境没搞对造成的。


二       发送类型

             1.广播

                 正常情况下,消息入库有延迟,一般t+1

             2.组播

                  同上

             3.文件播

                 可能文件上传格式有问题

             4.自定义播

在后台工具中根据appkey,alias_type,alias查一下是否有token,如果没有,一般是alias调用有问题造成的。

           

三         正式和测试模式

有些开发者反馈测试模式下的广播或组播收不到,有可能根本没添加测试设备(还真有这样的人……)

对于安卓而言,正式和测试模式下的device_token是相同的,这时测试模式只对广播和组播生效,即只对添加了的那些测试设备进行筛选,而如果用api发单播或文件播,即是设备不是测试设备也能收到。

对于iOS而言,生产环境(正式)和开发环境(测试模式)下的device_token是不同的,只有开发者自己能区分开两个环境消息才能成功下发。

需要注意的是,正式消息和测试消息在后台的不同地方展示。

四       portal vs api  

有些开发者反馈用portal发送客户端可以收到消息,用api创建消息返回成功,但是客户端收不到消息,这种情况通常是开发者设置的参数有问题,可以根据portal提供的工具来排查。

在消息创建的最后确认环节,会有【发送内容】,即是发送给api的数据,可以根据此数据格式检查是不是用api发送时有字段搞错了。如下图所示。

            

在消息创建的最后确认环节,会有【发送内容】,即是发送给api的数据,可以根据此数据格式检查是不是用api发送时有字段搞错了。比较容易搞混的是production_mode,为true则为正式消息,为false则是测试消息,可能有开发者在portal操作时并没有留意是哪种模式的。