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

时间:2016-07-21 07:55:54

标签: ios plist ios10 user-permissions

iOS 10,现在需要用户权限才能访问媒体库,照片,相机和其他硬件。解决方法是将他们的密钥添加到info.plist中,并为用户说明我们如何使用他们的数据,

我只能找到几把钥匙

NSPhotoLibraryUsageDescription
NSMicrophoneUsageDescription
NSCameraUsageDescription

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

3 个答案:

答案 0 :(得分:121)

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

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

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

iOS已经需要权限才能访问麦克风,相机和媒体库早期版本(iOS6,iOS7),但是如果您不知道iOS10应用崩溃不提供您要求许可的说明(不能为空)。

带示例说明的隐私密钥: cheatsheet

Source

您也可以将Info.plist打开为源代码: source code

Source

并按照以下方式添加:

<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

更新2019:

在过去几个月中,我的两个应用在评论过程中被拒绝,因为相机使用情况说明并未说明我对拍摄照片的操作。

我必须将说明从${PRODUCT_NAME} need access to the camera to take a photo更改为${PRODUCT_NAME} need access to the camera to update your avatar,即使应用程序上下文很明显(用户点击了头像)。

Apple似乎现在更加关注隐私使用说明,我们应该详细解释为什么要求许可。

答案 1 :(得分:60)

请查看以下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>

答案 2 :(得分:20)

您必须在适用于iOS 10的Info.plist中添加此权限。

照片:

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