这是我的场景:我有一个视频播放器播放一些视频/音频,并且突然因为我之前设置了警报。
在iOS 10
之前,闹钟的UI和音频将阻止主UI线程,以便通过观察UIWindowDidResignKeyNotification
来捕获警报事件。
但是在iOS 10
上,似乎警报UI的行为与Notification messages
类似,并且不会阻止主UI。
但是它的警报声会接管音频线程,结果是视频图像正在播放而视频声音没有播放,而是播放了警报声。
使用iOS 10
我所做的是观察AVAudioSessionInterruptionNotification
,这会在闹钟播放时发布,一旦我得到它,我就暂停播放视频。
但是这会导致另一个问题,即我的用户在解除警报后必须再次手动点击play
按钮,这不太好。
Plus AVAudioSessionInterruptionNotification
,例如iMessage
,Push Notification
这些音频非常短的消息,并且会导致暂停用户陷入困境。
所以我想知道是否有办法监听用户上下移动警报UI的事件。
或者,如果有人能提出其他解决方案来解决这类问题。
更新:
只有在硬件解码视频时才会出现alarm sound takes over the audio thread
问题。
如果它是视频的默认系统解码,那么它就可以了。
如果拨打来电并且呼叫声也会接管音频线程,这很好,因为来电会阻止主用户界面,所以我也可以通过观察UIWindowDidResignKeyNotification
来管理它。
答案 0 :(得分:0)
好吧,我的错,我没有读过苹果文档,一切都是here。
您可以在AVAudioSessionInterruptionNotification
中使用userInfo。
它给出了枚举,当它开始时,它何时结束,甚至是它恢复的最佳时机。