我正在开发一个支持CallKit的VOIP应用程序,有时我们的客户遇到的问题是iOS系统从不调用 didActivateAudioSession 回调。
是否有一个已知的错误,或者你认为我们有什么遗漏,比如设置AVAudioSession的正确模式或类似的东西?
这是我在报告CallKit对系统的调用之前准备AVAudioSession的方法;
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
[audioSession setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:AVAudioSessionCategoryOptionAllowBluetooth error:nil];
[audioSession setActive:YES error:nil];
答案 0 :(得分:3)
我们可以在
中配置音频会话- (void)provider:(CXProvider *)provider performStartCallAction:(nonnull CXStartCallAction *)action
或
- (void)provider:(CXProvider *)provider performAnswerCallAction:(nonnull CXAnswerCallAction *)action
来自speakerbox app的评论,
/* We must not start call audio here, and can only do so
* once the audio session has been activated by the system
* after having its priority elevated. So, make sure that the sound
* device is closed at this point.
*/
答案 1 :(得分:1)
我的问题是没有激活音频会话(我有与前一个呼叫的音频会话停用相关的特殊检查),因为我无法停用某些呼叫的音频会话。
当对方拒绝我的电话时,我播放一个忙音,声音后我尝试用 audioPlayerDidFinishPlaying 回叫停用音频会话。
问题是我将 AVAudioPlayer 委托设置在错误的位置,我必须在播放忙音之前设置它,而不是在初始化之后。
感谢https://stackoverflow.com/a/5697900/1351327中的帖子解决了我的问题。
这是我的问题的答案,但有价值的帖子是RJV Kumar的。