La aplicación se rechazó debido a las descripciones de uso faltantes (Xcode8)

Así que hoy recibí este correo diciendo que iTunes Connect rechazó la versión más reciente de mi aplicación debido a algunas descripciones de uso faltantes. Para ser exacto:

Esta aplicación intenta acceder a datos confidenciales sin una descripción de uso. El Info.plist de la aplicación debe contener una key NSContactsUsageDescription con un valor de cadena que explica al usuario cómo la aplicación utiliza estos datos.

Esta aplicación intenta acceder a datos confidenciales sin una descripción de uso. El Info.plist de la aplicación debe contener una key NSCalendarsUsageDescription con un valor de cadena que explica al usuario cómo la aplicación usa estos datos.

Esta aplicación intenta acceder a datos confidenciales sin una descripción de uso. El Info.plist de la aplicación debe contener una key NSPhotoLibraryUsageDescription con un valor de cadena que explica al usuario cómo la aplicación utiliza estos datos.

Esta aplicación intenta acceder a datos confidenciales sin una descripción de uso. El Info.plist de la aplicación debe contener una key NSBluetoothPeripheralUsageDescription con un valor de cadena que explica al usuario cómo la aplicación utiliza estos datos.

Esta aplicación intenta acceder a datos confidenciales sin una descripción de uso. El Info.plist de la aplicación debe contener una key NSMicrophoneUsageDescription con un valor de cadena que explica al usuario cómo la aplicación usa estos datos.

Esta aplicación intenta acceder a datos confidenciales sin una descripción de uso. El Info.plist de la aplicación debe contener una key NSMotionUsageDescription con un valor de cadena que explica al usuario cómo la aplicación usa estos datos.

Una vez que se corrijan estos problemas, puede volver a enviar el binary corregido.

Me di count de que estos se han convertido en obligatorios con iOS 10, pero el único problema es que mi aplicación no solicita permiso para acceder a ninguno de estos … ¿Pensé que la descripción solo era obligatoria si realmente solicitaba un permiso?

¿Es porque una de mis dependencies (Cocoapods) podría contener algún código para solicitar estos permissions? ¿O son obligatorias estas descripciones incluso si nunca solicito ver el calendar, los contactos, etc. de los usuarios?

Las descripciones son obligatorias para cualquier contenido que usted o cualquier marco que enlace contra el bash de acceso. Los errores se generan en un bash de acceder al contenido si no se proporcionó una descripción de uso, por lo tanto, si obtiene esos errores, su aplicación debe solicitarlos. Debería descubrir por qué su aplicación o sus frameworks requieren estos y agregar descripciones de uso adecuadas a la información de su aplicación.

O más idealmente, si no necesita acceso, vea si hay una manera de no solicitarlo (o use frameworks que lo hagan innecesariamente).

iOS 10 debe agregar permiso en info.plist solo revisa este BLOG: – settings-in-ios-10 tienes toda la idea.

Agregue permiso en la base de files info.plist en su logging de errores .

NSCameraUsageDescription

 <key>NSCameraUsageDescription</key> <string>$(PRODUCT_NAME) camera use.</string> 

NSContactsUsageDescription

 <key>NSContactsUsageDescription</key> <string>$(PRODUCT_NAME) contacts use.</string> 

NSPhotoLibraryUsageDescription

 <key>NSPhotoLibraryUsageDescription</key> <string>$(PRODUCT_NAME) photos and video use.</string> 

NSBluetoothPeripheralUsageDescription

 <key>NSBluetoothPeripheralUsageDescription</key> <string>$(PRODUCT_NAME) bluetooth use.</string> 

NSMicrophoneUsageDescription

 <key>NSMicrophoneUsageDescription</key> <string>$(PRODUCT_NAME) microphone use.</string> 

NSMotionUsageDescription

 <key>NSMotionUsageDescription</key> <string>$(PRODUCT_NAME) motion use.</string> 

NSLocationAlwaysUsageDescription

 <key>NSLocationAlwaysUsageDescription</key> <string>$(PRODUCT_NAME) location use.</string> 

NSLocationUsageDescription

 <key>NSLocationUsageDescription</key> <string>$(PRODUCT_NAME) location use.</string> 

NSLocationWhenInUseUsageDescription

 <key>NSLocationWhenInUseUsageDescription</key> <string>$(PRODUCT_NAME) location use.</string> 

NSRemindersUsageDescription

 <key>NSRemindersUsageDescription</key> <string>$(PRODUCT_NAME) reminders use.</string> 

NSSiriUsageDescription

 <key>NSSiriUsageDescription</key> <string>$(PRODUCT_NAME) siri use.</string> 

NSVideoSubscriberAccountUsageDescription

 <key>NSVideoSubscriberAccountUsageDescription</key> <string>$(PRODUCT_NAME) video use.</string> 

NSSpeechRecognitionUsageDescription

 <key>NSSpeechRecognitionUsageDescription</key> <string>$(PRODUCT_NAME) speech recognition use.</string> 

NSCalendarsUsageDescription

 <key>NSCalendarsUsageDescription</key> <string>$(PRODUCT_NAME) user your calendar.</string> 

introduzca la descripción de la imagen aquí

Puede agregar en su info.plist como:

 <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> 

etc

Hope ayudará a alguien …

Tuve el mismo problema, y ​​parece que si cualquier marco al que se vincula tenga un código que solicite este permiso (incluso si su aplicación nunca los solicita), las descripciones de uso son necesarias. Pero según mi testing, si no los solicita, no aparecerán en la list de permissions de su aplicación.