V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
牛客网
skrad
V2EX  ›  Android

使微信通过 FCM 接收消息

  •  
  •   skrad · 14 天前 · 3270 次点击
    先决条件:
    微信必须 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 。
    第 1 条附言  ·  13 天前
    今天研究了一下应用管理的乖巧模式。

    我的结论是:应用管理的乖巧模式不适应于微信 FCM 。因为如果微信进入乖巧模式,后台会留下缓存进程,微信便会用自身消息接收功能而不是 FCM 接收新信息,证据是这种模式下,发送新消息,FCM Diagnostics 中不存在微信消息推送记录。

    只有当开启 X-APM 的 GCM Generation Collection,弹出的来自 X-APM 通知才是真正微信的 FCM 通知。

    微信启用 FCM 的条件是非大陆 IP 且后台不存在任何微信进程,即每次打开微信先看到地球界面。

    使微信进入完全关闭状态只有在 APP info 中 Force Stop 或者绿色守护将微信休眠,并且必须完全休眠,而不能仅进入 Shallow Hibernate 模式,Shallow Hibernate 模式下与 X-APM 的乖巧模式相同,都会在后台存留微信缓存进程,使微信不使用 FCM 接收消息。

    所以使微信通过 FCM 接收消息的完整设置是:

    微信全程 fq
    FCM 全程 fq
    绿色守护 休眠微信 并且 ignore background-free 且 ignore running state 且 Normal Hibernate mode 且 允许 GCM 推送唤醒程序
    X-APM 打开 GCM Generation Collection
    21 条回复    2020-10-30 21:23:59 +08:00
    fansangg
        1
    fansangg   14 天前
    毫无意义,建议肉身翻
    Cheons
        2
    Cheons   14 天前 via Android
    推送及不及时无所谓了
    急事电话联系,不急等着
    Jerami
        3
    Jerami   14 天前 via Android
    哪有楼主说的这么麻烦,我在外国,国行华为手机,国内版微信 只要去设置,特殊访问权限,电池优化打开对于微信的电池优化,就自动走 fcml 。
    jianzhao123
        4
    jianzhao123   14 天前 via Android
    感觉一加氧的,微信也没那么离谱,不 fq 收消息也挺及时
    ericgui
        5
    ericgui   14 天前 via iPhone
    What is FCM?
    594duck
        6
    594duck   14 天前 via iPhone
    IOS 用户表示此等操作

    “目瞪口呆”
    nekochyan
        7
    nekochyan   14 天前
    与其这样不如直接不管微信消息,等想起来打开再看,别人有急事自然会手机联系你
    JackieMe
        8
    JackieMe   14 天前 via Android
    Xposed + 应用管理可以稳定 FCM,之前一直在用,很稳定,但是语音电话经常收不到
    skrad
        9
    skrad   14 天前
    @JackieMe 请问应用管理具体是哪个 APP ?我之前看到有人提到,但不知道是什么软件
    zhiyzellda
        10
    zhiyzellda   14 天前 via Android
    这有点嫌梯子命长的意思。。。
    挂梯用 V 信?
    我开梯子前都必定强退一批简中软件之后才敢开。
    这直接主动送上门😥😥
    我宁愿不要这推送,也不会让 v 信把梯子搞炸的
    JackieMe
        11
    JackieMe   14 天前 via Android
    @skrad https://www.coolapk.com/apk/github.tornaco.xposedmoduletest
    现在已经停止开发了,开发者现在做的新工具 Thanox 不知道是否还支持,我没用过
    volks
        12
    volks   13 天前 via Android
    高玩,高玩
    baobao1270
        13
    baobao1270   13 天前
    不知道路由器透明代理有没有用,而且我的 MIUI 似乎会自动断开 FCM 连接

    @zhiyzellda 额,现在梯子行业也是个内卷行业了,很多 IPLC 机场都是官方背景或者红二代。根据我的经验,用一大票国产软件的同时挂梯子不影响梯子寿命。
    NoGolang
        14
    NoGolang   12 天前
    我就是再也不想折腾这个了 果断的下单了 12 远离折腾
    skrad
        15
    skrad   12 天前
    @NoGolang 我觉得折腾这些是种乐趣 所以就是个人选择
    sxfscool
        16
    sxfscool   12 天前
    之前用的原生(n6p),也是各种折腾,黑域冰箱啥的,后来换了小米就不用折腾了
    xiva1209
        17
    xiva1209   10 天前
    没那么复杂。原生系统上,只要微信域名走代理,就可以走 fcm 通道,不需要第三方工具和各种设置
    skrad
        18
    skrad   8 天前
    @xiva1209 请指教如何设置微信域名走代理? SS 或者 SSR 可设置么?
    xiva1209
        19
    xiva1209   8 天前
    @skrad 建议用 clash 或者 surfboard 。weixin.qq.com 走代理就行。不过不建议,这样朋友圈图片加载很慢,且微信 fcm 并不稳定。
    swsh007
        20
    swsh007   3 天前 via Android
    这种折腾是不是每次都打开地球?
    skrad
        21
    skrad   17 小时 11 分钟前
    @swsh007 是的,否则不走 fcm
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2651 人在线   最高记录 5168   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 06:35 · PVG 14:35 · LAX 23:35 · JFK 02:35
    ♥ Do have faith in what you're doing.