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

使微信通过 FCM 接收消息

  •  
  •   skrad · 2020-10-16 21:38:32 +08:00 · 24544 次点击
    这是一个创建于 1531 天前的主题,其中的信息可能已经有所发展或是发生改变。
    先决条件:
    微信必须 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 条附言  ·  2020-10-18 02:52:10 +08:00
    今天研究了一下应用管理的乖巧模式。

    我的结论是:应用管理的乖巧模式不适应于微信 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
    27 条回复    2023-06-21 22:28:59 +08:00
    fansangg
        1
    fansangg  
       2020-10-16 21:52:35 +08:00   ❤️ 1
    毫无意义,建议肉身翻
    Cheons
        2
    Cheons  
       2020-10-16 21:54:34 +08:00 via Android
    推送及不及时无所谓了
    急事电话联系,不急等着
    Jerami
        3
    Jerami  
       2020-10-16 22:48:59 +08:00 via Android
    哪有楼主说的这么麻烦,我在外国,国行华为手机,国内版微信 只要去设置,特殊访问权限,电池优化打开对于微信的电池优化,就自动走 fcml 。
    jianzhao123
        4
    jianzhao123  
       2020-10-16 23:38:24 +08:00 via Android
    感觉一加氧的,微信也没那么离谱,不 fq 收消息也挺及时
    ericgui
        5
    ericgui  
       2020-10-17 07:07:20 +08:00 via iPhone
    What is FCM?
    594duck
        6
    594duck  
       2020-10-17 08:06:44 +08:00 via iPhone
    IOS 用户表示此等操作

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

    @zhiyzellda 额,现在梯子行业也是个内卷行业了,很多 IPLC 机场都是官方背景或者红二代。根据我的经验,用一大票国产软件的同时挂梯子不影响梯子寿命。
    NoGolang
        14
    NoGolang  
       2020-10-18 18:32:53 +08:00
    我就是再也不想折腾这个了 果断的下单了 12 远离折腾
    skrad
        15
    skrad  
    OP
       2020-10-18 19:05:07 +08:00
    @NoGolang 我觉得折腾这些是种乐趣 所以就是个人选择
    sxfscool
        16
    sxfscool  
       2020-10-19 09:06:46 +08:00
    之前用的原生(n6p),也是各种折腾,黑域冰箱啥的,后来换了小米就不用折腾了
    xiva1209
        17
    xiva1209  
       2020-10-21 11:50:39 +08:00
    没那么复杂。原生系统上,只要微信域名走代理,就可以走 fcm 通道,不需要第三方工具和各种设置
    skrad
        18
    skrad  
    OP
       2020-10-22 21:49:59 +08:00
    @xiva1209 请指教如何设置微信域名走代理? SS 或者 SSR 可设置么?
    xiva1209
        19
    xiva1209  
       2020-10-22 23:45:40 +08:00
    @skrad 建议用 clash 或者 surfboard 。weixin.qq.com 走代理就行。不过不建议,这样朋友圈图片加载很慢,且微信 fcm 并不稳定。
    swsh007
        20
    swsh007  
       2020-10-28 12:01:26 +08:00 via Android   ❤️ 1
    这种折腾是不是每次都打开地球?
    skrad
        21
    skrad  
    OP
       2020-10-30 21:23:59 +08:00
    @swsh007 是的,否则不走 fcm
    iamthy
        22
    iamthy  
       2020-11-09 14:13:14 +08:00
    三星用户表示国行系统阉割了 gcm,即使安装全套也没有用
    deepcoder
        23
    deepcoder  
       2022-04-06 11:41:20 +08:00
    大佬,我把微信全局 fq ,导致的结果 1 是朋友圈图片加载超级慢,2 是付 kuan 码银 hang 卡之类的二维码扫不出来,系统会提示有交易风险,晕了_(¦3 」∠)_。
    看到这个帖子都快两年了,不知道还有没有办法让 V 信走 FCM 推送。真是后台毒瘤啊,太奇葩了
    Moyuwuhen
        24
    Moyuwuhen  
       2022-04-29 21:27:00 +08:00
    @deepcoder 只要微信走代理且 fcm 可以正常使用就行了,但是强制微信代理的确会出现你说的情况,所以我还是向它屈服了。说说我的方法,先微信代理和 fcm 可以正常使用,然后黑阈微信,开启微信的 fcm 标识并且允许它通过 fcm 接收消息,就是这么简单,但是还是每次都会唤醒微信,并没有更省电
    zeuszc
        25
    zeuszc  
       2022-06-05 20:48:48 +08:00 via iPad
    @deepcoder 在国外用 wifi 上,微信都是走的 fcm
    deepcoder
        26
    deepcoder  
       2022-06-09 11:02:11 +08:00
    @Moyuwuhen
    @zeuszc
    现在我使用 Thanox Pro (灭霸)的乖巧模式,将 vx 的只保留消息推送接收,其他进程冻结在后台。
    这样一晚上七八个小时耗电才 50 毫安不到,也不耽误消息接收,非常好用。前提是要 root ,并且 APP 需要付费,有刚需可以使用 (* ̄︶ ̄)
    kujourinka
        27
    kujourinka  
       2023-06-21 22:28:59 +08:00 via Android
    原生系统,我目前的解决方案是在系统电池选项中微信选择 Optimized ,然后将微信黒阈掉但 allow sync ,同时在黒阈的设置中**关闭**优化微信。目前能稳定推送,延迟可能有十秒左右。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3002 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 14:00 · PVG 22:00 · LAX 06:00 · JFK 09:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.