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

记录开发一个 FCM 通知转发软件

  •  
  •   NokiaForever · 130 天前 · 4316 次点击
    这是一个创建于 130 天前的主题,其中的信息可能已经有所发展或是发生改变。
    自己写了一个软件当作学习,把一台 Android 设备作为服务端,通过 fcm 转发通知给另一台设备
    1.首先,根据官方教程去 Firebase 控制台建立一个项目
    https://firebase.google.com/docs/cloud-messaging?hl=zh-cn
    2.Android Studio 建个 app ,可以同时给服务端和客户端安装的,里面当然根据教程加入 Google 服务及其 json 文件
    3.app 里加入一个 NotificationListenerService ,作为服务器,监听新通知,转发到 fcm 服务器用
    加入一个 FirebaseMessagingService ,在客户端上接收转发过来的 fcm 消息用
    4.Android 设备要作为服务器,目前就只能选择使用 HttpV1 api ,使用 okhttp3 发送 post 请求,模拟服务器,并且只好手动提供凭据( firebase 控制台下载 json 文件,里面包含密钥什么的,放到设备应用安装 data 目录下本地读取,使用 google-auth-library-oauth2 生成 token ),并且启动一个 ForegroundService 确保设备息屏后,也能持续稳定转发通知
    5.在客户端设备上,收到通知,如果客户端上安装了相同包名的通知来源应用,这可以直接点击通知启动对应应用,这需要 fcm 添加自定义 data 。
    当应用在后台时送达的通知消息。在这种情况下,通知将传送至设备的系统任务栏。默认情况下,用户点按通知即可打开应用启动器。
    在后台接收的既包含通知又具有数据载荷的消息。 在这种情况下,通知将传送至设备的系统任务栏,数据载荷则传送至启动器 Activity 的 intent 的 extras 属性中。
    在前台则是执行 FirebaseMessagingService 中重写的 onMessageReceived 方法
    这样,可以转发米 OV 魅上的通知到三星、索尼、谷歌等国际安卓手机上,也不用 root 。(虽然我没什么国产 app 需要推送通知的,需要的也基本都支持 fcm 推送,而且也没有国产 miOV 魅设备(有米有好心人送我一台🤣),但是,学习,写着玩嘛,继续学习,继续完善)
    https://github.com/HappyMax0/NotificationSync
    8 条回复    2024-07-29 23:13:19 +08:00
    NokiaForever
        1
    NokiaForever  
    OP
       130 天前
    https://github.com/RichardLuo0/NotificationPush/tree/master
    这是前辈写的,不维护了,好像用的是旧版 api ,现在 fcm 只能用 httpv1 api 了
    kodise
        2
    kodise  
       130 天前
    老哥我觉得你这个开发有意义啊,用国产手机的人很头疼境外软件的推送问题.你看我发的帖子迫切有这个需求,不过我希望的是能够以电脑或者通用设备转发更好一些,因为安卓设备作为服务端,然后转发的还是 fcm 通知,岂不是意味着这台服务端只能是 pixel 这样的手机嘛
    NokiaForever
        3
    NokiaForever  
    OP
       130 天前
    @kodise 服务端只要捡个二手带 gms 的红米丢家里,连着软路由,能连上 Google 服务器就行了,客户端能稳定接收 fcm 就行了,境外软件都能走 fcm 推送,没问题,国产软件有 play 就能用 fcm 啊,而且可以直连,有一点,fcm 是需要自启动的,你把 play 下载的境外软件放心给自启动权限,不过好像 oppo 有限制最多 20 个自启动,还有一些是检测连不上 Google 就给掐断 fcm 链接,但是一直挂着代理,走规则模式,就能稳定接收,比如国行三星。
    SkywalkerJi
        4
    SkywalkerJi  
       130 天前 via Android
    感觉倒过来的更实用,把国产推送的通知转发到 fcm
    SkywalkerJi
        5
    SkywalkerJi  
       130 天前 via Android
    @SkywalkerJi
    是我理解错了,op 这软件好像就是这个用途。
    lc5900
        6
    lc5900  
       129 天前
    之前记得有个项目,是把微信 qq 消息通过 FCM 转发,是通过 web 版做的好像,现在估计不行了吧
    HSDIUHSDIU
        7
    HSDIUHSDIU  
       124 天前
    @lc5900 ehForwarderBot ?
    lc5900
        8
    lc5900  
       124 天前
    @HSDIUHSDIU 应该不是这个名字,好多年前玩的了,是部署在 server 端的,需要 Server 有访问 Google 的能力,手机侧不用,FCM 本身没有墙。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2601 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 03:42 · PVG 11:42 · LAX 19:42 · JFK 22:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.