什么使NSCalendarsUsageDescription成为必需?

Mar*_*lak 23 itunesconnect xcode8

当我上传到iTunes Connect时,我的应用程序会收到NSCalendarsUsageDescription未提供隐私的错误.我知道此信息现在是强制性的,但我不知道我的应用程序使用哪些内容以及需要此隐私使用说明的内容.

我的应用程序在做什么/使用它需要NSCalendarsUsageDescription什么?

Dear developer,

We have discovered one or more issues with your recent delivery for "MyApp". To process your delivery, the following issues must be corrected:

This app attempts to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSCalendarsUsageDescription key with a string value explaining to the user how the app uses this data.

Once these issues have been corrected, you can then redeliver the corrected binary.

Regards,

The App Store team
Run Code Online (Sandbox Code Playgroud)

编辑:不重复,因为解决方案不起作用,因为我已经对第一个答案进行了评论,并且可能的副本实际上没有回答什么(通常)需要这个用法描述的问题.

Sta*_*ich 16

您可以尝试使用nm工具在框架二进制文件中查找EventKit特定符号,例如:

nm YourFramework.framework/YourFramework | grep EK # EK is a prefix for EventKit classes
Run Code Online (Sandbox Code Playgroud)

或者单行(查找没有扩展名的文件,也忽略CodeResources以减少不相关的输出):

find YourApp/Frameworks ! -name '*CodeResources*' -type f ! -name "*.*" -exec nm -o -- {} + | grep EK
Run Code Online (Sandbox Code Playgroud)

如果有这样你会看到类似的东西:

0000000000003fdb t -[ClusterPrePermissions EKEquivalentEventType:]
                 U _OBJC_CLASS_$_EKEventStore
Run Code Online (Sandbox Code Playgroud)


Sac*_*mbh 13

通过添加拒绝邮件或错误日志的权限来更新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)

要么

解决隐私敏感数据应用程序拒绝问题

https://developer.apple.com/library/content/qa/qa1937/_index.html


Dus*_*ler 9

根据苹果文件:

NSCalendarsUsageDescription(String - iOS)此键可让您描述应用访问用户日历的原因.当系统提示用户允许访问时,此字符串将显示为警报的一部分.

然后继续解释如何实现它:

重要提示:为了保护用户隐私,iOS 10.0上或之后链接的iOS应用程序访问用户的日历,必须静态声明这样做的意图.在应用程序的Info.plist文件中包含NSCalendarsUsageDescription键,并为此键提供目的字符串.如果您的应用尝试访问用户的日历而没有相应的用途字符串,则您的应用会退出.

基本上只需将其插入到您的info.plist文件中

 <key>NSCalendarsUsageDescription</key>
<string>purpose for using calendar</string>
Run Code Online (Sandbox Code Playgroud)

你可以在这里阅读更多关于可可钥匙的 信息

  • 当我问这个问题时,这很清楚 - 毕竟它会弹出谷歌的第一个搜索结果.我对实际需要使用描述的特定框架或功能更感兴趣,比如EventKit或NSCalendar. (2认同)

tha*_*rem 5

更新到新版本的 AdMob SDK 解决了我的问题。