Como compartilhar dados personalizados entre aplicativos do iPhone?

Se eu fizer dois aplicativos para iPhone, como posso / devo compartilhar dados personalizados (não contatos e coisas assim) entre eles?

Obrigado!

Existem duas maneiras diferentes de fazer isso.

1) Os dados que você precisa compartilhar não são persistentes. Em outras palavras, você precisa lançar um aplicativo com um dado com o qual ele pode fazer alguma coisa. Nesse caso, você registraria um esquema de URL especial por aplicativo.

Você pode encontrar mais informações sobre esquemas de URL por meio de Craig Hockenberry em sua publicação [redigida] no blog .

2) Os dados que você precisa compartilhar são persistentes. Em outras palavras, você precisa de algo como um arquivo de dados que os dois aplicativos possam ler e escrever também. Tanto quanto eu sei, não há uma maneira segura de fazer isso além de armazenar seus dados em um servidor remoto. Se você precisar dos dados acessíveis sem uma conexão de dados, precisará descobrir uma maneira de sincronizar dados entre os aplicativos individuais e o servidor remoto.

Além do que já foi mencionado, a documentação do iPhone sobre assinatura de código parece implicar que os aplicativos assinados com a mesma identidade podem acessar os mesmos itens de chaveiro. Se você precisar armazenar quantidades relativamente pequenas de dados (senhas, etc), isso pode ser uma técnica útil.

Os aplicativos podem compartilhar um diretório de contêineres no iCloud.

Do documento da Apple sobre como configurar seus direitos do iCloud :

O campo Contêineres do iCloud identifica a lista de diretórios de contêiner que seu aplicativo pode acessar no armazenamento do iCloud do usuário. (Esse campo corresponde ao direito com.apple.developer.ubiquity-container-identifiers.) As strings adicionadas a essa lista devem corresponder aos identificadores de bundle para aplicativos criados por sua equipe. O Xcode usa o identificador de pacote do aplicativo atual para especificar a primeira cadeia de caracteres; você pode alterar isso para um identificador de pacote diferente se desejar que vários aplicativos compartilhem um diretório principal de contêineres. Você também pode adicionar outros identificadores de pacote aos outros aplicativos de sua equipe.

O podcast de pomar móvel mais recente de Dan Grisby supõe que você também pode usar pranchetas nomeadas personalizadas para compartilhar informações entre aplicativos. Eu percebo que este é um post mais antigo, mas eu pensei que iria apontar isso porque é alto nos resultados do Google. 🙂

(A documentação também sugere que NSUserDefaults podem ser úteis aqui, mas eu li em outro lugar que esse não é o caso.)

Um hack que eu posso pensar é escrever e ler a partir do Catálogo de Endereços , com a API, armazenando dados nos campos disponíveis (talvez a conversão + NSData para a imagem do usuário). Edit: Eu tenho sucesso implementado a conversão NSData e armazenamento de objects dentro da imagem de exibição de um contato, tornando-os não editáveis ​​a partir do aplicativo de contatos.