Android admin应用能否发送推送通知?基于Firebase的实现方案咨询
可行性结论
该需求完全可实现,基于你当前使用的Firebase技术栈,搭配Firebase Cloud Messaging(FCM,Firebase官方推送服务)即可完成,无需引入额外第三方服务。
具体实现步骤
1. 基础配置准备
- 给客户端、admin管理端两款Android应用都开启FCM服务:在Firebase控制台对应项目的「Cloud Messaging」板块完成基础配置,两个应用的
build.gradle中都添加FCM SDK依赖:
确认两个应用的implementation 'com.google.firebase:firebase-messaging:23.4.1'google-services.json文件已经更新包含FCM相关配置。 - 客户端新增FCM令牌同步逻辑:用户完成手机号登录后,获取当前设备的FCM令牌,将用户ID、绑定手机号、FCM令牌三者的映射关系写入Firebase Realtime Database,推荐存储路径为
/user_fcm_tokens/{用户uid},存储字段示例:
同时监听FCM令牌刷新回调,令牌更新时及时同步到Realtime Database,避免推送失效。{ "phone": "13xxxxxxxxx", "fcm_token": "用户设备的FCM推送令牌字符串", "update_time": 169xxxxxxx }
2. Admin管理端页面开发
- 新增带EditText的推送发送页面,至少包含3个输入控件:用户标识输入框(支持输入手机号/用户ID)、推送标题输入框、推送内容输入框,搭配发送按钮。
- 发送按钮点击逻辑按以下流程实现:
- 读取管理员输入的用户标识,到Realtime Database的
/user_fcm_tokens路径下查询对应数据:输入为用户ID时直接查询对应uid节点,输入为手机号时按phone字段过滤查询。 - 未查询到有效FCM令牌时,弹出目标用户不存在或未激活推送的提示;查询到有效令牌后,构造推送消息体,包含管理员输入的标题、内容,可按需新增自定义字段(比如点击推送跳转的目标页面参数)。
- 推送发送建议通过Firebase云函数实现,避免服务账号密钥泄露:管理端先将待发送的推送数据写入Realtime Database的
/pending_push节点,编写云函数监听该节点的onCreate事件,触发后由云函数的服务端环境调用FCM接口发送推送,发送完成后删除该条待发送记录即可。
- 读取管理员输入的用户标识,到Realtime Database的
3. 客户端推送接收逻辑开发
- 客户端集成FCM消息接收服务,接收到推送消息后,按Android系统通知规范弹出通知栏提示,可根据推送携带的自定义参数,配置点击通知跳转对应页面的逻辑。
- 建议新增推送权限申请流程,用户授权后再同步FCM令牌,保证推送到达率。
4. 可选优化项
- 推送发送完成后给管理员返回明确的成功/失败提示。
- 新增推送历史记录存储功能,方便管理员回溯发送记录。
- 定期清理Realtime Database中过期的无效FCM令牌,减少无效发送请求。
内容的提问来源于stack exchange,提问作者ElY
相关产品推荐
相关产品推荐

