MinaMiGo
永遠の夏
Koizumi's Blog

MIUI CN 大陆版 FCM 修复 xposed 模块

一、前言

虽然使用 MIUI EU + 本地化 是个不错的选择,但是说实话,EU团队修改系统后,有时候会有自己的一些问题。且维护一个这么大的本地化项目实在是不容易。本地化项目涉及到了多个功能,相当于一个人再把整个MIUI研究一遍,工作量太大了,几乎耗费了我所有的个人休息时间。想到国际版和国内版其实也有共同之处,那么能不能研究一下MIUI到底是对什么做了限制导致FCM机制无法正常工作。

经过了将近两周的研究,站在巨人的肩膀上,终于将MIUI对FCM的限制基本解决。在这里就不多说过程,直接将成果分享给各位。

此模块由kooritea大佬的fcmfix修改而来,额外做了一些微小的工作,感谢原作者的贡献。

二、正文

请尊重他人的劳动成果!

对本模块进行再发布或者修改请不要抹去原作者的信息,转载请注明来源,谢谢。

酷安:MinaMichita

本篇文章来源:https://blog.minamigo.moe/archives/747

1、模块介绍

通过对MIUI系统部分组件进行hook,以解除对FCM机制的限制。

中国大陆地区用户强烈建议搭配FCM Hosts Magisk模块一同使用,可以提升体验。

注意:

  • 这个模块仍处于测试阶段,后续会不断改进机制,更新可能会更改【使用方法】,请持续关注本博客更新!
  • 由于FCM机制的问题,使用此模块难以避免耗电增加
  • 此模块仅在MIUI12上测试,在更旧的MIUI版本上可能无法正常工作。

————————

这个xposed模块做了什么?

  • 解除MIUI对FCM服务的干扰(重连时间、域名代理、允许后台网络连接)
  • 防止指定应用被MIUI关闭,导致无法FCM广播唤醒推送

此修改版与原版的区别:

原版:

  • 通过hook谷歌框架强行使FCM服务正常工作。
  • 思路为强行唤醒应用。(此功能仅适配了Android10及以上)
  • 可能在其它面向大陆用户系统上也能正常工作。
  • 未对MIUI的后台清理机制进行修改。(强行停止的应用强制广播唤醒可能会导致无法正常发送通知。强行停止应用会导致已推送的应用通知被删除。关闭的应用虽然能保留通知,但是再次FCM弹通知时会导致之前的通知消失且新通知无法弹出)

此修改版:

  • 通过hook电量与性能解除MIUI对FCM服务的干扰。
  • 取消强行唤醒。(应用限制最低系统版本Android9)
  • 取消hook谷歌框架,重连和心跳为谷歌默认配置,减小耗电。
  • 思路为修改MIUI的各种后台清理机制使应用留存在后台不被强行停止,更加符合FCM机制的设计。
  • 修改版仅适用于MIUI。(仅在MIUI12大陆版上测试,可能无法在更老的MIUI上使用)

————————

关于开源:因为改了很多东西代码挺乱的,等过段时间有空了整理一下代码就会开源到github。

2、使用方法

1.安装MiuiFcmFix应用并激活xposed模块,重启

2.在MiuiFcmFix勾选需要FCM推送的应用,以后台保活

3.给需要FCM推送的应用的【自启动】权限

MiuiFcmFix下载链接:OneDrive

3、反馈问题

已知问题:

  • 切换手机分身后FCM推送的通知会变为不重要通知
  • 开启智能场景省电的睡眠模式后,部分应用的通知【可能】间隔一段时间又提醒一遍(如:Telegram)。解决方法:将应用省电策略设置为无限制,或关闭睡眠模式。
  • 开启智能场景省电的睡眠模式后,设备进入doze后,FCM连接会断开,且在退出doze后仍不会恢复连接。
  • 开启智能场景省电的睡眠模式后,应用可能无法广播无响应。

————————

1.反馈问题前你必须知道FCM机制,否则不接受反馈。FCM的工作机制与Mipush完全不相同,请先自行了解。

2.反馈前请先检查:是否按照使用方法进行使用?应用是否支持FCM推送,是否调用了FCM推送?应用是FCM推送,还是FCM唤醒再自己拉信息推送(如:微信、Gmail)?查看FCM日志查找问题出在哪?

3.不接受耗电增加一类的问题反馈。

4、更新日志

### 1.0 2021-09-02

  • 应用更名为MiuiFcmFix,版本号不再与原版同步
  • 对Xposed部分进行大改,修复原版可能会出现无法获取到白名单列表的问题
  • 取消原版强行唤醒,并将模块最低安卓版本修改为Android 9(API28)
  • 取消原版对谷歌服务的hook,重连和心跳为谷歌默认配置,减小耗电
  • 取消全局模式,改为白名单模式
  • 增加对MIUI对后台服务的清理的处理,不再需要将应用省电策略设置为无限制
  • 增加其它场景下(如游戏一键清理,锁屏自动清理)的MIUI后台清理机制的处理
  • 增加切换手机分身时,关闭当前空间应用的处理
  • 改进对电量和性能的处理,恢复智能场景省电的睡眠模式,减小耗电

### 0.3.3 2021-08-14

  • First Release
  • 启动全局模式,对所有应用生效
  • 增加对MIUI滑动清理和一键清理的后台清理机制的处理
  • 增加对电量和性能的处理
本篇文章链接:https://blog.minamigo.moe/archives/747
转载请注明出处!日常分类下的文章禁止转载。

MinaMiGo

文章作者

suka进行回复 取消回复

textsms
account_circle
email

  • 锄禾

    可以修改fcm重连时间吗?10分钟就重连。

    1周前 回复
  • Starmin

    请问一下你的微信可以走fcm吗,我play版微信测试了一下好像还是不走fcm

    1月前 回复
  • HsuX

    已经用了好几天了很稳定,再也不会锁屏断连/无辜断连/重连负数等问题,WIFI数据来回切也没问题。之前我一度以为gtalk域名是不是被墙了,可是我刷了原生又一点问题都没有,MIUI工程师抓紧进厂吧,把一个正常的fcm负优化成这样。感谢楼主!!

    2月前 回复
  • goodjob

    小米10Pro,MIUI12.5.7稳定版。FCM可以长时间连接,但是心跳还是会出现负数,收不到推送(不知道这里怎么发图片)

    2月前 回复
  • suka

    终于出现了!!!!感谢作者,可以回国内了

    2月前 回复

Koizumi's Blog

MIUI CN 大陆版 FCM 修复 xposed 模块
一、前言 虽然使用 MIUI EU + 本地化 是个不错的选择,但是说实话,EU团队修改系统后,有时候会有自己的一些问题。且维护一个这么大的本地化项目实在是不容易。本地化项目涉及到了多个功…
扫描二维码继续阅读
2021-08-15