Aplicación rechazada por falta de descripciones de uso (Xcode8)

Así que recibí este correo hoy diciendo que la última comstackción de mi aplicación fue rechazada por iTunes Connect 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 clave NSContactsUsageDescription con un valor de cadena que explique al usuario cómo utiliza la aplicación esta información.

Esta aplicación intenta acceder a datos confidenciales sin una descripción de uso. El Info.plist de la aplicación debe contener una clave NSCalendarsUsageDescription con un valor de cadena que explique al usuario cómo utiliza la aplicación esta información.

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

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

Esta aplicación intenta acceder a datos confidenciales sin una descripción de uso. El Info.plist de la aplicación debe contener una clave NSMicrophoneUsageDescription con un valor de cadena que explique al usuario cómo utiliza la aplicación 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 clave NSMotionUsageDescription con un valor de cadena que explique al usuario cómo utiliza la aplicación estos datos.

Una vez que se hayan corregido estos problemas, puede volver a enviar el binario corregido.

Descubrí 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 solicitabas un permiso?

¿Es porque una de mis dependencias (Cocoapods) podría contener algún código para solicitar estos permisos? ¿O estas descripciones son obligatorias aunque nunca solicite ver el calendario, los contactos, etc. de los usuarios?

Las descripciones son obligatorias para cualquier contenido al que intente acceder usted o cualquier marco al que enlace. Los errores se generan al intentar acceder al contenido si no se proporcionó una descripción de uso, por lo que si está obteniendo esos errores, su aplicación debe solicitarlos. Debes descubrir por qué tu aplicación o sus marcos requieren esto y agregar descripciones de uso apropiadas al info.plist de tu aplicación.

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

iOS 10 debe agregar permiso en info.plist simplemente revise este BLOG: – settings-in-ios-10 tiene toda la idea.

Agregue permisos en la base de archivos info.plist en su registro de errores .

NSCameraUsageDescription

 NSCameraUsageDescription $(PRODUCT_NAME) camera use. 

NSContactsUsageDescription

 NSContactsUsageDescription $(PRODUCT_NAME) contacts use. 

NSPhotoLibraryUsageDescription

 NSPhotoLibraryUsageDescription $(PRODUCT_NAME) photos and video use. 

NSBluetoothPeripheralUsageDescription

 NSBluetoothPeripheralUsageDescription $(PRODUCT_NAME) bluetooth use. 

NSMicrophoneUsageDescription

 NSMicrophoneUsageDescription $(PRODUCT_NAME) microphone use. 

NSMotionUsageDescription

 NSMotionUsageDescription $(PRODUCT_NAME) motion use. 

NSLocationAlwaysUsageDescription

 NSLocationAlwaysUsageDescription $(PRODUCT_NAME) location use. 

NSLocationUsageDescription

 NSLocationUsageDescription $(PRODUCT_NAME) location use. 

NSLocationWhenInUseUsageDescription

 NSLocationWhenInUseUsageDescription $(PRODUCT_NAME) location use. 

NSRemindersUsageDescription

 NSRemindersUsageDescription $(PRODUCT_NAME) reminders use. 

NSSiriUsageDescription

 NSSiriUsageDescription $(PRODUCT_NAME) siri use. 

NSVideoSubscriberAccountUsageDescription

 NSVideoSubscriberAccountUsageDescription $(PRODUCT_NAME) video use. 

NSSpeechRecognitionUsageDescription

 NSSpeechRecognitionUsageDescription $(PRODUCT_NAME) speech recognition use. 

NSCalendarsUsageDescription

 NSCalendarsUsageDescription $(PRODUCT_NAME) user your calendar. 

enter image description here

Puede agregar en su info.plist como:

 NSCalendarsUsageDescription Explain the reasons for accessing... NSPhotoLibraryUsageDescription Explain the reasons for accessing... NSBluetoothPeripheralUsageDescription Explain the reasons for accessing... 

etc.

Hope ayudará a alguien …

Tuve el mismo problema, y ​​parece que si cualquier marco con el que se vincule tiene un código que solicita este permiso (incluso si su aplicación nunca los solicita), las descripciones de uso son necesarias. Pero según mi prueba, si no los solicita, no aparecerán en la lista de permisos de su aplicación.

Calendario: Clave: Privacidad – Descripción de uso de calendarios
Valor: eventos de calendario de $ (PRODUCT_NAME)

Recordatorio: Clave: Privacidad – Recordatorios Uso Descripción
Valor: uso del recordatorio $ (PRODUCT_NAME)

Contacto : Clave: Privacidad – Contactos Descripción del uso
Valor: uso de contacto de $ (PRODUCT_NAME)

Foto: Clave: Privacidad – Descripción de uso de la biblioteca de fotos
Valor: uso de foto $ (PRODUCT_NAME)

Uso compartido de Bluetooth: Clave: Privacidad – Uso de periféricos Bluetooth Descripción
Valor: $ (PRODUCT_NAME) Bluetooth Uso periférico

Micrófono: Clave: Privacidad – Descripción del uso del micrófono
Valor: uso del micrófono $ (PRODUCT_NAME)

Cámara: Clave: Privacidad – Descripción del uso de la cámara
Valor: uso de la cámara $ (PRODUCT_NAME)

Ubicación: Clave: Privacidad – Ubicación Uso siempre Descripción
Valor: uso de la ubicación de $ (PRODUCT_NAME)

Clave: Privacidad – Ubicación cuando está en uso Descripción del uso
Valor: uso de la ubicación de $ (PRODUCT_NAME)

Heath: Clave: Privacidad – Uso compartido de la salud Descripción
Valor: uso compartido de $ (PRODUCT_NAME) heath

Clave: Privacidad – Descripción de uso de actualización de salud
Valor: uso de actualización de $ (PRODUCT_NAME)

HomeKit: Key: Privacidad – HomeKit Descripción del uso
Valor: uso del kit doméstico $ (PRODUCT_NAME)

Biblioteca de medios: Clave: Privacidad – Descripción de uso de la biblioteca de medios
Valor: uso de la biblioteca de medios $ (PRODUCT_NAME)

Movimiento: Clave: Privacidad – Descripción de uso de movimiento
Valor: uso de movimiento de $ (PRODUCT_NAME)

Reconocimiento de voz: Clave: Privacidad – Reconocimiento de voz Uso Descripción
Valor: uso del habla $ (PRODUCT_NAME)

SiriKit: Clave: Privacidad – Siri Uso Descripción
Valor: $ (PRODUCT_NAME) siri use

Proveedor de TV: Clave: Privacidad – Descripción del uso del proveedor de TV
Valor: $ (PRODUCT_NAME) uso de TVProvider