应用程序因缺少使用说明而被拒绝(Xcode8)

Kim*_*afr 90 itunesconnect ios ios10 xcode8

所以我今天收到这封邮件说我的应用程序的最新版本被iTunes Connect拒绝了,原因是一些用法描述丢失了.确切地说:

此应用程序尝试在没有使用说明的情况下访问隐私敏感数据.应用程序的Info.plist必须包含一个NSContactsUsageDescription键,其中包含一个字符串值,向用户解释应用程序如何使用此数据.

此应用程序尝试在没有使用说明的情况下访问隐私敏感数据.应用程序的Info.plist必须包含一个NSCalendarsUsageDescription键,其中包含一个字符串值,向用户解释应用程序如何使用此数据.

此应用程序尝试在没有使用说明的情况下访问隐私敏感数据.应用程序的Info.plist必须包含一个NSPhotoLibraryUsageDescription键,其中包含一个字符串值,向用户解释应用程序如何使用此数据.

此应用程序尝试在没有使用说明的情况下访问隐私敏感数据.应用程序的Info.plist必须包含一个NSBluetoothPeripheralUsageDescription键,其中包含一个字符串值,向用户解释应用程序如何使用此数据.

此应用程序尝试在没有使用说明的情况下访问隐私敏感数据.应用程序的Info.plist必须包含一个NSMicrophoneUsageDescription键,其中包含一个字符串值,向用户解释应用程序如何使用此数据.

此应用程序尝试在没有使用说明的情况下访问隐私敏感数据.应用程序的Info.plist必须包含一个NSMotionUsageDescription键,其中包含一个字符串值,向用户解释应用程序如何使用此数据.

一旦纠正了这些问题,您就可以重新更新已更正的二进制文件.

我发现这些已经成为iOS 10的强制要求,但唯一的问题是我的应用程序没有请求访问这些中的任何一个的权限..我认为只有在您真正请求许可时才需要说明吗?

是因为我的一个依赖项(Cocoapods)可能包含一些代码来请求这些权限吗?或者即使我从未要求查看用户日历,联系人等,这些描述是否必须?

Mit*_*iya 140

iOS 10必须在info.plist中添加权限才能查看此BLOG: - settings-in-ios-10你明白了.

添加权限info.plist中你的文件基本的错误日志.

NSCameraUsageDescription

<key>NSCameraUsageDescription</key>
    <string>$(PRODUCT_NAME) camera use.</string>
Run Code Online (Sandbox Code Playgroud)

NSContactsUsageDescription

<key>NSContactsUsageDescription</key>
    <string>$(PRODUCT_NAME) contacts use.</string>
Run Code Online (Sandbox Code Playgroud)

NSPhotoLibraryUsageDescription

<key>NSPhotoLibraryUsageDescription</key>
    <string>$(PRODUCT_NAME) photos and video use.</string>
Run Code Online (Sandbox Code Playgroud)

NSBluetoothPeripheralUsageDescription

<key>NSBluetoothPeripheralUsageDescription</key>
    <string>$(PRODUCT_NAME) bluetooth use.</string>
Run Code Online (Sandbox Code Playgroud)

NSMicrophoneUsageDescription

<key>NSMicrophoneUsageDescription</key>
    <string>$(PRODUCT_NAME) microphone use.</string>
Run Code Online (Sandbox Code Playgroud)

NSMotionUsageDescription

<key>NSMotionUsageDescription</key>
    <string>$(PRODUCT_NAME) motion use.</string>
Run Code Online (Sandbox Code Playgroud)

NSLocationAlwaysUsageDescription

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

NSLocationUsageDescription

<key>NSLocationUsageDescription</key>
    <string>$(PRODUCT_NAME) location use.</string>
Run Code Online (Sandbox Code Playgroud)

NSLocationWhenInUseUsageDescription

<key>NSLocationWhenInUseUsageDescription</key>
    <string>$(PRODUCT_NAME) location use.</string>
Run Code Online (Sandbox Code Playgroud)

NSRemindersUsageDescription

<key>NSRemindersUsageDescription</key>
    <string>$(PRODUCT_NAME) reminders use.</string>
Run Code Online (Sandbox Code Playgroud)

NSSiriUsageDescription

<key>NSSiriUsageDescription</key>
    <string>$(PRODUCT_NAME) siri use.</string>
Run Code Online (Sandbox Code Playgroud)

NSVideoSubscriberAccountUsageDescription

<key>NSVideoSubscriberAccountUsageDescription</key>
    <string>$(PRODUCT_NAME) video use.</string>
Run Code Online (Sandbox Code Playgroud)

NSSpeechRecognitionUsageDescription

<key>NSSpeechRecognitionUsageDescription</key>
    <string>$(PRODUCT_NAME) speech recognition use.</string>
Run Code Online (Sandbox Code Playgroud)

NSCalendarsUsageDescription

<key>NSCalendarsUsageDescription</key>
    <string>$(PRODUCT_NAME) user your calendar.</string>
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


Mat*_*man 33

对于您或您链接的任何内容尝试访问的任何内容,这些描述都是必需的.如果未提供使用说明,则在尝试访问内容时会生成错误,因此如果您收到这些错误,您的应用必须请求它们.您应该发现为什么您的应用或其框架需要这些,并在您的应用的info.plist中添加适当的使用说明.

或者更理想的情况是,如果您不需要访问权限,请查看是否有办法不请求它(或使用不必要的框架).

  • 需要一种方法来检测哪个框架正在请求这些权限? (14认同)
  • 我不能为我的生活想象我会添加一个请求所有这些权限的库.但是当我发现它时它是如此明显:https://github.com/nickoneill/PermissionScope/ (11认同)
  • Neobie - 您是否发现如何检测请求权限的框架? (5认同)
  • 我想这更像是一个功能,然后是一个错误.. iTunes Connect会检测到您应用中的某个位置,有人可能会请求权限.在这种情况下,您必须填写所有这些的使用说明,以防您可能实际调用permissionscope中的某些代码.我也喜欢这个框架,我还没有准备好替换它.所以我填写了一些虚假文本,应用程序被批准了.我已将它提交到AppStore,所以希望它会好的:-) (3认同)

mgy*_*yky 9

您可以添加info.plist,如:

<key>NSCalendarsUsageDescription</key>
    <string>Explain the reasons for accessing...</string>
    <key>NSPhotoLibraryUsageDescription</key>
    <string>Explain the reasons for accessing...</string>
    <key>NSBluetoothPeripheralUsageDescription</key>
    <string>Explain the reasons for accessing...</string>
Run Code Online (Sandbox Code Playgroud)

等等

希望会帮助别人......


Die*_*les 6

我遇到了同样的问题,看来如果您链接的任何框架都有要求此权限的代码(即使您的应用从不请求它们),也需要使用说明.但根据我的测试,如果您不请求它们,它们将不会出现在您的应用的权限列表中.