自己写了一个软件当作学习,把一台 Android 设备作为服务端,通过 fcm 转发通知给另一台设备
1.首先,根据官方教程去 Firebase 控制台建立一个项目
https://firebase.google.com/docs/cloud-messaging?hl=zh-cn2.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
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/1059550
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.