iOS 10 - 更改相机、麦克风和照片库的权限导致应用程序崩溃

标签 ios plist ios10 user-permissions

iOS 10,现在需要用户许可才能访问媒体库、照片、相机和其他类似硬件。解决方案是将他们的 key 添加到 info.plist 中,并向用户说明我们如何使用他们的数据,

我只能找到几把 key

NSPhotoLibraryUsageDescription
NSMicrophoneUsageDescription
NSCameraUsageDescription

我想知道在 iOS 10 中是否还有更多用于其他硬件的 key 如果您没有为 info.plist 提供正确的 key 描述如果使用 XCode - 8 beta 构建,您的应用程序将崩溃

最佳答案

[已更新至 iOS 13 的隐私 key 列表 - 见下文]

您可以在 Info.plist 文件中指定所有 Cocoa Keys 的列表:

https://developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html

(Xcode:目标 -> 信息 -> 自定义 iOS 目标属性)

iOS 已经需要访问麦克风、摄像头和媒体库的权限(iOS 6、iOS 7),但是 因为 iOS 10 应用程序会崩溃 如果您不提供您的原因说明请求权限(不能为空)。

带有示例说明的私钥: cheatsheet

Source

或者,您可以将 Info.plist 作为源代码打开: source code

Source

并像这样添加私钥:

<key>NSLocationAlwaysUsageDescription</key>
<string>${PRODUCT_NAME} always location use</string>

所有隐私 key 列表:[已更新至 iOS 13]

NFCReaderUsageDescription
NSAppleMusicUsageDescription
NSBluetoothAlwaysUsageDescription
NSBluetoothPeripheralUsageDescription
NSCalendarsUsageDescription
NSCameraUsageDescription
NSContactsUsageDescription
NSFaceIDUsageDescription
NSHealthShareUsageDescription
NSHealthUpdateUsageDescription
NSHomeKitUsageDescription
NSLocationAlwaysUsageDescription
NSLocationUsageDescription
NSLocationWhenInUseUsageDescription
NSMicrophoneUsageDescription
NSMotionUsageDescription
NSPhotoLibraryAddUsageDescription
NSPhotoLibraryUsageDescription
NSRemindersUsageDescription
NSSiriUsageDescription
NSSpeechRecognitionUsageDescription
NSVideoSubscriberAccountUsageDescription

2019 年更新:

在过去的几个月里,我的两个应用在审核期间被拒绝,因为相机使用说明没有具体说明我如何处理拍摄的照片。

我不得不将描述从 ${PRODUCT_NAME} 需要访问相机来拍照 更改为 ${PRODUCT_NAME} 需要访问相机来更新你的头像 即使应用上下文很明显(用户点击了头像)。

看来苹果现在更加重视隐私使用说明了,我们应该详细说明为什么要征求权限。

关于iOS 10 - 更改相机、麦克风和照片库的权限导致应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38498275/

相关文章:

ios - 是否可以为 adhoc/ota 分发提供视网膜下载图标?

ios - Swift 2 到 3 迁移错误 (libc++abi.dylib : terminating with uncaught exception of type NSException)

ios - 运行 ios 9 通知时崩溃

ios - 如何通过 HitTest 确定 UIView 是否被遮挡或部分不在屏幕上?

ios - Swift In App 购买崩溃 "message sent to deallocated instance"

ios - 尝试在iPhone iOS 6.1.2上测试我的应用程序,但出现“没有预配置的iOS设备...”错误?

ios10 - 无法从在 iOS 10 beta 上运行的 iPad 访问应用程序容器

ios - 为什么 DISPATCH_QUEUE_CONCURRENT 创建的两个并发队列不能同时运行?

ios - NSMutableArray 显示(空)/无?

swift - 从 Info.plist 中删除没有数据的键