1.一切都配置完成之后, 开始测试. 第一次启动 App, 杀死. 发送测试消息. 收不到推送.
2.再次启动 App, 杀死, 发送测试消息. 这次能收到推送了.
第一次杀死 App 之后, 发送测试消息, 可以看到 log 中会即时打出:
`09-17 11:50:34.298 W/GCM ( 2025): broadcast intent callback: result=CANCELLED forIntent { act=com.google.android.c2dm.intent.RECEIVE pkg=com.rongcloud.fcm_demo (has extras) }`
GCM 打出的 log, result=CANCELLED. 广播的 intent 发送回调是: cancelled. 也就是这个广播还没发送到 app 层 / sdk 层, 就已经被系统拦截到失败了。
最开始以为是 App 关于 GCM, 或者 FCM 的权限问题,在 manifest 里遗漏了某个配置, 或者 App 的通知权限没有打开. 但是做了一番检查以及配置之后, 这个问题还是存在。
之后求助于 Google 和 StackOverflow, 发现有些人是遇到过类似问题的, 但是都没有一个很好的解决方案, 把网上的解决方法一一尝试之后, 这个顽固的问题还是存在.
后来也是一个偶然的发现, 如果我在 IDE 中直接点击 “Run” 把 App 安装运行到手机上, 会出现这个问题, 但是我把项目打包成 apk 后, 再安装到手机上. 这个问题就消失了, 第一次杀死 App 之后, 也是可以顺利收到消息的. 这样才把这个问题给解决掉.