У меня проблема с двойным вызовом на CallKit
.Когда я принимаю новый вызов, я теряю sound/audio
.Я думаю, что проблема возникает, когда вызываются didDeactivate
и didActivate
, потому что когда я вручную отключаю и активирую AVAudioSession
, я также теряю sound/audio
.Я хотел знать, можно ли было отключить didDeactivate
и didActivate
...
Спасибо.
func provider(_ provider: CXProvider, didActivate audioSession: AVAudioSession) {
print("Received \(#function)")
print("ACTIVATE")
activateAudioSession()
}
func provider(_ provider: CXProvider, didDeactivate audioSession: AVAudioSession) {
print("Received \(#function)")
print("DEACTIVATE")
deactivateAudioSession()
}
- (void) activateAudioSession {
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
NSError *setError = nil;
[audioPlayer play];
[audioSession setActive: NO error: nil];
if (![[audioSession category] isEqualToString:AVAudioSessionCategoryPlayAndRecord])
[audioSession setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:AVAudioSessionCategoryOptionDefaultToSpeaker|AVAudioSessionCategoryOptionAllowBluetooth error:&setError];
if (![[audioSession mode] isEqualToString:AVAudioSessionModeVoiceChat])
if ([AVAudioSession instancesRespondToSelector: @selector (setMode:error:)]) {
[audioSession setMode:AVAudioSessionModeVoiceChat error:&setError];
}
[audioSession setActive: YES withOptions:AVAudioSessionCategoryOptionDefaultToSpeaker|AVAudioSessionCategoryOptionAllowBluetooth error: nil];
}
- (void) deactivateAudioSession {
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
[audioPlayer stop];
[audioSession setActive: NO error: nil];
}