【问题标题】:iOS App asks for microphone access, even for kAudioSessionCategory_MediaPlaybackiOS 应用程序要求访问麦克风,即使是 kAudioSessionCategory_MediaPlayback
【发布时间】:2014-01-24 16:10:30
【问题描述】:

我正在使用来自:https://github.com/alexbw/novocaine 的 Novocaine 库来播放 wav 文件。我知道 iOS 有自己的媒体播放器 API,但它的限制在于预设均衡器。我需要使用 Novocaine,因为我正在使用 NVDSP https://github.com/bartolsthoorn/NVDSP 来实现 10 波段图形均衡器。

Apple 拒绝了我提交的应用程序,因为它要求访问麦克风,但它只是一个播放应用程序。他们说:

“麦克风同意请求是通过使用 AVAudioSessionCategoryRecord 或 AVAudioSessionCategoryPlayAndRecord 音频类别生成的”

在 Novocaine.m 中,我从

修改了 setupAudio
UInt32 sessionCategory = kAudioSessionCategory_PlayAndRecord

对每一个:

UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback
UInt32 sessionCategory = kAudioSessionCategory_AmbientSound
UInt32 sessionCategory = kAudioSessionCategory_SoloAmbientSound

但在上述每种情况下,应用仍然请求麦克风访问权限。

我搜索了所有代码,这是唯一设置音频会话类别的地方。

要测试,每次修改后,您必须在 iPod 上执行此操作:

设置 -> 常规 -> 重置 -> 重置位置和隐私

否则测试无效。

我使用 XCode 调试器单步检查了几乎所有的 Novocaine 代码,但诊断起来非常困难,因为麦克风访问弹出窗口仅在显示视图时显示,但是,检查它发生的时间要早​​得多代码。

代码中是否还有其他地方要求访问麦克风或作为副作用影响麦克风访问?

我正在使用 XCode 5.0.2 (5A3005) 和 iOS SDK 7.0,我唯一的测试设备是第 5 代 iPod Touch。

【问题讨论】:

  • 我遇到了同样的问题。有没有运气找到解决方案?

标签: ios objective-c microphone avaudiosession novocaine


【解决方案1】:

这完全归功于 Github 上的 DMT4u,但是是的,他/她的解决方案对我有用!注释掉以下几行:

UInt32 one = 1;
CheckError( AudioUnitSetProperty(inputUnit,
kAudioOutputUnitPropertyEnableIO,
kAudioUnitScope_Input,
kInputBus,
&one,
sizeof(one)), "Couldn't enable IO on the input scope of output unit");

来源:https://github.com/alexbw/novocaine/issues/76

【讨论】:

    猜你喜欢
    • 2014-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多