2017-04-26 2 views
0

Ich habe CallKit in meiner VOIP-App integriert. Ich habe einen VOIP-Anruf getätigt und das andere Ende hat auf meinen Anruf geantwortet. Später habe ich einen GSM-Anruf erhalten, wenn der VOIP-Anruf aktiv ist. Ich habe GSM-Anruf angenommen, indem ich Audio freigegeben habe und meine VOIP-App ging in den Hintergrund. Nach wenigen Sekunden habe ich die GSM-Verbindung getrennt, aber dann unter Methode delegiert Rückruf Ich erhalte:CallKit Behandlung mehrerer Anrufe (VOIP und GSM) Problem in iOS

- (void)provider:(CXProvider *)provider performEndCallAction:(CXEndCallAction *)action 

Bei dieser Methode ich trenne tatsächlich all meine eingehenden/ausgehende Anrufe, so zugleich, sowohl GSM- und meine VOIP-Anrufe wurden getrennt.

Ich bin mir nicht sicher, warum über Delegierten Methode aufgerufen wird, wenn ich den GSM-Anruf trennen, wenn ich Recht habe ... diese Methode sollte nur aufgerufen werden, wenn ich den VOIP-Anruf trennen.

Meine Roadmap ist: Nach dem Trennen der GSM-Verbindung werde ich meinen Audio-Dienst starten und den VOIP-Anruf fortsetzen. Aber ich kann nicht weiter fortfahren, da mein VOIP-Anruf ebenfalls getrennt wird.

Antwort

0

Der richtige Weg (gemäß dem von Apple bereitgestellten Beispielcode) mit CallKit zu integrieren ist, dass alle von Ihnen durchgeführten Aktionen mit CXCallController requestTransaction: completion: method aufrufen und darauf warten, dass CXProviderDelegate entsprechend auslöst Delegieren Sie Methode, und machen Sie die eigentliche Arbeit dort.

For example, if you want to hold the call, what you need to do is 

    CXSetHeldCallAction *setHeldCallAction = [[CXSetHeldCallAction alloc]  
    initWithCallUUID:UUID onHold:onHold]; 
    CXTransaction *transaction = [[CXTransaction alloc]  
    initWithAction:setHeldCallAction]; 
    [self.callController requestTransaction:transaction completion:^(NSError * _Nullable error) { 
     if (error) { 
      NSLog(@"%@", error); 
     } 
    }]; 

die CXProviderDelegate wird dann Provider auslösen: performSetHeldCallAction :, und Sie führen Ihre Handhabung im Inneren, dass.

0

Ich bin nicht sicher, warum über delegierte Methode genannt wird, wenn ich den GSM-Anruf trennen, wenn ich Recht habe ... sollte diese Methode nur aufgerufen werden, wenn ich den VOIP-Anruf trenne

ist nicht die Rede In der Dokumentation wird diese Methode nur für Anrufe von Ihrer App aufgerufen. Ich nehme an, das ist richtiges Verhalten und Sie müssen die Anruf-UUID erhalten, um den Anruf zu identifizieren, wie einer Ihrer anderen ignoriert.

+0

Dies bietet keine Antwort auf die Frage. Sobald Sie genug [Reputation] (https://stackoverflow.com/help/whats-reputation) haben, können Sie [jeden Beitrag kommentieren] (https://stackoverflow.com/help/privileges/comment); Stattdessen [geben Sie Antworten, die keine Klärung durch den Fragesteller erfordern] (https://meta.stackexchange.com/questions/214173/why-doe-i-need-50-reputation-to-comment-what-can- i-do-stattdessen). - [Aus Bewertung] (/ review/low-quality-posts/17407173) – PieOhPah

Verwandte Themen