作者:HW-LKZ
一:推送方式和原理:全量推送和单点推送
全量推送:通过主题订阅的方式,主题为{projectID}_Client_All_{language},
单点推送:通过fcm 返回的token进行定点推送,cms根据token和imei号的绑定关系来确定使用哪些token推送
相对于全量推送,全量推送问题较少,因为只需向google订阅主题,无需和store绑定交互。单点推送较为复杂,因为需要在客户端启动时,向store上报加密imei号和token的绑定关系。
二:问题举例
1:cms配置提示imei has no token 或 all failed
定位:在store对应的数据库中查询 select * from m_imei_devicetoken where iMei='xxx'; 其中xxx为加密后的imei号,需要一线提供有问题的手机对应的两个imei号。
查询结果1:imei号在store数据库表m_imei_devicetoken不存在。
那么原因可能是imei号有误,也可能是从未向store上报过token和imei的绑定关系 (这种情况可能性较低)
查询结果2:记录存在但表中的updatetime时间过久,原因是长时间未向store更新imei和token的绑定关系,即store表里的token已过期,需要分析具体原因
原因1)客户端版本较老,imei号获取失败 (动态授权过晚的bug,七月份之前的客户端版本存在,七月之后的为修复版本,现网仍存在不少7月之前的版本,需要确定版本是否过低)
解决方式:升级客户端版本
原因2)升级了7月修复版本,但上个版本的老的token 数据仍然存在在客户端的shareperference中,且未过期,客户端以为已经上报过这个token,则此时仍然不会向store上报注册请求,导致store表里的DEVICETOKEN还是过期的
解决方式:
11)需要等fcm token自然过期,过期时间不详,网上上是7天,没有验证过
22)手动清空数据,在重新推送
原因3)从fcm未获取到token,导致不会向store注册 (有可能是fcm服务器异常,2018.9.10号问题,2018.9.11号变正常了)
解决方式:无
2:cms配置提示token unregistered
由于客户端卸载之后立即进行推送引起,此时google还存在老token的映射关系,从网上找的解决方式之一是应用卸载时 FirebaseInstanceId.getInstance().deleteInstanceId();
但考虑到未经验证; 实际测试时可以等一段时间如半小时之后在重新推送测试。3:如何判断m_imei_devicetoken 表的DEVICETOKEN有没有过期?
取客户端日志,目录为gameclient/logger/{packageName} (packageName)为对应的apk包名
搜索:'MainActivity: subscribeGCMTopic | fcm ' 或 'Refreshed fcm'
看这个结果是否和store中的DEVICETOKEN的值相同,如果相同,且日志时间和表中updateTime对应,证明是通过这次启动上报的,说明表里的数据是最新上报的,是正常的;如果不一致,证明是客户端取到了最新的token,但是无法上报到store,这种情况会导致单点推送失败
4:客户端更新token的两个时机和依赖的两个服务
更新token的两个时机:
一个是在客户端启动时调用google接口获取,如果上次的未过期,则仍然返回上次的
日志里搜subscribeGCMTopic | fcm
另一个是在token过期或FirebaseInstanceId被卸载(常见于客户端被卸载时),google fcm通过MyFirebaseInstanceIDService服务里的onTokenRefresh()来主动通知 ,客户端日志里可以搜Refreshed fcm
依赖的两个服务:
MyFirebaseInstanceIDService主要是跟踪token是否被更新,客户端日志关键字Refreshed fcm
MyFirebaseMessagingService用来真正接收message,客户端日志关键字onMessageReceived,同一个id的消息,会被service接收,但不会显示。
5:为什么用老版本的客户端单点推送有时仍然成功,有时不成功?
每次重新安装老客户端之后,第一次因为动态授权过晚,向store·注册是异常的。在token还未过期的之前的这段时间,推送是有问题的。 但在过期之后重新启动,此时早已动态授权过,imei号获取正常,且会重新向store发送注册请求,就变成了正常的。
注意:以上问题仅针对单点imei推送,或全量推送时需要对指定imei号做测试, 不涉及正式全量推送





































苏公安网备 32011402010933号