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

Ant*_*hko 42 itunesconnect ios instabug ios10

获得构建拒绝应用程序Info.plist必须包含一个NSMicrophoneUsageDescription带有字符串值的键,向用户解释应用程序如何使用此数据.

该应用程序不使用麦克风.或者我认为.

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

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

UPD05042017:一旦您通过一些半裸的NSMicrophoneUsageDescription将麦克风访问代理到某些第三方框架,您仍然很麻烦,如果用户同意允许麦克风访问,则无法控制何时何地可以使用它.伙计们,请尽职尽责并制作精确的NSMicrophoneUsageDescription,它反映了当使用被第三方仅二进制框架遮挡时,麦克风被完全不受您控制的代码所使用的事实.谢谢.

Pau*_*ehn 58

对于懒惰:

如果您想为大多数媒体访问(设备上的照片,相机,视频录制,位置)快速添加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>
Run Code Online (Sandbox Code Playgroud)

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

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


iYo*_*ung 41

只需添加NSMicrophoneUsageDescription键和值即可添加为什么您的应用使用麦克风的理由.这是iOS 10中的最新要求.


Ant*_*hko 17

罪魁祸首是(鼓):Instabug框架.他们在他们的市场软件页面上告诉您,他们允许用户在反馈组合期间收听音频笔记.所以我已经添加NSMicrophoneUsageDescription到应用程序plist解释.

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

架构arm64的未定义符号:(我根据框架声称要做的事情删除了一些似乎合法的符号,并留下了我在市场软件中看不到的声明)

"_AVMakeRectWithAspectRatioInsideRect",引自:InstabugHost_lto.o中的+ [IBGIAMImageAttachmentView sizeForContent:forWidth:]

"_OBJC_CLASS _ $ _ CTTelephonyNetworkInfo",引自:InstabugHost_lto.o中的objc-class-ref

"_AVNumberOfChannelsKey",引用自: - InstabugHost_lto.o中的[IBGVoiceNoteManager startRecording]

"_CTRadioAccessTechnologyHSDPA",引自:InstabugHost_lto.o中的+ [IBGInspector getCarrier]

"_CTRadioAccessTechnologyGPRS",引自:InstabugHost_lto.o中的+ [IBGInspector getCarrier]

"_CTRadioAccessTechnologyWCDMA",引自:InstabugHost_lto.o中的+ [IBGInspector getCarrier]

"_CTRadioAccessTechnologyEdge",引自:InstabugHost_lto.o中的+ [IBGInspector getCarrier]

"_CTRadioAccessTechnologyCDMA1x",引自:InstabugHost_lto.o中的+ [IBGInspector getCarrier]

"_CTRadioAccessTechnologyCDMAEVDORevA",引自:InstabugHost_lto.o中的+ [IBGInspector getCarrier]

"_CTRadioAccessTechnologyCDMAEVDORevB",引自:InstabugHost_lto.o中的+ [IBGInspector getCarrier]

"_CTRadioAccessTechnologyLTE",引自:InstabugHost_lto.o中的+ [IBGInspector getCarrier]

"_OBJC_CLASS _ $ _ AVURLAsset",引自:InstabugHost_lto.o中的_OBJC_CLASS _ $ _ IBGAsset

"_OBJC_METACLASS _ $ _ AVURLAsset",引自:InstabugHost_lto.o中的_OBJC_METACLASS _ $ _ IBGAsset

"_CTRadioAccessTechnologyCDMAEVDORev0",引自:InstabugHost_lto.o中的+ [IBGInspector getCarrier]

"_CTRadioAccessTechnologyHSUPA",引自:InstabugHost_lto.o中的+ [IBGInspector getCarrier]

ld:找不到架构arm64的符号

因此,在斯诺登后世界,我不得不想知道为什么它需要核心电话.

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

由于您的应用程序利用了一些安全漏洞,您不希望某天出现在新闻中.

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

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

如果你像我一样懒惰,从来没有通过ios安全白皮书阅读这里的简短https://developer.apple.com/videos/play/wwdc2016/705/

如果你在19:00左右真的很懒,那么发言人会明确告诉你,你不应该对这些描述感到懒惰.


Sha*_*mar 8

iOS应用程序要求用户在访问麦克风之前授予权限.尝试在未经用户许可的情况下访问它将导致应用程序崩溃.

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

在此输入图像描述


MEn*_*bah 5

Instabug用于NSMicrophoneUsageDescription允许您的用户记录有关错误的语音注释或对您的反馈。