起因
如题,我之前被这种阴间情况困扰了很久了,明明开启了分应用代理,但就是会出问题,让我百思不得其解。而昨天我突然想到群友提到过“FCM”(Google的推送服务),感觉可能和这个有所关联,于是去搜索引擎和酷安逛了一圈,果然有收获。
造成这种逆天问题的原因
根据酷安网友的描述,很多机场并不愿意帮你维持FCM推送服务的持续连接,而国内又是可以直连FCM推送服务的。这就导致你在开启代理时的FCM推送服务连接动不动就会莫名其妙断掉,而关掉代理后又会迅速恢复,并发来一堆漏掉的通知(Outlook是重灾区)。
你可以在拨号处输入 * # * # 4 2 6 # * # *
来查看手机当前的FCM推送服务连接状态,如果跳转后的页面显示为Connected,则说明你手机的FCM推送服务目前工作正常,可以在下方看到它已经正常工作了多久。
非必要不建议查看,因为你看完以后把它拉掉后台也可能会导致FCM推送服务断开连接
如果不是,或者即便工作正常也收不到消息,请往下看。
解决方案
很简单!不过请确保你的手机具备完整的谷歌环境,一般来说只要不是遥遥领先手机和荣耀手机,都只需要在系统设置里面开启“Google基础服务”,然后自己去APKMirror这种网站下载一个最新版Google Play并安装即可,如果还遇到其他Google服务问题,那就再在Google Play里安装一个“Google”APP。
请将FCM推送服务所使用的那些网址通通加入你的代理程序的 绕过名单,并授予需要接收通知的应用 自启动权限。
发挥作用网址的主要有这些
我使用Claude 3.5 Sonnet写了个能匹配上述所有网址的正则表达式
regexp:^(alt\d-)?mtalk(-staging|-dev|\d)?\.google\.com$
这里强烈推荐使用NekoBox的1.3.0版本作为你的代理程序,这个版本基本没什么bug,支持绝大多数协议,可自行选择主流的几个路由资源、自定义DNS等等。
不过,重点是它支持你在GUI中编辑自己的规则以覆盖机场自带的规则(别担心,你可以在设置中选择主流路由资源,如基于Loyalsoldier的soffchen/sing-geoip帮助你解决剩下的规则)。
在侧栏的路由处点 右上角左侧的添加按钮,即可开始添加一条新规则。
按下图这么填,注意将 outbound 设置为 绕过 :
添加完FCM推送服务的直连规则后,为了使你的上网体验正常,请 开启下图中的所有规则:
检验成果
使用FCM toolbox进行初步检验
现在,你就可以使用 FCM toolbox网页端 配合它的 手机端 来测试FCM推送服务的工作情况了!
注意保持你的代理程序正在运行,且节点是连接着的!不然就测不出来你在挂了代理后的效果了!
安装好FCM toolbox的手机端后:
- 点击 右上角的三个点
- 点击 Share token,将token发送到别的地方复制,并 填入网页端
- 在 网页端 点击 Send
如果此时手机端能够受到消息,说明配置初步成功!
使用FCM toolbox检验FCM是否能拉起未在后台的应用发送通知
1 在手机系统设置中搜索 自启动权限
2. 将其 手动授予 FCM toolbox的手机端(因为它并没有自己请求……)
3. 将FCM toolbox的手机端 从后台拉掉
4. 再点击网页端的 Send
如果还能受到通知,说明大功告成!你基本上不会再错过邮件和通知了!
使用Telegram检验成果
如果还是觉得不够,可以为Telegram 授予自启动权限,并在它的 通知与声音 设置的最底下开启 后台服务常驻 选项,然后看看能不能收到通知。
这是老实人,你授予它自启动权限,但没在这里允许它使用的话,它是不会使用权限的……
使用Outlook这位重量级检验成果
如果想来点极限的 ,可以 拉掉Outlook的后台,然后 去别的邮箱给自己的Outlook发个邮件,看看能不能及时收到通知。
第一次发送的邮件可能会被Outlook列入垃圾邮件,所以可能需要你手动点进去解除屏蔽,然后拉掉后台再试一次
注意
如果你在拨号处输入 * # * # 4 2 6 # * # *
来查看手机当前的FCM推送服务连接状态后,将跳转的页面从后台拉掉了,那么很遗憾,很大概率你会暂时断掉FCM推送服务,请尝试再次打开FCM toolbox的手机端或是开关网络等方式,直到FCM toolbox的手机端能再次收到通知。