应用程序的Info.plist必须包含一个带有string值的NSMicrophoneUsageDescription项,向用户解释应用程序如何使用此数据

获得构build拒绝应用程序的Info.plist必须包含一个带有string值的NSMicrophoneUsageDescription项,向用户解释应用程序如何使用此数据。

该应用程序不使用麦克风。 或者我想。

如何追踪麦克风的使用?

UPD23112016:鉴于懒惰的答案正在upvoted我提交了一个新的function请求与苹果closures这个安全漏洞。

UPD05042017:如果用户同意允许麦克风访问,那么一旦您通过一些半烤的NSMicrophoneUsageDescription将麦克风接入到某个第三方框架中,您就无法控制何时何地可以使用麦克风。 人们,请做尽职调查和工艺精确的NSMicrophoneUsageDescription,反映了当使用被第三方二进制框架遮蔽的情况下,完全不受控制的代码所使用的麦克风。 谢谢。

只需添加NSMicrophoneUsageDescription键值添加为什么你的应用程序使用麦克风的理由。 这是iOS 10的最新要求。

对于懒惰:

如果您想为大多数媒体访问(设备照片,相机,video录制,位置)快速添加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 you cool stuff near you.</string> <key>NSPhotoLibraryUsageDescription</key> <string>NeedLibrary access for uploading Images</string> 

这些描述当然取决于你。 我尽量使它们尽可能通用。

希望这可以节省一些时间!

罪魁祸首(鼓):Instabug框架。 他们会在他们的商品页面上告诉你,他们允许用户在反馈组成部分中录音。 所以我已经添加了NSMicrophoneUsageDescription到应用程序plist解释。

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

架构arm64的未定义的符号:(我已经删除了一些看起来合法的,根据框架声称做什么,留下什么,我没有看到在marketware声称)

“_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”,引用自:_OBJC_CLASS _ $ _ InstabugHost_lto.o中的IBGAsset

“_OBJC_METACLASS _ $ _ AVURLAsset”,引用自:_OBJC_METACLASS _ $ _ InstabugHost_lto.o中的IBGAsset

“_CTRadioAccessTechnologyCDMAEVDORev0”,引用自:InstabugHost_lto.o中的+ [IBGInspector getCarrier]

“_CTRadioAccessTechnologyHSUPA”,引用自:InstabugHost_lto.o中的+ [IBGInspector getCarrier]

ld:符号(s)找不到架构arm64

所以在这个后斯诺登世界,我不得不想知道为什么它需要核心电话,例如。

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

由于某些安全漏洞通过您的应用程序被利用,您不希望在某个消息中出现新闻。

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

这里的信用披露可以方便地给用户一个想法,你的第三方代码依赖。 把信用放在应有的地方:^)

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

如果你在19:00左右真的很懒,那么发言者明确地告诉你,你不应该懒惰的描述。

Instabug使用NSMicrophoneUsageDescription来允许用户logging关于错误或反馈的语音logging给你。

原因是Linked FrameWorks和Libraries中缺less框架,比如avkit和avfoundation

Interesting Posts