iOS 10,现在需要用户权限才能访问媒体库,照片,相机和其他硬件。解决方法是将他们的密钥添加到info.plist
中,并为用户说明我们如何使用他们的数据,
我只能找到几把钥匙
NSPhotoLibraryUsageDescription
NSMicrophoneUsageDescription
NSCameraUsageDescription
我想知道是否还有更多的密钥用于iOS 10
中的其他硬件如果你没有提供正确的密钥描述info.plist
你的应用程序将崩溃如果使用XCode - 8 beta构建。
您可以在Cocoa Keys
文件中指定所有Info.plist
的列表:
(Xcode目标 - >信息 - >自定义iOS目标属性)
iOS早先已经需要访问麦克风,相机和媒体库的权限(iOS6,iOS7),但是如果你没有提供描述为什么要求获得权限(它不能为空),iOS10
应用程序将崩溃。
并添加如下:
<key>NSLocationAlwaysUsageDescription</key>
<string>${PRODUCT_NAME} always location use</string>
所有隐私密钥列表:
NSCameraUsageDescription
NSBluetoothPeripheralUsageDescription
NSCalendarsUsageDescription
NSContactsUsageDescription
NSHealthShareUsageDescription
NSHealthUpdateUsageDescription
NSHomeKitUsageDescription
NSLocationAlwaysUsageDescription
NSLocationUsageDescription
NSLocationWhenInUseUsageDescription
NSAppleMusicUsageDescription
NSMicrophoneUsageDescription
NSMotionUsageDescription
kTCCServiceMediaLibrary
NSPhotoLibraryUsageDescription
NSRemindersUsageDescription
NSSiriUsageDescription
NSSpeechRecognitionUsageDescription
NSVideoSubscriberAccountUsageDescription
在过去几个月中,我的两个应用程序在审核期间被拒绝,因为相机使用情况说明并未指定我对拍摄照片的操作。
我不得不将描述从${PRODUCT_NAME} need access to the camera to take a photo
更改为${PRODUCT_NAME} need access to the camera to update your avatar
,即使应用程序上下文很明显(用户点击了头像)。
Apple似乎现在更加关注隐私使用说明,我们应该详细解释为什么我们要求许可。
请查看info.plist
的ios 10请求许可样本的以下代码。
您可以修改自定义消息。
<key>NSCameraUsageDescription</key>
<string>${PRODUCT_NAME} Camera Usage</string>
<key>NSBluetoothPeripheralUsageDescription</key>
<string>${PRODUCT_NAME} BluetoothPeripheral</string>
<key>NSCalendarsUsageDescription</key>
<string>${PRODUCT_NAME} Calendar Usage</string>
<key>NSContactsUsageDescription</key>
<string>${PRODUCT_NAME} Contact fetch</string>
<key>NSHealthShareUsageDescription</key>
<string>${PRODUCT_NAME} Health Description</string>
<key>NSHealthUpdateUsageDescription</key>
<string>${PRODUCT_NAME} Health Updates</string>
<key>NSHomeKitUsageDescription</key>
<string>${PRODUCT_NAME} HomeKit Usage</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>${PRODUCT_NAME} Use location always</string>
<key>NSLocationUsageDescription</key>
<string>${PRODUCT_NAME} Location Updates</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>${PRODUCT_NAME} WhenInUse Location</string>
<key>NSAppleMusicUsageDescription</key>
<string>${PRODUCT_NAME} Music Usage</string>
<key>NSMicrophoneUsageDescription</key>
<string>${PRODUCT_NAME} Microphone Usage</string>
<key>NSMotionUsageDescription</key>
<string>${PRODUCT_NAME} Motion Usage</string>
<key>kTCCServiceMediaLibrary</key>
<string>${PRODUCT_NAME} MediaLibrary Usage</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>${PRODUCT_NAME} PhotoLibrary Usage</string>
<key>NSRemindersUsageDescription</key>
<string>${PRODUCT_NAME} Reminder Usage</string>
<key>NSSiriUsageDescription</key>
<string>${PRODUCT_NAME} Siri Usage</string>
<key>NSSpeechRecognitionUsageDescription</key>
<string>${PRODUCT_NAME} Speech Recognition Usage</string>
<key>NSVideoSubscriberAccountUsageDescription</key>
<string>${PRODUCT_NAME} Video Subscribe Usage</string>
iOS 11及更高版本,如果要将照片/图像添加到库中,则必须添加此密钥
<key>NSPhotoLibraryAddUsageDescription</key>
<string>${PRODUCT_NAME} library Usage</string>
您必须在Info.plist for iOS 10中添加此权限。
照片:
Key : Privacy - Photo Library Usage Description
Value : $(PRODUCT_NAME) photo use
麦克风:
Key : Privacy - Microphone Usage Description
Value : $(PRODUCT_NAME) microphone use
相机:
Key : Privacy - Camera Usage Description
Value : $(PRODUCT_NAME) camera use