No puede compartir directorios de documentos entre aplicaciones. Pero hay otros canales de comunicación abiertos.
El llavero es una posibilidad, como usted mencionó.
Otro podría ser esquemas de URL personalizados. Tal vez un poco como este:
- La aplicación gratuita registra la posibilidad de abrir URL con el esquema
freeapp://
. De manera similar, la aplicación profesional registra la capacidad de abrir URL con el esquema proapp://
. Use la entrada "Tipos de URL" en la lista de información.
- Pro comprueba si app
[UIApplication canOpenURL:@"freeapp://goPro"] == YES
- Si es verdad la aplicación pro llama
[UIApplication openURL:@"freeapp://goPro"]
- Esto lanza la aplicación gratuita que debe aplicar
handleOpenURL
de UIApplication
.
- La aplicación gratuita empaqueta los datos necesarios en una URL. Puede usar parámetros similares a HTTP si lo desea. También puedes construir un diccionario y serializarlo en una cadena larga hexadecimal usando
NSCoding
.
- La aplicación gratuita pasa los datos a la aplicación Pro utilizando
[UIApplication openURL:@"proapp://YOUR_DATA_IN_WHATEVER_FORMAT"]
- La aplicación Pro recibe la dirección URL en su implementación sustituida del
handleOpenURL
de UIApplication
y realiza la migración de datos necesaria.
Obviamente, desea utilizar esquemas de URL más exclusivos que los anteriores.
Sin embargo, tenga en cuenta las implicaciones de seguridad de poder insertar este tipo de datos en su aplicación utilizando las URL. Probablemente esté bien para muchos propósitos, pero estoy seguro de que si la aplicación de Facebook proporcionara una forma de deshabilitar la configuración de su cuenta a través de una URL, a algunas personas les parecería gracioso publicar enlaces facebookapp://reset_my_account
en todas partes.
Consejo de bonificación: Los esquemas de URL también son muy útiles para cerrar la brecha entre el código nativo y las vistas web. He tenido algunas aplicaciones con una vista web incrustada que muestra una página en un servidor bajo mi control. La página web puede comunicarse con la aplicación estableciendo la ubicación del documento desde JS. La aplicación puede interceptar la solicitud en el delegado de la vista web y responder a la vista web usando stringByEvaluatingJavaScriptFromString
.