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

AVD安卓虚拟设备无法正常接收推送通知问题求助

AVD 推送通知接收异常排查方案

以下排查步骤按问题复现概率从高到低排序,优先验证靠前的项:

系统级开关与权限排查

  • 进入AVD系统设置-应用列表,找到你的测试应用,手动确认「通知」总开关、各推送子渠道开关均为开启状态:Android 13(API 33)开始新增POST_NOTIFICATIONS运行时权限,部分AVD镜像默认会拦截权限申请弹窗、直接拒绝授权,哪怕代码里已经写了权限申请逻辑也不会弹授权提示,手动进设置开权限比反复改代码/镜像配置效率高很多。
  • 下拉AVD通知栏检查是否默认开启了「勿扰模式」:不少Google Play版API33镜像初始化后勿扰模式是默认打开的,该模式下所有通知都不会弹出横幅、不会显示状态栏图标,但应用层依然能正常收到推送回调,和你描述的「日志显示已收到推送但系统无任何提示」的表现完全匹配。
  • 找到系统应用「Google Play 服务」,确认它的通知权限处于开启状态:FCM推送的系统级展示依赖Google Play服务的通知权限,部分Google APIs镜像中该权限默认是关闭状态,会直接导致所有推送无UI展示。
  • 关闭AVD的省电模式:API33版本AVD的省电模式会默认冻结后台应用通知展示,哪怕应用已经收到推送,系统也会延迟数小时甚至直接拦截展示,测试阶段直接把电池策略调整为「无限制」。

AVD配置与镜像专项排查

  • 测试推送必须使用带Google Play标识的镜像,不要用仅带Google APIs的镜像:后者没有完整的Google服务签名校验环境,推送服务本身就是非合规运行状态,哪怕官方文档标注支持推送,实际运行时经常出现服务静默崩溃、通知不展示的问题,这类镜像本身就不适合做推送验证。
  • 创建AVD时不要启用非冷启动的快照模式,部分带用户数据缓存的快照会丢失Google服务的推送注册状态,每次启动后FCM token失效,就会出现推送偶发可达、大部分时间无响应的问题。新创建的AVD先冷启动等待5分钟,等Google Play服务完成后台初始化更新后,再安装测试包。
  • 打开模拟器侧边栏的扩展控制面板,找到Google Play选项卡,确认Google Play服务已经更新到最新版本,旧版本内置的Google Play服务和API33系统存在已知的通知展示兼容bug。
  • 检查AVD内部存储剩余空间,如果剩余空间小于500MB,系统会自动拦截低、中优先级通知的展示,但不会阻止应用层接收推送消息,同样会出现日志有记录但无UI提示的现象,清理出足够空间后再测试。

应用侧逻辑校验(不要因为真机正常就跳过)

  • 检查通知渠道配置:AVD的通知展示策略和实体真机存在差异,真机上IMPORTANCE_DEFAULT级别的通知会正常弹出横幅、显示状态栏图标,但AVD上如果通知渠道重要性低于IMPORTANCE_HIGH,默认会直接收纳到通知栏历史,不会有任何前台提示。
  • 不要在应用处于前台时测试通知展示:部分推送SDK的默认逻辑是应用在前台时不触发系统通知展示,只走应用内消息回调,把应用切到后台再发推送测试,排除这个逻辑干扰。
  • 用adb命令直接校验权限状态,不要依赖应用内的权限回调结果,执行以下命令查看通知权限实际授予状态:
    adb shell dumpsys package 你的应用包名 | grep POST_NOTIFICATIONS
    
    如果返回结果显示权限为denied,直接执行命令手动授权后再测试:
    adb shell pm grant 你的应用包名 android.permission.POST_NOTIFICATIONS
    

兜底验证方案

如果以上步骤排查完问题依然存在,直接在AVD管理器中右键对应模拟器实例,选择「Wipe Data」清除所有用户数据,不要导入任何历史快照,重新冷启动等待Google服务初始化完成后再安装应用测试,绝大多数AVD推送异常都是初始化阶段Google服务加载不完整导致的,清数据重初始化基本都能解决。


内容的提问来源于stack exchange,提问作者swift--help

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 01:06:22