Flutter升级后iOS 18.4.1音频后台播放时通知与控制中心控件不显示问题求助
大家好,我最近遇到了一个棘手的问题,想请教下各位开发者朋友:
我把Flutter升级到3.29.3,同时更新了关联的音频插件(just_audio: ^0.10.2、audio_service: ^0.18.18、audio_session: ^0.2.1)后,在iOS 18.4.1设备上出现了异常:音频后台播放时,通知栏和控制中心的音频控制控件完全不显示,但音频本身还能正常播放。之前的版本没有这个问题,Android端也一切正常。
更奇怪的是,我特意克隆了audio_service的官方示例项目,在iOS 18.4的模拟器和真机上测试,结果同样是后台播放时没有通知和控制中心控件,音频却能正常运行。
我的开发环境信息如下:
[✓] Flutter (Channel stable, 3.29.3, on macOS 15.4.1 24E263 darwin-arm64, locale es-ES) • Flutter version 3.29.3 on channel stable at /Users/gvam/development/flutter • Upstream repository https://github.com/flutter/flutter.git • Framework revision ea121f8859 (5 weeks ago), 2025-04-11 19:10:07 +0000 • Engine revision cf56914b32 • Dart version 3.7.2 • DevTools version 2.42.3 [✓] Xcode - develop for iOS and macOS (Xcode 16.2) • Xcode at /Applications/Xcode.app/Contents/Developer • Build 16E140 • CocoaPods version 1.16.2
有没有朋友遇到过类似的情况?或者能给一些排查方向?我怀疑是插件和iOS 18.4.1的兼容性问题,但暂时没时间提交完整的issue表单,先在这里求助大家了。
可能的排查方向建议
检查iOS权限与后台配置:
确认Info.plist中是否正确添加了后台音频权限:<key>UIBackgroundModes</key> <array> <string>audio</string> </array>同时检查是否配置了
NSNotificationUsageDescription,并在代码中请求了通知权限——iOS 18对权限校验可能更严格,即使是音频通知也可能需要基础的通知权限支持。验证音频会话配置:
确保在初始化音频前正确配置并激活了AudioSession,示例代码如下:final session = await AudioSession.instance; await session.configure(AudioSessionConfiguration.playback()); await session.setActive(true);若会话未正确激活,系统可能无法识别音频播放状态,进而不显示控制控件。
尝试升级插件到最新版本:
当前使用的插件版本可能还未适配iOS 18.4.1,建议查看just_audio、audio_service、audio_session的最新版本,升级后再测试是否解决问题。测试最新版官方示例:
确认克隆的audio_service示例是最新代码,旧示例可能未适配新系统,拉取最新代码重新编译测试。检查Xcode项目设置:
在Xcode中打开项目,进入Signing & Capabilities页面,确认Background Modes下的Audio, AirPlay, and Picture in Picture已勾选,同时检查通知相关Capability是否配置正确。
内容来源于stack exchange




