我正在尝试与iOS10的CallKit集成,但是当我试图在接受电话呼叫后初始化音频会话时,这个"AudioUnitInitialize"API将抛出此错误"AVAudioSessionErrorCodeMissingEntitlement"。根据这份文件,它只有一行解释:https://developer.apple.com/reference/avfoundation/avaudiosessionerrorcode/avaudiosessionerrorcodemissingentitlement
我应该如何更新授权来支持这个?有人有经验吗?
我在iOS10 Beta 6中也遇到了这个问题,并且能够通过将"AudioUnitInitialize" API从performAnswerCallAction:
方法(如在SpeakerBox中实现的)移动到ProviderDelegate的init
例程来解决这个问题。
通过将初始化移到ProviderDelegate生命周期的早期,以某种方式避免了"授权"问题。
我下载了苹果的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>