2016-06-29 26 views
8

Sto cercando di integrare con CallKit di iOS10, tuttavia quando sto provando a inizializzare la sessione audio dopo aver accettato una telefonata, questa API "AudioUnitInitialize" genererà questo errore "AVAudioSessionErrorCodeMissingEntitlement". Secondo il documento, è solo una linea di spiegazione: https://developer.apple.com/reference/avfoundation/avaudiosessionerrorcode/avaudiosessionerrorcodemissingentitlementCome gestire questo errore AVAudioSessionErrorCodeMissingEntitlement?

Come dovrei aggiornare il diritto per il supporto questo? Qualche corpo ha qualche esperienza?

+0

Ho provato con l'aggiunta di "Inter-App-Auido", tuttavia non sembra essere d'aiuto, (L'audio in modalità background è già stato aggiunto in precedenza). In qualche modo questa eccezione non si verifica per ogni volta, ha quasi il 10% per inizializzare la sessione audio senza alcun problema. Sembra un problema dell'SDK di questa versione beta? – Pei

+0

Questo accade anche nella Beta 4, quindi ho archiviato un radar, probabilmente sarà ingannato ma in ogni caso: http://www.openradar.me/27674736 –

+1

Succede anche in Beta 5 e Beta 6 :( –

risposta

-1

Ho scaricato l'app di esempio Speakerbox di Apple per esaminare le autorizzazioni e le modalità di background utilizzate per CallKit.

Sembra che aggiungono delle modalità Background -> Voice over IP diritto e la "applicazione fornisce servizi Voice over IP" per Info.plist dell'app:

<key>UIBackgroundModes</key> 
<array> 
    <string>voip</string> 
</array> 

si aggiunge anche la chiave per INStartAudioCallIntentNSUserActivityTypes e la seguente descrizione del microfono Uso:

<key>NSMicrophoneUsageDescription</key> 
<string>$(PRODUCT_NAME) uses the Microphone for call audio</string> 
<key>NSCallKitUsageDescription</key> 
<string>$(PRODUCT_NAME) makes and receives calls</string> 
<key>NSUserActivityTypes</key> 
<array> 
    <string>INStartAudioCallIntent</string> 
</array> 
+1

Ciao JAL, Grazie mille per la risposta, tuttavia questo non aiuta davvero, prima di pubblicare questa domanda, ho già provato con questo Esempio di app "Speakbox", il risultato è anche la stessa eccezione quando si inizializza la sessione audio (si trova in "AudioController.mm", "XThrowIfError (AudioUnitInitialize (_rioUnit) ...". Se si inserisce un punto di interruzione in il blocco catch per questa linea, vedrai che genera un'eccezione superiore all'80%.) – Pei

3

ho anche imbattuto in questo problema in iOS10 Beta 6, ed è stato in grado di risolverlo spostando l'API "AudioUnitInitialize" dal metodo performAnswerCallAction: (come ho implementato n SpeakerBox) alla routine init di ProviderDelegate.

Spostando l'inizializzazione in precedenza nel ciclo di vita di ProviderDelegate, in qualche modo viene evitato il problema di "autorizzazione".

+0

Grazie. Funziona anche per me. Btw, puoi gestire il pulsante "Call Fail" o non visualizzare l'interfaccia utente nativa quando la chiamata fallisce? – sahara108

Problemi correlati