Как бороться с этой ошибкой AVAudioSessionErrorCodeMissingEntitlement?

Я пытаюсь интегрировать с iOS10 CallKit, однако, когда я пытаюсь инициализировать аудио-сеанс после принятия телефонного звонка, этот API-интерфейс AudioUnitInitialize выдает эту ошибку "AVAudioSessionErrorCodeMissingEntitlement". Согласно документу, это всего лишь одна строка объяснения: https://developer.apple.com/reference/avfoundation/avaudiosessionerrorcode/avaudiosessionerrorcodemissingentitlement

Как я должен обновить право на поддержку этого? Есть ли у тела опыт?

2 ответа

Я также столкнулся с этой проблемой в iOS10 Beta 6 и смог решить ее, переместив API AudioUnitInitialize из performAnswerCallAction: метод (как реализовано в SpeakerBox) к init рутина ProviderDelegate.

Перемещая инициализацию на более раннем этапе жизненного цикла ProviderDelegate, можно избежать проблемы "предоставления прав".

Я скачал пример приложения Apple Speakerbox для проверки прав и фоновых режимов, используемых для CallKit.

Похоже, что они добавляют фоновые режимы -> передача голоса по IP и ключ "Приложение предоставляет услуги передачи голоса по IP" в Info.plist приложения:

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

Это также добавляет INStartAudioCallIntent ключ к NSUserActivityTypes и следующее описание использования микрофона:

<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>
Другие вопросы по тегам