Quase todos os aplicativos precisam exibir uma lista de informações e, quando se trata de recarregar dados, os usuários esperam que o recurso "pull to refresh" esteja disponível. Vamos explorar como fazer isso com Gateway de sincronização e Couchbase Lite para iOS.
Roteamento de dados com "canais"
O Sync Gateway usa canais para facilitar o compartilhamento de um banco de dados entre um grande número de usuários e controlar o acesso ao banco de dados.
Uma replicação do Sync Gateway especifica um conjunto de canais a serem replicados. Os documentos que não pertencem a nenhum dos canais especificados são ignorados.
Usaremos a seguinte configuração para o Sync Gateway:
Na linha 8, ativamos a conta de convidado e damos a ela acesso ao receitas_publicas canal. Da linha 13 à linha 17 é onde definimos a função de sincronização: todos os documentos do tipo receita são encaminhados para o canal receitas_publicas canal. Neste exemplo, usaremos apenas um tipo de documento. Mas você pode estar trabalhando com muitos outros tipos em seu aplicativo.
Faça o download do Sync Gateway em aqui e iniciá-lo:
$ ~/Downloads/sync_gateway/bin/sync_gateway config.js
Inserção de documentos
Agora que temos o Sync Gateway em execução, podemos salvar documentos usando a API REST. Para criar um novo documento, devemos enviar uma solicitação POST para http://localhost:4984/cookbook/:
curl -X POST -H 'Content-Type: application/json' -d '{"type": "recipe", "title": "Lemon Chicken"}' http://localhost:4984/cookbook/
Para ter certeza de que teremos novos documentos a serem obtidos a cada atualização, use este script bash para salvar um novo documento com um intervalo de 2 segundos.
Puxe para atualizar
No lado do iOS, tudo o que precisamos fazer é iniciar uma replicação pull no receitas_publicas quando um gesto de puxar para atualizar é detectado. Você pode se inscrever para receber notificações sobre o objeto de replicação e recarregar a exibição de tabela adequadamente quando a replicação terminar de ser executada.
Faça o download do código-fonte do PullToRefresh+CouchbaseLite exemplo em github.