Requisitos de la política del manifiesto de privacidad de Apple

Apple está introduciendo una política de privacidad que requiere la inclusión de un archivo de manifiesto de privacidad en aplicaciones nuevas y actualizadas creadas para iOS, iPadOS, tvOS y VisionOS distribuidas a través de la AppStore. Obviamente, esto afecta las aplicaciones de iOS/iPadOS creadas con Xojo y destinadas a ser enviadas/distribuidas a través de la AppStore.

Dicho manifiesto (PrivacyInfo.xcprivacy) debe proporcionar las entradas para cada una de las Categorías de Privacidad que cumplen con los requisitos de Apple, en función del uso (llamadas) de algunas de las API especificadas.

A día de hoy, el framework Xojo cumple con estas categorías:

  • File timestamp APIs. Utilizado por la clase FolderItem.
  • System boot time APIs. Usado de forma general y específicamente por los Threads.
  • User defaults APIs. Utilizado para obtener información general, como por ejemplo las preferencias en el uso de Mayúsculas al iniciar una frase.

Además, otras bibliotecas o complementos que puedas utilizar en el desarrollo de tus aplicación iOS pueden cumplir otros de los requisitos enumerados por Apple; por lo tanto, es importante estar seguro de las llamadas a la API que podrían estar realizando bajo el capó, porque si las Required Reasons APIs no se declaran en el manifiesto de privacidad, entonces la aplicación podría ser rechazada por el proceso de revisión de la App Store.

¿Cómo crear el archivo de privacidad PrivacyInfo.xcprivacy?

Abre Xcode 15 y selecciona File > New > File…

  1. Selecciona la categoría iOS en el panel resultante y, luego, dirígete a la sección Resources para elegir la entrada App Privacy. Confirma la selección haciendo clic en el botón Aceptar.
  2. Selecciona la carpeta de destino, como por ejemplo la misma ubicación en la que guardas los recursos utilizados por tu app iOS.
  3. Una vez se ha guardado el archivo aparecerá la ventana del Editor en Xcode, correspondiente al archivo PrivacyInfo.xcprivacy. Este archivo XML ya contendrá una clave: App Privacy Configuration
  4. Selecciona dicha entrada y haz clic en el botón “más” ubicado a su derecha.
  5. En el menú desplegable, selecciona la entrada Privacy Accessed API Types.
  6. Selecciona a continuación la entrada correspondiente a Item 0 bajo la entrada Privacy Accessed API Types, y haz clic en el botón “más”.
  7. Selecciona la entrada Accessed API Type en el popupmenu como la Clave, y File Timestamp como si valor.
  8. Selecciona de nuevo Item 0 y haz clic en el botón “más”, seleccionando ahora la entrada Privacy Accessed API Reasons.
  9. Selecciona la entrada Item 0 contenida en Privacy API Reasons y selecciona ” C617.1…” como su valor.
  10. Selecciona Privacy Accessed API Types y haz clic en el botón más para añadir una nueva entrada.
  11. Repite los pasos del 6 al 10 para añadir nuevas entradas Privacy Accessed API Type (asignando un valor diferente), y nuevos valores para la entrada jerárquica Item 0 correspondiente a Privacy Accessed API Reasons.

Al finalizar, el archivo debería contar con tres entradas de tipo Privacy Accessed API Types cuyas Claves / Valores deberían ser como las mostradas en la siguiente captura de pantalla:

Por supuesto, en el caso de que tu app también haga uso de llamadas a las API en otras categorías, con motivo del uso de Librerías o plug-ins de terceros, entonces también deberás de añadirlas al manifiesto.

Añadir el archivo PrivacyInfo.xcprivacy a tu proyecto Xojo

Con el archivo PrivacyInfo.xcprivacy creado, sólo has de arrastrarlo al Navegador de tu proyecto Xojo y, una vez que compiles la app, este se incluirá automáticamente en la carpeta raíz de la app iOS compilada.

Si lo prefieres, también puedes hacer esto mismo añadiendo un nuevo paso de compilación Copy File… a la app iOS. Sólo has de asegurarte de que el archivo PrivacyInfo.xcprivacy se aplica a la opción Release en el campo “Applies to”, y de seleccionar la opción “App Parent” en el campo “Destination”.

¡Gracias a John Balestrieri por apuntar este problema en el Foro de Xojo!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *