应用的 Info.plist 必须包含一个 NSMicrophoneUsageDescription 键和一个字符串值,向用户解释应用如何使用此数据
The app's Info.plist must contain an NSMicrophoneUsageDescription key with a string value explaining to the user how the app uses this data
构建被拒绝
应用程序的 Info.plist
必须包含一个 NSMicrophoneUsageDescription
键和一个字符串值,向用户解释应用程序如何使用此数据。
该应用不使用麦克风。大概是这样吧。
如何追踪使用麦克风的位置?
UPD23112016:鉴于懒惰的回答被点赞,我已经向 Apple 提交了一项新功能请求以关闭此安全漏洞。
UPD05042017:代理mic访问还是很麻烦
通过一些半生不熟的 NSMicrophoneUsageDescription 进入一些第三方框架
如果用户同意,您可以对何时何地使用它进行零控制
允许麦克风访问。伙计们,请做尽职调查和工艺精确
NSMicrophoneUsageDescription 反映了麦克风的事实
当使用被第 3 方二进制框架掩盖时,由完全不受您控制的代码使用。谢谢
UPD2021:Apple 尽其所能为共享的审计跟踪
最近 iOS 中的资源(例如麦克风)使用情况,因此用户
在实际访问发生时进行一些资源检查。
不错的尝试,但是有多少人会进行尽职调查?
只需添加 NSMicrophoneUsageDescription
键并在值中添加您的应用使用麦克风的理由。这是 iOS 10.
中的最新要求
罪魁祸首是(鼓):Instabug 框架。
他们在他们允许的市场软件页面上告诉你
用户在反馈撰写过程中做音频笔记。
所以我将 NSMicrophoneUsageDescription
添加到应用程序列表中
解释一下。
注意instabug用的苹果API很多
架构 arm64 的未定义符号:
(我已经删除了一些根据该框架声称要做的似乎合法的东西,并留下了我在市场软件中没有看到的东西)
“_AVMakeRectWithAspectRatioInsideRect”,引用自:
+[IBGIAMImageAttachmentView sizeForContent:forWidth:] 在 InstabugHost_lto.o
"OBJC_CLASS$_CTTelephonyNetworkInfo",引用自:
InstabugHost_lto.o
中的 objc-class-ref
“_AVNumberOfChannelsKey”,引用自:
- [IBGVoiceNoteManager startRecording] 在 InstabugHost_lto.o
“_CTRadioAccessTechnologyHSDPA”,引用自:
+[IBGInspector getCarrier] 在 InstabugHost_lto.o
“_CTRadioAccessTechnologyGPRS”,引用自:
+[IBGInspector getCarrier] 在 InstabugHost_lto.o
“_CTRadioAccessTechnologyWCDMA”,引用自:
+[IBGInspector getCarrier] 在 InstabugHost_lto.o
“_CTRadioAccessTechnologyEdge”,引用自:
+[IBGInspector getCarrier] 在 InstabugHost_lto.o
“_CTRadioAccessTechnologyCDMA1x”,引用自:
+[IBGInspector getCarrier] 在 InstabugHost_lto.o
“_CTRadioAccessTechnologyCDMAEVDORevA”,引用自:
+[IBGInspector getCarrier] 在 InstabugHost_lto.o
“_CTRadioAccessTechnologyCDMAEVDORevB”,引用自:
+[IBGInspector getCarrier] 在 InstabugHost_lto.o
“_CTRadioAccessTechnologyLTE”,引用自:
+[IBGInspector getCarrier] 在 InstabugHost_lto.o
"OBJC_CLASS$_AVURLAsset",引用自:
OBJC_CLASS$_IBG资产在InstabugHost_lto.o
"OBJC_METACLASS$_AVURLAsset",引用自:
OBJC_METACLASS$_IBG资产在InstabugHost_lto.o
“_CTRadioAccessTechnologyCDMAEVDORev0”,引用自:
+[IBGInspector getCarrier] 在 InstabugHost_lto.o
“_CTRadioAccessTechnologyHSUPA”,引用自:
+[IBGInspector getCarrier] 在 InstabugHost_lto.o
ld:未找到架构 arm64 的符号
所以在这个 post-Snowden 世界里我想知道为什么它需要 coretelephony,
例如。
所以我要说的是,如果你没有源代码,那么第三个
您必须向用户披露您的应用程序的派对框架
本身不使用麦克风或摄像头,以便用户
可以选择拒绝访问该设备。
你不想有一天因为某些安全漏洞而出现在新闻中
通过您的应用程序被利用。
未解决:精心制作的麦克风使用说明并没有完全解决安全问题,但以防万一您的应用确实使用麦克风并且第 3 方框架(认为它)也需要它。
您必须起草一份概述风险的冗长描述。
在这里,信用披露可以派上用场,让用户了解您所依赖的第 3 方代码。归功于到期的地方:^)
如果你像我一样懒惰,从不通读 ios 安全白皮书
这是一个简短的 https://developer.apple.com/videos/play/wwdc2016/705/
如果您不想完整观看视频:在 19:00 标记周围,演讲者明确告诉您,您不能偷懒这些描述(您对第 3 方负责
代码可能会滥用用户授予您的应用程序的权限。
必须喜欢二进制框架 ;^)
对于懒人:
如果您想为大多数媒体访问(设备上的照片、相机、视频录制、位置)快速添加使用说明:
右键单击您的 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 photo library access for uploading images</string>
当然,这些描述由您决定。我试图让它们尽可能通用。
希望这可以节省一些人的时间!
Instabug 使用 NSMicrophoneUsageDescription
允许您的用户录制有关错误或给您的反馈的语音留言。
iOS 应用要求用户在访问麦克风之前授予权限。试图在未经用户许可的情况下访问它会导致应用程序崩溃。
要请求用户权限,我们只需在 info.plist 文件中添加 NSMicrophoneUsageDescription 键并提供一个值对于这把钥匙。值可以是任何字符串,说明应用程序需要访问麦克风。
只需在您的代码库中的某处设置 AVAudioSession.sharedInstance().requestRecordPermission()
就足以在 iTunes Connect 中触发此错误。甚至不需要主动调用该代码!
我想这需要另一个答案来赞美我的另一个长篇大论的答案(因为人们通常懒得去阅读,到目前为止开发人员大多是人)
Apple 已针对请求访问麦克风的仅第三方二进制框架的安全漏洞采取行动,并在 ios15 中添加了对(除其他外)麦克风使用情况的审计跟踪。 App Privacy Report 它在设置中调用。因此,审计该踪迹的部分责任转移到了嵌入了第 3 方垃圾软件的应用程序的用户身上。阿们。
构建被拒绝
应用程序的 Info.plist
必须包含一个 NSMicrophoneUsageDescription
键和一个字符串值,向用户解释应用程序如何使用此数据。
该应用不使用麦克风。大概是这样吧。
如何追踪使用麦克风的位置?
UPD23112016:鉴于懒惰的回答被点赞,我已经向 Apple 提交了一项新功能请求以关闭此安全漏洞。
UPD05042017:代理mic访问还是很麻烦 通过一些半生不熟的 NSMicrophoneUsageDescription 进入一些第三方框架 如果用户同意,您可以对何时何地使用它进行零控制 允许麦克风访问。伙计们,请做尽职调查和工艺精确 NSMicrophoneUsageDescription 反映了麦克风的事实 当使用被第 3 方二进制框架掩盖时,由完全不受您控制的代码使用。谢谢
UPD2021:Apple 尽其所能为共享的审计跟踪 最近 iOS 中的资源(例如麦克风)使用情况,因此用户 在实际访问发生时进行一些资源检查。 不错的尝试,但是有多少人会进行尽职调查?
只需添加 NSMicrophoneUsageDescription
键并在值中添加您的应用使用麦克风的理由。这是 iOS 10.
罪魁祸首是(鼓):Instabug 框架。
他们在他们允许的市场软件页面上告诉你
用户在反馈撰写过程中做音频笔记。
所以我将 NSMicrophoneUsageDescription
添加到应用程序列表中
解释一下。
注意instabug用的苹果API很多
架构 arm64 的未定义符号: (我已经删除了一些根据该框架声称要做的似乎合法的东西,并留下了我在市场软件中没有看到的东西)
“_AVMakeRectWithAspectRatioInsideRect”,引用自: +[IBGIAMImageAttachmentView sizeForContent:forWidth:] 在 InstabugHost_lto.o
"OBJC_CLASS$_CTTelephonyNetworkInfo",引用自: InstabugHost_lto.o
中的 objc-class-ref“_AVNumberOfChannelsKey”,引用自: - [IBGVoiceNoteManager startRecording] 在 InstabugHost_lto.o
“_CTRadioAccessTechnologyHSDPA”,引用自: +[IBGInspector getCarrier] 在 InstabugHost_lto.o
“_CTRadioAccessTechnologyGPRS”,引用自: +[IBGInspector getCarrier] 在 InstabugHost_lto.o
“_CTRadioAccessTechnologyWCDMA”,引用自: +[IBGInspector getCarrier] 在 InstabugHost_lto.o
“_CTRadioAccessTechnologyEdge”,引用自: +[IBGInspector getCarrier] 在 InstabugHost_lto.o
“_CTRadioAccessTechnologyCDMA1x”,引用自: +[IBGInspector getCarrier] 在 InstabugHost_lto.o
“_CTRadioAccessTechnologyCDMAEVDORevA”,引用自: +[IBGInspector getCarrier] 在 InstabugHost_lto.o
“_CTRadioAccessTechnologyCDMAEVDORevB”,引用自: +[IBGInspector getCarrier] 在 InstabugHost_lto.o
“_CTRadioAccessTechnologyLTE”,引用自: +[IBGInspector getCarrier] 在 InstabugHost_lto.o
"OBJC_CLASS$_AVURLAsset",引用自: OBJC_CLASS$_IBG资产在InstabugHost_lto.o
"OBJC_METACLASS$_AVURLAsset",引用自: OBJC_METACLASS$_IBG资产在InstabugHost_lto.o
“_CTRadioAccessTechnologyCDMAEVDORev0”,引用自: +[IBGInspector getCarrier] 在 InstabugHost_lto.o
“_CTRadioAccessTechnologyHSUPA”,引用自: +[IBGInspector getCarrier] 在 InstabugHost_lto.o
ld:未找到架构 arm64 的符号
所以在这个 post-Snowden 世界里我想知道为什么它需要 coretelephony, 例如。
所以我要说的是,如果你没有源代码,那么第三个 您必须向用户披露您的应用程序的派对框架 本身不使用麦克风或摄像头,以便用户 可以选择拒绝访问该设备。
你不想有一天因为某些安全漏洞而出现在新闻中 通过您的应用程序被利用。
未解决:精心制作的麦克风使用说明并没有完全解决安全问题,但以防万一您的应用确实使用麦克风并且第 3 方框架(认为它)也需要它。 您必须起草一份概述风险的冗长描述。
在这里,信用披露可以派上用场,让用户了解您所依赖的第 3 方代码。归功于到期的地方:^)
如果你像我一样懒惰,从不通读 ios 安全白皮书 这是一个简短的 https://developer.apple.com/videos/play/wwdc2016/705/
如果您不想完整观看视频:在 19:00 标记周围,演讲者明确告诉您,您不能偷懒这些描述(您对第 3 方负责 代码可能会滥用用户授予您的应用程序的权限。 必须喜欢二进制框架 ;^)
对于懒人:
如果您想为大多数媒体访问(设备上的照片、相机、视频录制、位置)快速添加使用说明:
右键单击您的 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 photo library access for uploading images</string>
当然,这些描述由您决定。我试图让它们尽可能通用。
希望这可以节省一些人的时间!
Instabug 使用 NSMicrophoneUsageDescription
允许您的用户录制有关错误或给您的反馈的语音留言。
iOS 应用要求用户在访问麦克风之前授予权限。试图在未经用户许可的情况下访问它会导致应用程序崩溃。
要请求用户权限,我们只需在 info.plist 文件中添加 NSMicrophoneUsageDescription 键并提供一个值对于这把钥匙。值可以是任何字符串,说明应用程序需要访问麦克风。
只需在您的代码库中的某处设置 AVAudioSession.sharedInstance().requestRecordPermission()
就足以在 iTunes Connect 中触发此错误。甚至不需要主动调用该代码!
我想这需要另一个答案来赞美我的另一个长篇大论的答案(因为人们通常懒得去阅读,到目前为止开发人员大多是人)
Apple 已针对请求访问麦克风的仅第三方二进制框架的安全漏洞采取行动,并在 ios15 中添加了对(除其他外)麦克风使用情况的审计跟踪。 App Privacy Report 它在设置中调用。因此,审计该踪迹的部分责任转移到了嵌入了第 3 方垃圾软件的应用程序的用户身上。阿们。