原生来电正在扼杀我的VOIP应用程序对音频的访问权限

时间:2016-05-25 07:41:20

标签: ios objective-c iphone voip

我正在开发一个允许人们拨打VOIP电话的VOIP应用。每当用户进行VOIP呼叫并在其电话上接收本机呼叫时,VOIP应用程序的音频将停止工作。

我已经读过必须重新初始化AudioSession并且我正在使用这段代码这样做但这不起作用。有什么建议吗?

self.callCenter = [[CTCallCenter alloc] init];
[self handleCall];

- (void)handleCall
{
    AVAudioSession *session = [AVAudioSession sharedInstance];

    self.callCenter.callEventHandler = ^(CTCall *call){

    if ([call.callState isEqualToString: CTCallStateConnected])
    {
    }
    else if ([call.callState isEqualToString: CTCallStateDialing])
    {
    }
    else if ([call.callState isEqualToString: CTCallStateDisconnected])
    {
      NSLog(@"Call ended");
       dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 2 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
         [session setActive:YES error:nil];
       });
    }
    else if ([call.callState isEqualToString: CTCallStateIncoming])
    {
      NSLog(@"Call received");
    }
  };
}

1 个答案:

答案 0 :(得分:0)

我使用SIP库在VoIP App上工作过。如果您也使用相同的库,如果您的VoIP呼叫已经存在,则在接听本机呼叫时,本机呼叫将终止您的VoIP呼叫音频会话。因此,在接听原生电话时,只需要制作"静音"您的SIP库和结束本机通话后,只需" UnMute"就是这样。

PropertyPlaceholderConfigurer

我希望这会对你有所帮助。