使微信通过 FCM 接收消息
微信必须 fq 。
微信必须具有 FCM 功能。下载 Play 版,国行版本未测试,不确定。
fq 打开微信,以确保 FCM 功能激活。大陆 IP 打开微信,FCM 功能不启用。
连接 FCM 服务器。FCM 服务器可直连,但不稳定,由于微信必须 fq,FCM 服务器也 fq 连接。
绿色守护休眠微信,使其不在后台,只通过 FCM 接收消息。并设置允许 FCM 通知唤醒 app 。否则即使成功连接 FCM 服务器,且微信 FCM 功能激活,由于微信休眠,也无法被 FCM 通知拉起,导致无法接收新消息。
注:
微信 FCM 功能并不接收消息内容,只作为新消息提醒,程序收到 FCM 通知后,运行消息接收功能,接收新消息并弹出新消息提醒。
综上,fq 微信 + fq FCM 服务器 + 微信休眠 + 绿色守护允许 FCM 唤醒程序
以上条件下,及在保持网络长连接下( WiFi 环境),微信可以通过 FCM 接收新消息提醒。每次休眠后,会被新消息唤醒。
但是,如果中途网络中断(使用数据流量经常出现)且网络中断时发送新消息,即使再次 fq 连接 FCM 服务器,且 FCM diagnostics 中出现微信新消息推送记录,微信程序也无法被唤醒,无法接收新消息并弹出消息提醒。
为解决此问题,安装 X-APM,打开 GCM Generation Collection 。可保证在网络恢复连接后,由 X-APM 弹出微信新消息提醒。
如果不允许 FCM 通知唤醒程序,且不使用 X-APM,则微信被绿色守护休眠后,即使微信 FCM 模块收到通知,也无法接收消息并弹出新消息提醒。
如果不允许 FCM 通知唤醒程序,且使用 X-APM,则可达成类 IOS 效果,手机端有新消息提醒(来自 X-APM ),手动打开微信后程序再联网接收新消息。
如果允许 FCM 唤醒程序,不使用 X-APM,则收到 FCM 通知后,微信程序被唤醒(在保持网络长连接下),接收新消息并弹出通知。一旦网络连接中断,即使再恢复也无法弹出中断时间段新消息提醒。
如果允许 FCM 唤醒程序,且使用 X-APM,微信 FCM 收到通知后,X-APM 首先弹出微信新消息通知,微信程序被唤醒,接收新消息,弹出含具体消息内容的新消息通知。在网络中断并恢复后,由 X-APM 弹出中断时间段消息通知。
综上,为保证通过 FCM 收到所有微信新消息通知,具体设置如下:
微信 fq + FCM 服务器 fq + 绿色守护休眠微信 + 允许 FCM 通知唤醒程序 + FCM Generation Collection
注:在移动数据环境,网络条件更复杂,可能会出现 bug 。