fcm 推送

G·D·D2024/11/07android

推送

即手机收到的消息,app在后台留下一个进程,实时联网即可实现推送,但是我们不希望app一直在后台。 所以苹果就有了系统级的推送服务,只要该系统进程在后台,那么app想要推送的消息会先发给苹果服务器,再由苹果的服务器发给用户的手机。是无后台推送,省电、省内存、提升流畅度。 安卓有了推送又和苹果更接近了一点。

FCM

Firebase Cloud Messaging (),国内俗称谷歌推送。 在海外,和苹果推送一样好用;在大陆,苹果有云上贵州。有懂得都懂的原因,以及大陆消费者习惯原因,并没有在大陆推广开来。面向大陆的app也没有接入,而是介入了定制rom的推送,华米OV都有自己的推送,显然海外app不会接入大陆定制的推送。

FCM 启动!

打开手机拨号输入: *#*#426#*#*

如果没有打开界面则,是国产定制系统阉割了谷歌框架。 按照这个文档open in new window安装谷歌套件。

Server 显示 Connected 则网络连接成功。 Time connected 是本次连接的时间,每次打开 426 时显示时间越长表示网络连接越稳定。 要确保连接成功即 Server: Connected 否则以下全都是空谈,如果你所在的地区要开代理才能连接上,那还是放弃算了,除非你能接受24小时开代理。

给这个进程:

  • 后台上锁。
  • 电池优化等设置中完全允许后台运行。
  • 允许自启动。

检查app 是否介入了 fcm

下载app LibChecker Google playopen in new windowgithubopen in new windowFirebase 就算是接入了。 可以看到安卓微信只接入了fcm,不接入任何一个国产推送,爱舔洋尻,可见张小龙的孝顺。

一次成功的fcm推送的完整过程

  1. 该 app 接入了 fcm , 可以在fcm上注册包名
  2. 通知发送给谷歌服务器
  3. 谷歌服务器发送给用户手机
  4. 用户手机弹出通知

注册包名

只有注册被墙,日常接受消息可以裸连。 开自启、开通知权限、开全局代理(确保代理play服务和该app)(新版 V2rayNG 把路由设置中最终代理拉到最上面),然后打开 app 刷几分钟,以及让朋友或小号给你发消息。 在 fcm diagnostics 里 查看有无 app 的包名,如有则是注册成功了。

试收消息

关闭app后台,让朋友或小号发送私信。 若直接弹出通知则跳过之后的所有步骤,请享受苹果级推送。 若没弹出通知,则继续观察 fcm diagnostics:

EVENTS 中检索重要的字段:

字段意义
Received ~包名成功注册
No respnse to broadcast ~谷歌服务器没能把这条推送发送到手机
acked ~表示发来的数据已确认接收无误
Successfull broadcast to ~推送给用户的手机
Failed to broadcast to stopped app ~app自启动没开,不开自启动fcm会认为你不想收到消息

没找到 Received 不要紧,有包名就代表注册了。 有 Successfull broadcast to 但是 没有通知。合理,玄学,无解

总结

开自启 开通知权限 开全局代理打开app 试收消息 收不到寄

总结

好像什么都没讲