I am adding sound when user clicks on call button/joinChanne(Agora) in my app.
[self.agoraKit joinChannelByToken:self.userManager.agoraToken channelId:self.userManager.channelName info:nil uid:[self.userManager.UID integerValue] joinSuccess:^(NSString *channel, NSUInteger uid, NSInteger elapsed) {
NSString *path = [[NSBundle mainBundle] pathForResource:@"ringing-sound-jalebi" ofType:@"mp3"];
NSURL *soundFileURL = [NSURL fileURLWithPath:path];
self.audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:soundFileURL error:nil];
self.audioPlayer.delegate = self;
[self.audioPlayer play];
}];
But I am getting "AVAudioSession.mm:997:-[AVAudioSession setActive:withOptions:error:]: Deactivating an audio session that has running I/O. All I/O should be stopped or paused prior to deactivating the audio session" error. Can someone please help me to solve this
It looks like the Agora SDK is automatically deactivating any existing AVAudioSessions when you join a call, to make sure you can hear the person you're in a call with. I would recommend playing the sound through Agora's sound mixing API instead.
// Plays an audio effect file.
int soundId = 1; // The sound ID of the audio effect file to be played.
NSString *path = [[NSBundle mainBundle] pathForResource:@"ringing-sound-jalebi" ofType:@"mp3"]; // The file path of the audio effect file.
int loopCount = 1; // The number of playback loops. -1 means an infinite loop.
double pitch = 1; // Sets the pitch of the audio effect.
double pan = 1; // Sets the spatial position of the audio effect. 0 means the effect shows ahead.
double gain = 100; // Sets the volume. The value ranges between 0 and 100. 100 is the original volume.
BOOL publish = true; // Sets whether to publish the audio effect.
[self.agoraKit playEffect:soundId filePath:path loopCount:loopCount pitch:pitch pan:pan gain:gain publish:publish];