升级compileSdkVersion至31后,Firebase后台/关闭状态推送失效求助
解决思路
1. 升级Firebase依赖版本
你当前使用的firebase-messaging:20.1.0版本未适配Android 12(API 31)的PendingIntent flag强制要求,这是导致崩溃的核心原因。需将firebase-messaging升级至21.0.0及以上版本(官方从该版本开始支持Android 12的相关规则),建议直接使用最新稳定版:
// 替换旧的firebase-messaging依赖 implementation 'com.google.firebase:firebase-messaging:23.4.0'
同时同步升级其他Firebase及Google Play服务依赖,避免版本冲突:
implementation 'com.google.firebase:firebase-analytics:21.3.0' implementation 'com.google.firebase:firebase-auth:22.3.0' implementation 'com.google.firebase:firebase-firestore:24.10.0' implementation 'com.google.android.gms:play-services-location:21.2.0'
2. 检查自定义PendingIntent(如有)
如果你的ABCMessaging服务中自行创建了PendingIntent(比如通知点击跳转的Intent),需要手动添加对应flag:
- 普通场景优先使用
PendingIntent.FLAG_IMMUTABLE - 若需支持内回复、气泡交互等功能,使用
PendingIntent.FLAG_MUTABLE
示例代码:
Intent jumpIntent = new Intent(this, TargetActivity.class); PendingIntent pendingIntent = PendingIntent.getActivity( this, 0, jumpIntent, PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE // 添加强制flag );
3. 确认Manifest配置有效性
你已在Manifest中正确设置ABCMessaging服务的android:exported="true",这符合Android 12及以上的要求,无需修改。确保Firebase相关组件能正常初始化即可。
4. 项目清理重建
执行Clean Project和Rebuild Project操作,清除应用缓存后重新测试推送功能。
内容的提问来源于stack exchange,提问作者user3857963
相关产品推荐
相关产品推荐

