Как бороться с этой ошибкой 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>