2016-05-25 5 views
0

Ich entwickle eine VOIP-App, die es Menschen ermöglicht, VOIP-Anrufe zu tätigen. Wenn ein Benutzer einen VoIP-Anruf tätigt und auf seinem Telefon einen nativen Anruf empfängt, funktioniert der Ton der VoIP-App nicht mehr.Nativer eingehender Anruf tötet den Zugriff meiner VoIP-App auf Audio

Ich habe gelesen, dass man die AudioSession reinitialisieren muss und ich mache das mit diesem Code-Block, aber das funktioniert nicht. Irgendwelche Vorschläge?

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"); 
    } 
    }; 
} 

Antwort

0

Ich habe an VoIP-App mit SIP-Bibliothek arbeiten mit. Wenn Sie dieselbe Bibliothek verwenden, während Sie einen nativen Anruf erhalten, wenn Ihr VoIP-Anruf bereits besteht, beenden Sie mit dem systemeigenen Anruf Ihre VoIP-Anruf-Audiositzung. Also, während Sie nativen Anruf erhalten, machen Sie einfach Ihre SIP-Bibliothek "stumm" und nach dem Ende der nativen Anruf, nur "UnMute" das ist es.

pjsua_conf_adjust_rx_level(0 /* pjsua_conf_port_id slot*/, 0.0f); //for mute the audio 

    pjsua_conf_adjust_rx_level(0 /* pjsua_conf_port_id slot*/, 1.0f); //for unmute the audio. 

Ich hoffe, das wird Ihnen helfen.

Verwandte Themen