应用程序的Info.plist必须包含一个NSMicrophoneUsageDescription键,其中包含一个字符串值,向用户解释应用程序如何使用此数据

时间:2016-09-20 09:08:49

标签: ios itunesconnect ios10 instabug

获得了构建拒绝 该应用的Info.plist必须包含一个NSMicrophoneUsageDescription键,其中包含一个字符串值,向用户解释该应用如何使用此数据。

该应用不使用麦克风。或者我认为。

如何追踪使用麦克风的位置?

UPD23112016:鉴于懒惰的答案正在被投票,我已向苹果提交了一项新的功能请求以关闭此安全漏洞。

UPD05042017:代理麦克风访问后仍然很麻烦 通过一些半裸的NSMicrophoneUsageDescription进入一些第三方框架 如果用户同意,您无法控制何时何地可以使用它 允许麦克风访问。伙计们,请尽职尽责,精确工艺 NSMicrophoneUsageDescription反映了麦克风的事实 当使用被第三方仅二进制框架遮挡时,代码使用的代码完全在您的控制范围之外。感谢。

7 个答案:

答案 0 :(得分:55)

懒惰:

如果您想为大多数媒体访问(设备上的照片,相机,视频录制,位置)快速添加usageDescriptions:

右键单击您的info.plist文件 - >打开为 - >源代码

然后将以下内容粘贴到当前值之间:

<key>NSMicrophoneUsageDescription</key>
<string>Need microphone access for uploading videos</string>
<key>NSCameraUsageDescription</key>
<string>Need camera access for uploading Images</string>
<key>NSLocationUsageDescription</key>
<string>Need location access for updating nearby friends</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>This app will use your location to show cool stuffs near you.</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>Need Library access for uploading Images</string>

这些描述当然取决于您。我试图让它们尽可能通用。

希望这能节省一些人的时间!

答案 1 :(得分:36)

只需添加NSMicrophoneUsageDescription密钥&amp;在价值中添加了为什么您的应用使用麦克风的理由。这是iOS 10中的最新要求。

答案 2 :(得分:17)

罪魁祸首是(鼓):Instabug框架。 他们在他们允许的市场软件页面上告诉你 用户在反馈组合期间采集音频笔记。 所以我已将NSMicrophoneUsageDescription添加到a​​pp plist中 解释说。

请注意,instabug使用了很多苹果API

架构arm64的未定义符号: (我根据该框架声称的做法删除了一些似乎合法的东西,并留下了我认为在市场软件中没有声称的内容)

&#34; _AVMakeRectWithAspectRatioInsideRect&#34;,引自: InstabugHost_lto.o中的[IBGIAMImageAttachmentView sizeForContent:forWidth:]

&#34; _OBJC_CLASS _ $ _ CTTelephonyNetworkInfo&#34;,引自: InstabugHost_lto.o中的objc-class-ref

&#34; _AVNumberOfChannelsKey&#34;,引自: - InstabugHost_lto.o中的[IBGVoiceNoteManager startRecording]

&#34; _CTRadioAccessTechnologyHSDPA&#34;,引自: InstabugHost_lto.o中的[IBGInspector getCarrier]

&#34; _CTRadioAccessTechnologyGPRS&#34;,引自: InstabugHost_lto.o中的[IBGInspector getCarrier]

&#34; _CTRadioAccessTechnologyWCDMA&#34;,引自: InstabugHost_lto.o中的[IBGInspector getCarrier]

&#34; _CTRadioAccessTechnologyEdge&#34;,引自: InstabugHost_lto.o中的[IBGInspector getCarrier]

&#34; _CTRadioAccessTechnologyCDMA1x&#34;,引自: InstabugHost_lto.o中的[IBGInspector getCarrier]

&#34; _CTRadioAccessTechnologyCDMAEVDORevA&#34;,引自: InstabugHost_lto.o中的[IBGInspector getCarrier]

&#34; _CTRadioAccessTechnologyCDMAEVDORevB&#34;,引自: InstabugHost_lto.o中的[IBGInspector getCarrier]

&#34; _CTRadioAccessTechnologyLTE&#34;,引自: InstabugHost_lto.o中的[IBGInspector getCarrier]

&#34; _OBJC_CLASS _ $ _ AVURLAsset&#34;,引自: InstobugHost_lto.o中的_OBJC_CLASS _ $ _ IBGAsset

&#34; _OBJC_METACLASS _ $ _ AVURLAsset&#34;,引自: InstabugHost_lto.o中的_OBJC_METACLASS _ $ _ IBGAsset

&#34; _CTRadioAccessTechnologyCDMAEVDORev0&#34;,引自: InstabugHost_lto.o中的[IBGInspector getCarrier]

&#34; _CTRadioAccessTechnologyHSUPA&#34;,引自: InstabugHost_lto.o中的[IBGInspector getCarrier]

ld:找不到架构arm64的符号

所以在斯诺登后世界,我不禁要问为什么它需要核心音乐, 例如。

所以我得到的是,如果你没有第三个来源 您必须向用户披露您的应用的派对框架 本身不是使用麦克风,或相机,以便用户 可以选择拒绝访问该设备。

由于某些安全漏洞,你有一天不想参与新闻 通过您的应用程序利用。

未解决:精心设计的麦克风使用说明并未完全解决安全问题,但以防您的应用使用麦克风和第三方框架(认为它)也需要它。

在这里,信用披露可以派上用场,让用户了解您所依赖的第三方代码。给予应有的信用:^)

如果你像我一样懒惰,从不读过ios安全白皮书 这是一个简短的https://developer.apple.com/videos/play/wwdc2016/705/

如果您不想完整地观看视频:在19:00左右,发言人明确告诉您,您不得对这些描述保持懒惰。

答案 3 :(得分:6)

iOS应用要求用户在访问麦克风之前授予权限。试图在没有用户许可的情况下访问它会导致应用程序崩溃。

要请求用户权限,我们只需在 info.plist 文件中添加 NSMicrophoneUsageDescription 键即可。并为此密钥提供值。值可以是指示应用程序访问麦克风所需的任何字符串。

enter image description here

答案 4 :(得分:5)

Instabug使用NSMicrophoneUsageDescription允许您的用户录制有关错误或反馈的语音留言。

答案 5 :(得分:1)

只需在代码库中的某处AVAudioSession.sharedInstance().requestRecordPermission()就足以通过iTunes Connect触发此错误。它甚至不需要主动调用该代码!

答案 6 :(得分:0)

我想这需要另一个答案来赞美我的另一个大量答案(因为人们通常都懒得阅读,而且到目前为止开发人员大多是人)

Apple 已经针对请求访问麦克风的 3rd 方二进制框架的安全漏洞采取了行动,并在 ios15 中添加了(除其他外)麦克风使用的审计跟踪。应用程序隐私报告它在设置中调用。因此,审核该跟踪的部分责任转移到嵌入了 3rd 方垃圾软件的应用程序的用户身上。阿门。