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

Android 12(API Level 31)下Unity应用无法接收推送通知求助

解决Unity升级Android API Level 31后推送通知失效问题

检查AndroidManifest关键配置

  • 别只盯着Messaging Activity,所有和推送相关的组件(比如自定义通知接收器、Firebase的服务子类)都得显式加android:exported属性,根据组件是否需要接收外部调用设为true或false。比如你的FirebaseMessagingService子类,必须加上android:exported="true"。
  • API31+强制要求用通知渠道才能显示通知,检查Unity代码里有没有正确调用NotificationManager.CreateNotificationChannel,渠道的ID、名称、重要性设置得准确,不然通知根本出不来。

核对Firebase集成细节

  • 确认google-services.json是最新的,而且包名和Unity里设置的Android包名完全一致,API31对这个匹配的校验更严,差一点都不行。
  • 你更新了Firebase SDK,但得确保是适配API31及以上的最新稳定版,同时检查Unity的Android Build Support组件版本也跟上,别出现SDK和Unity组件版本不兼容的情况。

排查系统权限与后台限制

  • API31+对后台启动管得更严,去设备的应用权限里看看:通知权限开了没?后台活动权限有没有被禁用?这些都可能导致收不到推送。
  • 如果是静默推送(不弹通知栏的那种),给FirebaseMessagingService的OnMessageReceived方法加日志,看看是不是根本没触发这个方法,定位是接收问题还是处理问题。

分场景测试推送

  • 分别测前台和后台的推送情况,API31+前后台的推送处理逻辑有差异,说不定只是后台收不到,前台正常。
  • 用Firebase控制台发测试推送,同时开Logcat过滤FirebaseMessaging、Notification相关关键词,看有没有错误日志,比如权限不足、渠道不存在这些提示,一查一个准。

检查Unity打包配置

  • 去Unity的Player Settings里确认:Minimum API Level和Target API Level都设成31或更高,而且Custom Main Manifest确实引用了你修改过的AndroidManifest文件,别白改了配置没生效。
  • 打包后可以去Temp/gradleOut路径下的生成版AndroidManifest.xml里看看,你加的exported属性有没有被Unity自动覆盖,要是被覆盖了,得调整打包的配置规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 06:05:23