我正在开发一个SIP电话应用程序。当用户接收到电话时,应用程序应该播放声音/铃声。无论应用程序处于前台还是后台,它都应该播放,并且如果硬件静音开关为ON/OFF,则应该静音/取消静音。
为此,我使用了以下代码AVPlyaer。
AVAudioSession *session = [AVAudioSession sharedInstance];
[session setCategory:AVAudioSessionCategoryPlayback error:&error];
[session setActive:YES error:nil];
NSURL * audioFileUrl = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"test1" ofType:@"mp3"]];
AVPlayer *player = [[AVPlayer alloc] initWithURL: audioFileUrl];
[player play];
我还在info.plist中的后台模式中添加了"应用程序通过AirPlay播放音频或流视频"。
在这两种模式下都可以播放,但在硬件静音开关打开时不会静音。
如果使用AVAudioSessionCategoryAmbient
,则无法在后台模式下播放。
我使用了AVAudioPlayer,但不能在硬件静音开关打开时找到静音。