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