Compartir datos de archivo entre aplicaciones en Swift / iOS [duplicado]

Esta pregunta ya tiene una respuesta aquí:

Compartir datos entre aplicaciones en IOS 1 respuesta

He estado investigando sobre cómo compartir datos entre aplicaciones de forma segura. Me gustaría obtener información sobre la forma correcta de manejar esto antes de profundizar en la implementación utilizando el método incorrecto. El hecho de que puedas hacer algo no significa necesariamente que debas hacerlo.

Caso del usuario: Estoy trabajando en un conjunto de aplicaciones de aprendizaje de idiomas que tienen una base de archivos de audio compartida de varios cientos de archivos de audio y archivos json que contienen datos importantes correspondientes a un idioma. Prefiero permitir que el usuario no tenga que volver a descargar el paquete de idiomas cuando usa otra aplicación en nuestro paquete.

1. Extensiones de aplicación: proveedor de documentos sin variante de interfaz de usuario

De acuerdo con ladocumentació:

La extensión del proveedor de archivos otorga acceso a archivos fuera del entorno limitado de la aplicación host con las acciones de abrir y mover. Esta extensión (a veces abreviada aquí para el proveedor de archivos) también permite que la aplicación host descargue archivos sin presentar un controlador de vista de selector de documentos. Esta función permite que la aplicación host acceda a documentos abiertos previamente utilizando marcadores de URL seguros, incluso si esos archivos ya no están almacenados en el dispositivo.

En la superficie, esto parece una solución realmente sólida. Mi principal preocupación proviene de las últimas dos líneas donde dice que la aplicación puede descargar los archivos que ya no están almacenados en el dispositivo. Quiero que los archivos se almacenen localmente en el dispositivo para evitar descargas constantes. Si el Proveedor de documentos almacena los archivos localmente y permite que las diversas aplicaciones del grupo accedan a los archivos, entonces creo que esto podría funcionar.

2. Acceso a llavero compartido

Le permite almacenar datos de forma segura en un llavero compartido al que pueden acceder otras aplicaciones que forman parte de un conjunto de aplicaciones. Todas las aplicaciones que comparten acceso de llavero deben usar el mismo prefijo de ID de aplicación. Para ver un ejemplo de acceso de llavero compartido en acción.

He examinado un poco la documentación de este, y creo que esta podría ser la mejor opción. Mi principal preocupación con esta solución es si existe un límite de tamaño para los datos cargados y si se permiten los tipos de archivos mp3 / ogg / json. La mayoría de los ejemplos / usos que he encontrado con esta solución apuntan a compartir cadenas y datos pequeños, no estoy seguro de si manejará datos grandes como json o archivos de audio.

También encontréeste repositorio que aparentemente facilita el manejo del llavero:

3. Pasteboards personalizados

El tablero personalizado es el mejor con el fin de compartir de forma semiprivada datos personalizados entre dos aplicaciones. Los paneles personalizados se identifican con nombres únicos. Pueden persistir los datos más allá de la aplicación que los crea, lo que permite que un cartón mantenga los datos después de que la aplicación finalice o incluso después de reiniciar el dispositivo.

Al escribir o leer datos hacia y desde un tablero, debe especificar un tipo de tablero. Los tipos de cartón suelen utilizar un identificador de tipo uniforme (UTI) para identificar el tipo de datos que entran y se recuperan del cartón. Consulte la documentación de referencia de clase UIPasteboard de Apple para obtener información adicional.

ocumentación @Above extraída deesta publicació

Mi principal preocupación con esta solución es que quizás sea un poco hack. Lógicamente, un cartón parece algo que contiene datos temporalmente y permite compartir entre aplicaciones, mientras que la solución que busco debe ser más permanente.

Agradecería cualquier información sobre las mejores prácticas para compartir este tipo de archivos entre aplicaciones. Supongo que hay muchas otras soluciones que he omitido aquí, así que si hay una mejor alternativa, me encantaría obtener información. Si sucede que una de las soluciones enumeradas que he colocado aquí es una buena manera de resolver este problema, me encantaría tener más información sobre su experiencia al trabajar con ellos y si mis inquietudes con ellos son válidas, o no hay nada de qué preocuparse. .

Thx de antemano. Como siempre, las respuestas bien escritas obtienen votos positivos;)

Respuestas a la pregunta(1)

Su respuesta a la pregunta