You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio中Firebase Cloud Messaging通知无法接收问题求助

问题根因排查与解决方法

1. 主题订阅缺失

你当前使用的是FCM主题推送模式,所有需要接收通知的卖家账号在登录成功后,必须主动调用订阅接口:

FirebaseMessaging.getInstance().subscribeToTopic(Constants.FCM_TOPIC);

如果卖家端没有执行订阅操作,自然无法接收对应主题的推送消息,这是最常见的故障原因。

2. 身份校验逻辑异常

你在onMessageReceived中增加了当前登录用户UID和消息携带卖家UID的一致性校验,有两个潜在异常点:

  • 卖家端应用退后台、进程被回收时,FirebaseAuth.getInstance().getCurrentUser()可能返回null,直接跳过后续通知弹出逻辑
  • 需打印日志确认消息中携带的sellerUid和当前登录用户UID完全匹配,排除空格、大小写、传值错误等问题

3. Android通知权限未适配

  • Android 13及以上系统要求应用主动申请POST_NOTIFICATIONS动态权限,未获得权限的应用即使收到FCM消息也无法弹出通知
  • 可进入系统设置查看对应App的通知总开关、你创建的通知渠道开关是否被用户手动关闭

4. PendingIntent标记不兼容高版本系统

如果你的应用targetSdkVersion >= 31,PendingIntent必须显式指定FLAG_IMMUTABLE或FLAG_MUTABLE标记,否则会导致通知构建失败,可修改代码:

PendingIntent pendingIntent = PendingIntent.getActivity(this,0,intent,PendingIntent.FLAG_ONE_SHOT | PendingIntent.FLAG_IMMUTABLE);

5. FCM消息优先级过低

后台推送的普通优先级消息容易被系统拦截延迟送达,可在发送通知的JSON参数中增加高优先级配置:

// 在prepareNotification方法的try代码块中加入
notificationJo.put("priority", "high");

6. 服务注册异常

检查AndroidManifest.xml中是否正确注册了FCM消息接收服务:

<service
    android:name=".MyFirebaseMessaging"
    android:exported="false">
    <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT" />
    </intent-filter>
</service>

调试建议

在onMessageReceived方法最开头增加日志打印:

Log.d("FCM_DEBUG", "收到消息: " + remoteMessage.getData().toString());

如果没有打印这条日志,说明推送链路存在问题(未订阅主题、token失效等);如果能打印日志,说明问题出在后续的校验逻辑或通知构建流程。


内容的提问来源于stack exchange,提问作者Parwez Akhter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 13:39:03