Recibí este correo hoy diciendo que iTunes Connect rechazó la última versión de mi aplicación debido a que faltaban algunas descripciones de uso. Para ser exacto:
Esta aplicación intenta acceder a datos sensibles a la privacidad 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 la aplicación utiliza estos datos.
Esta aplicación intenta acceder a datos sensibles a la privacidad 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 la aplicación usa estos datos.
Esta aplicación intenta acceder a datos sensibles a la privacidad 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 la aplicación utiliza estos datos.
Esta aplicación intenta acceder a datos sensibles a la privacidad 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 la aplicación utiliza estos datos.
Esta aplicación intenta acceder a datos sensibles a la privacidad 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 la aplicación utiliza estos datos.
Esta aplicación intenta acceder a datos sensibles a la privacidad 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 la aplicación usa estos datos.
Una vez que se hayan corregido estos problemas, puede volver a enviar el binario corregido.
Me di cuenta de que estos se han vuelto 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 son estas descripciones obligatorias incluso si nunca solicito ver el calendario, los contactos, etc. de los usuarios?
fuente
PodFile
y la lista de las bibliotecas que usas (si usas algunos cocoapods externos)?Respuestas:
Las descripciones son obligatorias para cualquier contenido que usted o cualquier marco que vincule contra el intento de acceso. Los errores se generan al intentar acceder al contenido si no se proporcionó una descripción de uso, por lo que si recibe esos errores, su aplicación debe estar solicitándolos. Debe descubrir por qué su aplicación o sus marcos los requieren y agregar descripciones de uso adecuadas al info.plist de su aplicación.
O más idealmente, si no necesita acceso, vea si hay una manera de no solicitarlo (o use marcos que lo necesiten innecesariamente).
fuente
iOS 10 debe agregar permiso en info.plist solo revise este BLOG: - settings-in-ios-10 ya tiene una idea.
Agregue permiso en la base del archivo info.plist en su registro de errores .
NSCameraUsageDescription
NSContactsUsageDescription
NSPhotoLibraryUsageDescription
NSBluetoothPeriféricoUsoDescripción
NSMicrophoneUsageDescription
NSMotionUsageDescription
NSLocationAlwaysUsageDescription
NSLocationUsageDescription
NSLocationWhenInUseUsageDescription
NSRemindersUsageDescription
NSSiriUsageDescription
NSVideoSubscriberAccountUsageDescription
NSSpeechRecognitionUsageDescription
NSCalendarsUsageDescription
fuente
$(PRODUCT_NAME)
. Puede ver la propiedad predeterminada comoBundle name
en el archivo plist.Puede agregar en su info.plist como:
etc.
La esperanza ayudará a alguien ...
fuente
Tuve el mismo problema, y parece que si algún marco al que se vincula tiene un código que solicita este permiso (incluso si su aplicación nunca lo 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.
fuente
Calendario: Clave: Privacidad - Calendarios Descripción del uso
Valor: $ (PRODUCT_NAME) eventos del calendario
Recordatorio: Clave: Privacidad - Recordatorios Descripción del uso
Valor: $ (PRODUCT_NAME) uso del recordatorio
Contacto : Clave: Privacidad - Contactos Descripción del uso
Valor: $ (PRODUCT_NAME) uso del contacto
Foto: Clave: Privacidad - Descripción del uso de la biblioteca de fotos
Valor: $ (PRODUCT_NAME) uso de la foto
Uso compartido de Bluetooth: Clave: Privacidad - Uso de periféricos de Bluetooth Descripción
Valor: $ (PRODUCT_NAME) Uso de periféricos de Bluetooth
Micrófono: Clave: Privacidad - Descripción del uso del micrófono
Valor: $ (PRODUCT_NAME) uso del micrófono
Cámara: Clave: Privacidad - Descripción del uso de la cámara
Valor: $ (PRODUCT_NAME) uso de la cámara
Ubicación: Clave: Privacidad - Ubicación Siempre Descripción del uso
Valor: $ (PRODUCT_NAME) uso de la ubicación
Clave: Privacidad - Ubicación cuando está en uso Uso Descripción
Valor: $ (PRODUCT_NAME) uso de ubicación
Salud: Clave: Privacidad - Uso compartido de salud Descripción
Valor: $ (PRODUCT_NAME) uso compartido de salud
Clave: Privacidad - Descripción del uso de actualizaciones de salud
Valor: $ (PRODUCT_NAME) uso de actualizaciones de salud
HomeKit: Clave: Privacidad - Descripción del uso de HomeKit
Valor: $ (PRODUCT_NAME) uso del kit para el hogar
Biblioteca de medios: Clave: Privacidad - Uso de la biblioteca de medios Descripción
Valor: $ (PRODUCT_NAME) uso de la biblioteca de medios
Movimiento: Clave: Privacidad - Uso de movimiento Descripción
Valor: $ (PRODUCT_NAME) uso de movimiento
Reconocimiento de voz: Clave: Privacidad - Uso del reconocimiento de voz Descripción
Valor: $ (PRODUCT_NAME) uso de voz
SiriKit: Clave: Privacidad - Descripción del uso de Siri
Valor: $ (PRODUCT_NAME) siri use
Proveedor de TV: Clave: Privacidad - Uso del proveedor de TV Descripción
Valor: $ (PRODUCT_NAME) tvProvider use
fuente
Para cualquiera que se pregunte por qué, de repente, su aplicación ahora tiene todas estas configuraciones de permisos en primer lugar, podría deberse a CocoaPods o Carthage: pusieron ganchos a todos estos permisos. Acabo de actualizar mi aplicación para usar cordova-plugin-firebasex, que tiene una instalación extensa de Cocoapods (y dependencias). Puede desactivar estos permisos ANTES de instalar cocoapods en su proyecto colocando un PermissionsConfiguration.xcconfig en la raíz de su proyecto; puede leer más sobre esto aquí: https://cocoapods.org/pods/Permission#installation
Todo esto me sorprendió cuando la nueva versión de mi aplicación fue rechazada y faltaban 7 claves / cadenas de permisos en el archivo Info.plist. Luego tuve que profundizar en mi proyecto para encontrar qué estaba causando esto, ya que mi aplicación no necesita ni usa ninguno de estos permisos (nunca lo hizo).
Puede existir, pero en este momento no puedo encontrar una manera de eliminar los permisos después de la integración de los pods ... tendré que investigar cómo hacer esto sin comenzar mi proyecto de nuevo.
fuente