Como sincronizar os dados principais do iPhone com o servidor da Web e enviar para outros dispositivos? [fechadas]

Estou trabalhando em um método para sincronizar os dados principais armazenados em um aplicativo para iPhone entre vários dispositivos, como um iPad ou um Mac. Não há muitas estruturas de sincronização (se houver alguma) para uso com o Core Data no iOS. No entanto, estive pensando sobre o seguinte conceito:

Uma alteração é feita no armazenamento de dados do núcleo local e a alteração é salva. (a) Se o dispositivo estiver online, ele tenta enviar o conjunto de alterações para o servidor, incluindo o ID do dispositivo que enviou o conjunto de alterações. (b) Se o conjunto de alterações não chegar ao servidor ou se o dispositivo não estiver online, o aplicativo adicionará o conjunto de alterações a uma fila para enviar quando ficar online.O servidor, sentado na nuvem, mescla os conjuntos de alterações específicos que recebe com seu banco de dados mestre.Depois que um conjunto de alterações (ou uma fila de conjuntos de alterações) é mesclado no servidor em nuvem, o servidor envia todos esses conjuntos de alterações para os outros dispositivos registrados no servidor usando algum tipo de sistema de pesquisa. (Pensei em usar os serviços Push da Apple, mas aparentemente de acordo com os comentários, este não é um sistema viável.)

Existe algo extravagante em que eu preciso estar pensando? Eu olhei para estruturas REST comoObjectiveResource, Recurso principaleRestfulCoreData. Claro, todos eles estão trabalhando com Ruby on Rails, ao qual não estou vinculado, mas é um ponto de partida. Os principais requisitos que tenho para minha solução são:

Quaisquer alterações devem ser enviadas em segundo plano sem pausar o thread principal.Deve usar o mínimo de largura de banda possível.

Eu pensei em vários dos desafios:

Certifique-se de que os IDs de objeto para os diferentes armazenamentos de dados em diferentes dispositivos estejam conectados ao servidor. Ou seja, terei uma tabela de IDs de objeto e IDs de dispositivo, que são vinculados por meio de uma referência ao objeto armazenado no banco de dados. Terei um registro (DatabaseId [exclusivo para esta tabela], ObjectId [exclusivo para o item no banco de dados inteiro], Datafield1, Datafield2), o campo ObjectId fará referência a outra tabela, AllObjects: (ObjectId, DeviceId, DeviceObjectId). Em seguida, quando o dispositivo envia um conjunto de alterações, ele transmite a ID do dispositivo e o objectId do objeto de dados principal no armazenamento de dados local. Em seguida, meu servidor em nuvem verificará o ID do objeto e a ID do dispositivo na tabela AllObjects e encontrará o registro a ser alterado na tabela inicial.Todas as alterações devem ter registro de data e hora, para que possam ser mescladas.O dispositivo precisará pesquisar o servidor, sem consumir muita bateria.Os dispositivos locais também precisarão atualizar qualquer coisa mantida na memória se / quando as alterações forem recebidas do servidor.

Falta mais alguma coisa aqui? Que tipos de estruturas devo examinar para tornar isso possível?

questionAnswers(9)

yourAnswerToTheQuestion