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

Sye*_*man 97 plist user-permissions ios ios10

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

我只能找到几把钥匙

NSPhotoLibraryUsageDescription
NSMicrophoneUsageDescription
NSCameraUsageDescription
Run Code Online (Sandbox Code Playgroud)

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

Kli*_*akM 130

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

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

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

iOS 早先已经需要访问麦克风,相机和媒体库的权限(iOS6,iOS7),但如果你没有提供描述为什么你要求获得权限(它不能为空),Info.plist应用程序就会崩溃.

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

资源

您也可以打开Info.plist作为源代码: 源代码

资源

并添加如下:

<key>NSLocationAlwaysUsageDescription</key>
<string>${PRODUCT_NAME} always location use</string>
Run Code Online (Sandbox Code Playgroud)

所有隐私密钥列表:

NFCReaderUsageDescription
NSAppleMusicUsageDescription
NSBluetoothAlwaysUsageDescription
NSBluetoothPeripheralUsageDescription
NSCalendarsUsageDescription
NSCameraUsageDescription
NSContactsUsageDescription
NSFaceIDUsageDescription
NSHealthShareUsageDescription
NSHealthUpdateUsageDescription
NSHomeKitUsageDescription
NSLocationAlwaysUsageDescription
NSLocationUsageDescription
NSLocationWhenInUseUsageDescription
NSMicrophoneUsageDescription
NSMotionUsageDescription
NSPhotoLibraryAddUsageDescription
NSPhotoLibraryUsageDescription
NSRemindersUsageDescription
NSSiriUsageDescription
NSSpeechRecognitionUsageDescription
NSVideoSubscriberAccountUsageDescription
Run Code Online (Sandbox Code Playgroud)

更新2019年:

在过去几个月中,我的两个应用程序在审核期间被拒绝,因为相机使用情况说明并未指定我对拍摄照片的操作.

我必须说明从改变${PRODUCT_NAME} need access to the camera to take a photo${PRODUCT_NAME} need access to the camera to update your avatar,即使应用程序上下文是显而易见的(用户点击的头像).

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

  • 在我看来,这是一个*完全胡说八道的Apple*,让一个应用程序在它缺少*权限描述时崩溃*...用户体验不佳!(匿名)在AppStore评论中抱怨流量很快......当然,Simultor表现得与众不同...... (13认同)
  • 是的,但是如果您没有提供我们要求获得许可的说明,那么更改是应用程序现在会崩溃.如果我错了,请纠正我. (2认同)

Ile*_*esh 64

请在下面找到ios 10请求许可样本的代码info.plist.
您可以修改自定义消息.

    <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>
Run Code Online (Sandbox Code Playgroud)

iOS 11及更高版本,如果要将照片/图像添加到库中,则必须添加此密钥

    <key>NSPhotoLibraryAddUsageDescription</key>
    <string>${PRODUCT_NAME} library Usage</string>
Run Code Online (Sandbox Code Playgroud)

  • 这就是我要找的答案 (2认同)

Kir*_*odi 19

您必须在Info.plist for iOS 10中添加此权限.

照片:

Key       :  Privacy - Photo Library Usage Description    
Value   :  $(PRODUCT_NAME) photo use
Run Code Online (Sandbox Code Playgroud)

麦克风:

Key        :  Privacy - Microphone Usage Description    
Value    :  $(PRODUCT_NAME) microphone use
Run Code Online (Sandbox Code Playgroud)

相机:

Key       :  Privacy - Camera Usage Description   
Value   :  $(PRODUCT_NAME) camera use
Run Code Online (Sandbox Code Playgroud)