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

NokiaForever2024-07-23 20:590

自己写了一个软件当作学习,把一台 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
最新回复 (5)
  • NokiaForever楼主4月前
    引用2
    https://github.com/RichardLuo0/NotificationPush/tree/master
    这是前辈写的,不维护了,好像用的是旧版 api ,现在 fcm 只能用 httpv1 api 了
  • kodise4月前
    引用3
    老哥我觉得你这个开发有意义啊,用国产手机的人很头疼境外软件的推送问题.你看我发的帖子迫切有这个需求,不过我希望的是能够以电脑或者通用设备转发更好一些,因为安卓设备作为服务端,然后转发的还是 fcm 通知,岂不是意味着这台服务端只能是 pixel 这样的手机嘛
  • NokiaForever楼主4月前
    引用4
    @kodise 服务端只要捡个二手带 gms 的红米丢家里,连着软路由,能连上 Google 服务器就行了,客户端能稳定接收 fcm 就行了,境外软件都能走 fcm 推送,没问题,国产软件有 play 就能用 fcm 啊,而且可以直连,有一点,fcm 是需要自启动的,你把 play 下载的境外软件放心给自启动权限,不过好像 oppo 有限制最多 20 个自启动,还有一些是检测连不上 Google 就给掐断 fcm 链接,但是一直挂着代理,走规则模式,就能稳定接收,比如国行三星。
  • SkywalkerJi4月前
    引用5
    感觉倒过来的更实用,把国产推送的通知转发到 fcm
  • SkywalkerJi4月前
    引用6
    @SkywalkerJi
    是我理解错了,op 这软件好像就是这个用途。
  • 回复请 登录 or 快速注册
返回