0

我创建了一个具有核心 c++ 组件的框架。该框架使用第三方库,它也可以请求访问麦克风。我可以使用不同的配置来构建这个框架,这些配置允许我删除诸如麦克风访问之类的东西。这样做是为了让我可以在不同的 iOS 应用程序中重新使用该框架,其中一些应用程序确实需要麦克风访问权限,而另一些则不需要。

当我构建删除麦克风代码的框架时,生成的应用程序不断被 Apple 审核流程拒绝,说我需要指定 NSMicrophoneUsageDescription,即使我已经删除了所有引用 iOS 麦克风 API 的调用。框架中仍有使用“麦克风”或“录音”一词的代码,但这些是我在自己的接口中定义的方法,在这种情况下,它们绑定到无操作实现。我还使用以下框架进行各种音频播放。也许他们的简单包含导致了拒绝?“AudioToolbox”、“AVFoundation”、“CoreAudio”、“CoreMedia”、“CoreVideo”、“OpenAL”。

不幸的是,Apple 没有向我提供他们发现的细节,所以我在这里有点摸不着头脑。

根据我的研究,遇到此问题的人最终会添加 NSMicrophoneUsageDescription 或调整描述,但在我的情况下,我实际上想完全删除它。

我的设置是否有任何可能导致问题的地方?也许 OpenAL 是一个危险信号,因为他们最近弃用了它?是否有任何好的工具可以对我的二进制文件执行分析以查找可能对 Apple 显示为危险信号的 API 引用?

4

1 回答 1

0

如果您查看信息属性列表 ( https://developer.apple.com/documentation/bundleresources/information_property_list ) 上的 Apple 文档并搜索“NSMicrophoneUsageDescription”,则 AVFoundation 作为与该键关联的框架出现。

鉴于此,我会尝试在您的代码中删除 AVFoundation 和任何对 AVFoundation 的引用,然后构建您的应用程序。

于 2019-07-22T19:19:21.637 回答