Загрузка iTunes Connect с недопустимым двоичным кодом из-за отсутствия NSCalendarsUsageDescription
Я пытаюсь загрузить обновление для существующего приложения с XCode 8. После загрузки я получил это письмо:
"Это приложение пытается получить доступ к конфиденциальным данным без использования описание. Приложение Info.plist должно содержать NSCalendarsUsageDescription key со строковым значением, объясняющим как приложение использует эти данные."
Я знаю о новой политике конфиденциальности для iOS 10, а также о том, как добавить необходимое описание. Моя проблема: я не использую Календарь в своем приложении.
Есть ли способ узнать, почему Apple думает, что я использую Календарь? Может быть, он используется AdMobSDK из Google?
Ответы
Ответ 1
Я отправил электронное письмо в Google, жалуясь на это, и, надеюсь, оно будет устранено в будущих версиях SDK AdMob. До тех пор вы можете обходным путем, добавив NSCalendarsUsageDescription в свой info.plist. Я также должен был сделать то же самое с NSBluetoothPeripheralUsageDescription.
Изменить: очень важно также добавить NSPhotoLibraryUsageDescription, а также посмотреть: https://groups.google.com/forum/#!category-topic/google-admob-ads-sdk/ios/UmeVUDrcDaw
Обновление 18 сентября 2016 года: Google выпустила версию 7.11.0, которая устраняет необходимость в любом из них.
Ответ 2
Если вы используете фреймворк EventKit, это может вызвать автоматическое отклонение, которое вы получили от Apple. Одним из решений является удаление этой структуры.
Многие рекламные SDK, такие как Tapjoy (до версии 11.8.1) и AdMob, имеют EventKit как необходимую структуру.
Если у вас есть фреймворк EventKit в приложении, потому что это необходимо для вашего рекламного SDK, я видел, что это отклонение было устранено с помощью следующей модификации файла .plist:
<key>NSCalendarsUsageDescription</key>
<string>Some ad content may access calendar</string>
Ответ 3
Стивен и ответы Захари Дрейка правы:)
На моей стороне мой проект xcode генерируется каждый раз, поэтому здесь можно установить эти значения из командной строки с помощью PlistBuddy (мне также понадобился NSCameraUsageDescription
):
/usr/libexec/PlistBuddy -c "Add :NSCameraUsageDescription string" ./Info.plist || true
/usr/libexec/PlistBuddy -c "Set :NSCameraUsageDescription 'not used'" ./Info.plist
/usr/libexec/PlistBuddy -c "Add :NSCalendarsUsageDescription string" ./Info.plist || true
/usr/libexec/PlistBuddy -c "Set :NSCalendarsUsageDescription 'Some ad content may access calendar'" ./Info.plist
/usr/libexec/PlistBuddy -c "Add :NSPhotoLibraryUsageDescription string" ./Info.plist || true
/usr/libexec/PlistBuddy -c "Set :NSPhotoLibraryUsageDescription 'Some ad content may access photo library'" ./Info.plist