Что делает NSCalendarsUsageDescription необходимым?

когда я загружаю в 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

Edit: не дубликат из-за того, что решение не сработало, поскольку я уже прокомментировал первый ответ и тот факт, что возможный дубликат фактически не отвечает на вопрос, что (как правило) делает это описание использования обязательным.

4 ответов


вы можете попробовать использовать nm инструмент для поиска определенных символов EventKit в двоичных файлах фреймворков, что-то вроде:

nm YourFramework.framework/YourFramework | grep EK # EK is a prefix for EventKit classes

или однострочный (ищите файлы без расширения, также игнорируйте CodeResources для уменьшения нерелевантного вывода):

find YourApp/Frameworks ! -name '*CodeResources*' -type f ! -name "*.*" -exec nm -o -- {} + | grep EK

если есть такие, вы увидите что-то вроде:

0000000000003fdb t -[ClusterPrePermissions EKEquivalentEventType:]
                 U _OBJC_CLASS_$_EKEventStore

согласно документации яблок:

NSCalendarsUsageDescription (String-iOS) этот ключ позволяет описать причину, по которой ваше приложение обращается к календарям пользователя. Когда система предложит пользователю разрешить доступ, эта строка отображается как часть предупреждения.

затем он объясняет, как его реализовать:

важно: для защиты конфиденциальности пользователей приложение iOS, связанное с iOS 10.0 или после него, и которое обращается к пользователю календари, должны статически заявить о намерении сделать это. Включите ключ NSCalendarsUsageDescription в информацию вашего приложения.plist файл и предоставить строку назначения для этого ключа. Если приложение пытается получить доступ к календарям пользователя без соответствующей строки назначения, приложение завершает работу.

в основном просто вставить в

 <key>NSCalendarsUsageDescription</key>
<string>purpose for using calendar</string>

вы можете прочитать больше о ключах какао здесь


обновление информация.файл plist файл, добавив базу разрешений на ваш отказ по почте или ошибка конфиденциальность конфиденциальных данных App отклонение

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


обновление до новой версии AdMob SDK решило мою проблему.