2016-12-13 5 views
2

Ich bin CallKit mit VOIP App integrieren. Ich konnte ein- und ausgehende Anrufe tätigen. Ich folgte dem Schritt:CXPlayDTMFCallAction spielt nicht lokalen dtmf Sound

  1. ConfigureAudioSession
  2. startAudio in (didActivate)
  3. stopAudio in (didDeActivate)

I die Rückrufe für DTMF-Provider delegieren implementiert haben, wie unten gezeigt:

func provider(_ provider: CXProvider, perform action: CXPlayDTMFCallAction) { 
    print("Provider - CXPlayDTMFCallAction") 

    let dtmfDigts:String = action.digits 

    for (index, _) in dtmfDigts.characters.enumerated() { 
     let dtmfDigit = dtmfDigts.utf8CString[index] 
     print("Processing dtmfDigit:\(dtmfDigit)") 
     self.softphone.dtmf(on:dtmfDigit) 
    } 

    self.softphone.dtmfOff() 

    // Signal to the system that the action has been successfully performed. 
    action.fulfill() 
} 

Ich höre keinen Tastendruck Ton dh lokale dtmf Töne, wenn ich eine Nummer auf der NAT drücken ive während des Anrufs in der Anruf-Benutzeroberfläche.

Von https://developer.apple.com/reference/callkit/cxplaydtmfcallaction:

„CallKit automatisch spielt die entsprechenden DTMF-Frequenzen für beliebigen über einen Anruf übertragenen Ziffern Die Anwendung ist verantwortlich für Verwaltung die Zeitsteuerung und Handhabung von Ziffern als Teil der Erfüllung der Aktion. . "

Ist dies ein bekanntes Problem oder Callkit spielt nicht die lokale dtmf Taste drücken Sounds?

+0

Mit "native Dialer" beziehen Sie sich auf die Registerkarte "Tastatur" in der Telefon-App, oder meinen Sie die Schaltfläche "Tastatur" in der nativen In-Call-UI angezeigt? –

+0

@StuartM Ja, native In-Call-UI. – ssk

Antwort

1

konnte ich es durch funktioniert:

func provider(_ provider: CXProvider, perform action: CXPlayDTMFCallAction) { 
    print("Provider - CXPlayDTMFCallAction") 

    self.softphone.audioController.configureAudioSession() 

    let dtmfDigts:String = action.digits 

    for (index, _) in dtmfDigts.characters.enumerated() { 
     let dtmfDigit = dtmfDigts.utf8CString[index] 
     print("Processing dtmfDigit:\(dtmfDigit)") 
     self.softphone.dtmf(on:dtmfDigit) 
    } 

    self.softphone.dtmfOff() 

    // Signal to the system that the action has been successfully performed. 
    action.fulfill() 
} 

Hinweis

: Ich habe self.softphone.audioController.configureAudioSession().

2

CallKit sollte die DTMF-Töne lokal wiedergeben, wenn die Tasten auf der "Tastatur" -Taste der nativen In-Call-Benutzeroberfläche gedrückt werden. Eine CallKit-App ist jedoch dafür zuständig, die DTMF-Töne über ihre eigene Netzwerkschnittstelle an die Gegenstelle zu senden.

Wenn Sie die lokal wiedergegebenen Töne nicht über die native In-Call-Benutzeroberfläche hören, wenden Sie sich bitte an Apple unter report a bug.

Verwandte Themen