Envié mi aplicación para su revisión a App Store Connect. Aunque la aplicación aún está en revisión, recibí un correo electrónico para informarme que tengo que corregir un error. Aquí está el contenido del mensaje:
Estimado desarrollador,
Identificamos uno o más problemas con una entrega reciente de su aplicación XXXXX. Su entrega fue exitosa, pero es posible que desee corregir los siguientes problemas en su próxima entrega:
"Cadena de propósito faltante en el archivo Info.plist. El código de su aplicación hace referencia a una o más API que acceden a datos confidenciales del usuario. El archivo Info.plist de la aplicación debe contener una clave NSLocationAlwaysUsageDescription con una cadena de propósito orientada al usuario que explique clara y completamente por qué su aplicación necesita a partir de la primavera de 2019, todas las aplicaciones enviadas a la tienda de aplicaciones que acceden a los datos del usuario deberán incluir una cadena de propósito. Si está utilizando bibliotecas o SDK externos, pueden hacer referencia a API que requieren una cadena de propósito. es posible que no use estas API, aún se requiere una cadena de propósito. Puede ponerse en contacto con el desarrollador de la biblioteca o SDK y solicitar que publiquen una versión de su código que no contenga las API.
Una vez que haya corregido los problemas, puede usar Xcode o Application Loader para cargar un nuevo binario en iTunes Connect.
Atentamente,
El equipo de la tienda de aplicaciones
Mi aplicación está completamente construida con Expo y no sé cómo acceder y modificar Info.plist.
¿Alguna idea?
fuente
Respuestas:
Si está utilizando Expo, puede agregar soluciones agregando infoPlist a app.json de esta manera:
Expo Docs
fuente
EDITAR abril de 2019 : ahora debe agregar estas dos teclas, ya que la primavera de 2019 ha comenzado. Tenga en cuenta que
NSLocationAlwaysUsageDescription
ahora está en desuso (desde iOS 11) y se ha reemplazado conNSLocationAlwaysAndWhenInUseUsageDescription
yNSLocationWhenInUseUsageDescription
. Si desea admitir versiones inferiores a iOS 11, deberá utilizar los tres valores.Para resumir tienes que:
NSLocationAlwaysAndWhenInUseUsageDescription
ANDNSLocationWhenInUseUsageDescription
para iOS 11 y másNSLocationAlwaysUsageDescription
si desea admitir iOS 10 y menosNSLocationUsageDescription
si desea admitir iOS 8 y menos.¡Puedes enviar tu aplicación incluso si recibiste este mensaje!Acabo de enfrentar el mismo problema ayer, incluso si la aplicación no está utilizando la funcionalidad de ubicación. Puede estar relacionado con algún marco incluido en el proyecto que tiene esta característica opcional.
Puedo confirmar que mi aplicación ha sido aprobada incluso sin el
NSLocationAlwaysUsageDescription
yNSLocationWhenInUseUsageDescription
teclainfo.plist
De hecho, como Apple declaró en el correo:
Entonces, lo único que debe hacer es agregar esta clave (en este momento es mejor, para que no lo olvide) en su proyecto para que se incluya en su próxima actualización .
Simplemente agregue dos nuevas entradas en su
info.plist
, conNSLocationAlwaysUsageDescription
yNSLocationWhenInUseUsageDescription
como claves y una breve descripción de por qué las usa como valor (incluso si realmente no las usa ...).fuente
NSLocationAlwaysUsageDescription
debería reemplazarse porNSLocationAlwaysAndWhenInUseUsageDescription
yNSLocationWhenInUseUsageDescription
, y no porNSLocationUsageDescription
(como escribí anteriormente, lo siento ...). He actualizado mi respuesta para agregar un resumen del proceso.Tengo algunas aplicaciones en la tienda e intenté distribuir una versión para el control de calidad y sucedió lo mismo en dos aplicaciones diferentes. Creo que este es un nuevo criterio para aceptar las cargas de compilaciones en Appstore connect.
La solución es simple, agregue las siguientes líneas en el archivo .plist.
<key>NSLocationAlwaysUsageDescription</key>
<string>custom message</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>custom message</string>
PD: En mi caso, no he usado ninguna función de ubicación, pero agregué estas líneas para cumplir con las pautas de conexión de Appstore. Por cierto, después de recibir ese correo electrónico, pude probar la aplicación incluso cuando dijeron que la compilación tenía algunos problemas.
Espero que esto funcione para ustedes.
fuente
<key>NSLocationUsageDescription</key>
Es un nuevo requisito de Apple, incluso si no utiliza la ubicación. Si desea agregar los permisos en Xcode, busque "Privacidad - Descripción del uso de la ubicación" y "Privacidad - Ubicación cuando esté en uso Descripción del uso" y escriba una cadena personalizada para cada uno de ellos.
fuente
Para simplificar más, puede agregar estas líneas en su info.plist. Este error se produce porque a partir de la primavera de 2019, todas las aplicaciones enviadas a la tienda de aplicaciones que acceden a los datos del usuario deberán incluir una cadena de propósito.
Agregue estas líneas siguientes en su plist
fuente
NSLocationAlwaysUsageDescription Su ubicación es necesaria para los beneficios de xyz para usted NSLocationWhenInUseUsageDescription Su ubicación es necesaria para los beneficios de xyz para usted
fuente
Recibimos el mismo correo electrónico y no estamos utilizando CoreLocation en absoluto. Después de una búsqueda rápida, encontramos que Parse SDK podría usar CoreLocation. En el correo electrónico de Apple, dicen claramente:
Eso significa que en el momento en que su código o cualquier otra biblioteca o SDK pueda usar CoreLocation, incluso si no lo usa, debe proporcionar una descripción de privacidad para "Cuando esté en uso" y "Usar siempre".
También es algo nuevo de Apple y por ahora es solo una advertencia, pero se requerirá a partir de la primavera de 2019 para nuevas presentaciones.
fuente
CLLocationManager.requestWhenInUseAuthorization()
se llame en algún lugar del código . Apple analizó el código de cada aplicación para ver si se podría invocar dicha función. Si nunca se llama, la alerta no aparecerá.Este problema se produce porque no has incluido
para tu aplicación Me enfrenté al mismo problema cuando intenté enviar mi aplicación en la AppStore. Después de que se procesó la aplicación, recibí el mismo correo. Acabo de agregar la descripción y ahora está resuelta.
Espero que esto ayude.
fuente
<key>NSLocationAlwaysUsageDescription</key> <string>Always And In Use Permission</string>
Existen los siguientes casos:
Apple declara en:
y:
NSLocationUsageDescription
parece muerto, la única referencia en el sitio ADC es: https://developer.apple.com/ibeacon/Getting-Started-with-iBeacon.pdfEntonces, para estar seguro, use los primeros 3.
fuente
Todas estas respuestas le dicen cómo cumplir con las reglas de la tienda de aplicaciones para evitar la advertencia, pero la solución verdadera sería que Expo le permita desactivar sus requisitos de SDK para los servicios de ubicación a menos que realmente los use; no estoy seguro de si esto es posible.
fuente
mismo problema el 19 de febrero, recibí un correo electrónico con un montón de permisos que no estoy usando, supongo que son de complementos. Apple dice que el 19 de marzo es un requisito, así que estoy agregando estos en info.plst y subiendo de nuevo.
Es muy tonto de hecho.
fuente
También me enfrento al mismo problema, pero después de 27 horas, recibí el correo electrónico sobre aprobado incluso no hice nada. Por lo tanto, espere aproximadamente 24 horas en lugar de volver a hacer todo este proceso.
fuente
Tuve en
<key>NSLocationWhenInUseUsageDescription </key>
lugar de<key>NSLocationWhenInUseUsageDescription</key>
asegúrese de eliminar los espacios en blanco finales
fuente
Revise el correo electrónico que recibió de ** App Store Connect **
Identificar la clave que falta
Instrucciones
Abra el archivo info.plist.
Agregue y busque la clave que falta en las opciones proporcionadas (por ejemplo, Contactos = Privacidad - Descripción de uso de contactos)
Agregar descripción de uso:
Ejemplo:
fuente
Con Xcode 11, copie la clave
NSLocationAlwaysUsageDescription
y agréguela aInfo
->Custom iOS Target Properties
-> Haga clic+
en la parte inferior izquierda de esta pestaña y, como valor, inserte algún tipo de descripción comoThis app requires location access to function properly.
.fuente
"Cadena de propósito faltante en el archivo Info.plist. El código de su aplicación hace referencia a una o más API que acceden a datos confidenciales del usuario. El archivo Info.plist de la aplicación debe contener una clave NSLocationAlwaysUsageDescription con una cadena de propósito orientada al usuario que explique clara y completamente por qué su aplicación necesita a partir de la primavera de 2019, todas las aplicaciones enviadas a la tienda de aplicaciones que acceden a los datos del usuario deberán incluir una cadena de propósito. Si está utilizando bibliotecas o SDK externos, pueden hacer referencia a API que requieren una cadena de propósito. es posible que no use estas API, aún se requiere una cadena de propósito. Puede ponerse en contacto con el desarrollador de la biblioteca o SDK y solicitar que publiquen una versión de su código que no contenga las API.
Abra info.plist como código fuente.
Agregue estas líneas siguientes en su plist
fuente
Mi aplicación también obtuvo eso, y no hago nada al respecto, pero puede funcionar bien, la próxima vez que piense que debería agregar esa clave en una lista, solo haga una descripción
fuente
Una respuesta corta al problema anterior:
NSLocationAlwaysUsageDescription
debe actualizarse con la siguiente descripción en el archivo Info.plistfuente
En nuestro caso, estábamos usando
NSLocationWhenInUseUsageDescription
en nuestra aplicación, pero noNSLocationAlwaysUsageDescription
.Leyendo los comentarios aquí (gracias, roble-mate), parece que
NSLocationAlwaysUsageDescription
está siendo utilizado por uno de los marcos de dependencia que utilizamos.Al ejecutar nuestra aplicación, no se muestra el modal de permiso NSLocationAlwaysUsageDescription real, por lo que parece manejar esto en segundo plano.
En resumen, agregar
NSLocationAlwaysUsageDescription
a Info.plist arregló el correo electrónico de advertencia y no modificó ningún comportamiento en la aplicación 👍🏻fuente