iOS - 后台的 AVAudioSession 路由更改通知

Posted

技术标签:

【中文标题】iOS - 后台的 AVAudioSession 路由更改通知【英文标题】:iOS - AVAudioSession Route Change Notification in background 【发布时间】:2014-01-21 00:23:16 【问题描述】:

尽管有很多关于该主题的帖子(AVPlayer & AVAudiosession、Setting the AVAudioSession category in AppDelegate.m、AvAudioSession won't work in iOS7?),但我无法在 iOS 7 中解决这个特定问题: - 我想在后台接收 AVAudioSession 路由更改通知 - 我的应用在任何时候都不会播放任何音乐,并且不应干扰其他应用播放声音

设置: - 在 p-list UIBackgroundModes 中启用音频 - 在主控制器中:

// AUDIO
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
[audioSession setCategory:AVAudioSessionCategoryPlayback  withOptions:AVAudioSessionCategoryOptionMixWithOthers error:nil];
[audioSession setActive:YES error:nil];

// NOTIFICATIONS
[[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(audioSessionRouteChanged:)
                                                 name:AVAudioSessionRouteChangeNotification
                                               object:nil];

这在前台工作得很好,所以我必须缺少一些简单的东西来启用后台通知。我从 AVAudioSessionCategoryAmbient 开始尝试了几个不同的类别,但都没有成功。

播放声音时是否只接收后台通知?

感谢您的帮助!

更新 需要播放 AVPlayer 才能在后台接收通知。所以不幸的是,这是不可行的,期待通过播放无声的曲目,这不是 Apple 接受的......

【问题讨论】:

【参考方案1】:

如果您在后台且未播放音乐,您的应用将暂停。您无法接收通知或其他任何内容。如果有任何通知给您,将在您的应用再次激活时发送。

【讨论】:

2021 年仍然如此吗?我不能在后台收到通知吗? @Keselme 所述的答案仍然正确。您可以在后台收到信号,但通知中心会发出通知。 你的意思是but not notifications from the Notification Center. 吗? @Keselme 是的,对不起。

以上是关于iOS - 后台的 AVAudioSession 路由更改通知的主要内容,如果未能解决你的问题,请参考以下文章

进入后台时出现 AVAudioSession 问题

后台的 MPMoviePlayerController / AVAudioSession 在来电后不会重新开始播放

AVAudioSession 的 AVAudioSessionCategory 和 AVAudioSessionCategoryOptions 相关

IOS后台运行音频文件

iOS 音频-AVAudioSession

IOS后台运行 之 后台播放音乐