【问题标题】:How to deal with this error AVAudioSessionErrorCodeMissingEntitlement?如何处理这个错误 AVAudioSessionErrorCodeMissingEntitlement?
【发布时间】:2016-11-01 20:12:20
【问题描述】:

我正在尝试与 iOS10 的 CallKit 集成,但是当我在接听电话后尝试初始化音频会话时,此“AudioUnitInitialize”API 将抛出此错误“AVAudioSessionErrorCodeMissingEntitlement”。 根据文档,这只是一行解释: https://developer.apple.com/reference/avfoundation/avaudiosessionerrorcode/avaudiosessionerrorcodemissingentitlement

我应该如何更新支持这一点的权利?有没有人有经验?

【问题讨论】:

  • 我已经尝试添加“Inter-App-Auido”的权利,但它似乎没有真正的帮助,(之前已经添加了在后台模式下播放的“音频”)。不知何故,这种异常并非每次都发生,它有近 10% 的时间来初始化音频会话而没有任何问题。看起来像是这个测试版的 SDK 问题?
  • 这也发生在 Beta 4 上,所以我提交了一个雷达,它可能会被欺骗但无论如何:openradar.me/27674736
  • Beta 5 和 Beta 6 中也会出现这种情况 :(
  • 在 beta 7 中看到这个。
  • 发布后有消息吗?在 10.0 中它仍然发生在我身上

标签: ios audio entitlements ios10 callkit


【解决方案1】:

我在 iOS10 Beta 6 中也遇到了这个问题,并且能够通过将“AudioUnitInitialize”API 从 performAnswerCallAction: 方法(在 SpeakerBox 中实现)移动到 ProviderDelegate 的 init 例程来解决它。

通过在 ProviderDelegate 生命周期的早期移动初始化,以某种方式避免了“权利”问题。

【讨论】:

  • 谢谢。它也对我有用。顺便说一句,您可以处理“呼叫失败”按钮还是在呼叫失败时不显示本机 UI?
【解决方案2】:

我已经下载了 Apple 的 Speakerbox 示例应用来检查用于 CallKit 的权利和后台模式。

看起来他们在应用的 Info.plist 中添加了背景模式 -> IP 语音授权和“应用提供 IP 语音服务”键:

<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>

【讨论】:

  • 嗨,JAL,非常感谢您的回复,但这并没有什么帮助,在我发布这个问题之前,我已经用这个“Speakbox”示例应用程序进行了测试,结果也是初始化音频会话时抛出相同的异常。 (它在“AudioController.mm”、“XThrowIfError(AudioUnitInitialize(_rioUnit)...”中。如果你在这一行的 catch 块中放置一个断点,你会看到它抛出超过 80% 的异常)。跨度>
猜你喜欢
  • 1970-01-01
  • 2021-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-25
  • 2019-08-20
  • 1970-01-01
相关资源
最近更新 更多