¿Cómo compartir datos personalizados entre aplicaciones de iPhone?

Si hago dos aplicaciones para iPhone, ¿cómo puedo / debo compartir datos personalizados (no contactos y cosas así) entre ellos?

¡Gracias!

Hay dos formas diferentes de hacerlo.

1) Los datos que necesita compartir no son persistentes. En otras palabras, debe iniciar una aplicación con un dato con el que pueda hacer algo. En este caso, registraría un esquema de URL especial por aplicación.

Puede encontrar más información sobre esquemas de URL a través de Craig Hockenberry en su publicación de blog [redactado] .

2) La información que necesita compartir es persistente. En otras palabras, necesita algo así como un archivo de datos que ambas aplicaciones también puedan leer y escribir. Por lo que sé, no hay una manera segura de hacer esto aparte de almacenar sus datos en un servidor remoto. Si necesita acceder a los datos sin una conexión de datos, tendrá que encontrar la manera de sincronizar los datos entre las aplicaciones individuales y el servidor remoto.

Además de lo que ya se ha mencionado, la documentación de iPhone sobre la firma de código parece implicar que las aplicaciones firmadas con la misma identidad pueden acceder a los mismos elementos de llavero. Si necesita almacenar cantidades relativamente pequeñas de datos (contraseñas, etc.), esta puede ser una técnica útil.

Las aplicaciones pueden compartir un directorio de contenedores en iCloud.

Del documento de Apple sobre la configuración de sus derechos de iCloud :

El campo Contenedores iCloud identifica la lista de directorios de contenedores a los que su aplicación puede acceder en el almacenamiento iCloud del usuario. (Este campo corresponde a la titularidad com.apple.developer.ubiquity-container-identifiers). Las cadenas que agregue a esta lista deben corresponder a los identificadores de paquete para las aplicaciones creadas por su equipo. Xcode usa el identificador del paquete de la aplicación actual para especificar la primera cadena; puede cambiar esto a un identificador de paquete diferente si desea que varias aplicaciones compartan un directorio principal de contenedores. También puede agregar identificadores de paquetes adicionales para las otras aplicaciones de su equipo.

El podcast de orchard móvil más reciente de Dan Grisby hipotetiza que también puede usar portapapeles con nombre personalizados para compartir información entre aplicaciones. Me doy cuenta de que esta es una publicación más antigua, pero pensé que señalaría esto porque es alta en los resultados de Google. 🙂

(La documentación también sugiere que NSUserDefaults puede ser útil aquí, pero he leído en otro lugar que ese no es el caso).

Un truco que puedo pensar es escribir y leer en la libreta de direcciones , con la API, almacenando datos en los campos disponibles (+ conversión de NS Data para la imagen del usuario). Editar: he implementado con éxito la conversión NSData y el almacenamiento de objetos dentro de la imagen de visualización de un contacto, lo que los hace no editables desde la aplicación de contactos.