Esta postagem discute como usar o Couchbase Lite como um banco de dados incorporado para compartilhar dados entre seu aplicativo iOS e a extensão de aplicativo iOS. Extensões de aplicativos implementam uma tarefa ou funcionalidade específica que pode ser exposta a outros aplicativos no dispositivo ou ao sistema operacional. Nesta postagem, veremos um exemplo de como uma extensão Today pode ser usada com um banco de dados incorporado do Couchbase Lite no modo autônomo.
OBSERVAÇÃO: discutiremos o Couchbase Mobile v1.4, que é a versão de produção atual. Mas tudo o que discutimos aqui se aplica à versão mais recente Versão 2.0 do Developer Preview do Couchbase Mobile
Histórico
A Apple oferece suporte a vários tipos de Extensões de aplicativos Cada uma delas habilita a funcionalidade que é relevante para um subsistema específico no dispositivo. Neste post, discutiremos como o Couchbase Lite pode ser usado com uma extensão Today. Esse tipo de extensão, também conhecido como "Widget", aparece na visualização Today da Central de Notificações e permite que os usuários obtenham atualizações rápidas. Você pode saber mais sobre como as extensões de aplicativos funcionam na seção Documentos para desenvolvedores da Apple.
Presumo que você esteja familiarizado com o desenvolvimento de aplicativos iOS em Swift e tenha uma compreensão básica da integração do Couchbase Lite em seu aplicativo iOS. Este guia de introdução é um ótimo lugar para começar. Se quiser ler mais sobre o Couchbase, consulte os recursos no final deste post.
Couchbase Lite
O Couchbase Lite é um banco de dados incorporado que é executado em dispositivos. Ele pode ser usado em vários modos de implantação. Ele pode ser usado como um banco de dados incorporado autônomo ou pode ser usado em conjunto com um Sync Gateway remoto que permita a sincronização de dados entre dispositivos. Nesta postagem, usaremos o Couchbase Lite no modo de implantação autônomo. Nesta postagem, não abordaremos os detalhes da integração com o Couchbase Lite. O Primeiros passos com o Couchbase Lite é um bom lugar para começar a fazer isso.
Aplicativo de demonstração
- Faça o download do projeto de demonstração do Xcode no site Repositório do Github . Usaremos esse aplicativo como exemplo no restante do blog.
1 |
git clone git@github.com:couchbaselabs/couchbase-móvel-ios-aplicativo-extensão.git |
- Siga as instruções na seção LEIAME para instalar e executar o aplicativo
Esse é um aplicativo simples de lista de tarefas que permite aos usuários adicionar, editar e excluir tarefas. O usuário pode marcar as tarefas como concluídas. O aplicativo inclui uma extensão Today que mostra as duas principais tarefas diretamente na sua central de notificações, sem a necessidade de abrir o aplicativo. O usuário pode marcar as tarefas como concluídas diretamente na central de notificações.
Todas as tarefas são armazenadas em um banco de dados local do Couchbase Lite. Isso implica que tanto o aplicativo Container quanto a extensão precisarão acessar o banco de dados.
Arquitetura de aplicativos
As extensões de aplicativos não são aplicativos autônomos. Elas são agrupadas em um aplicativo, chamado de "Aplicativo de contêineres". Embora as App Extensions sejam agrupadas no aplicativo Container, elas são executadas independentemente do aplicativo Container em um processo separado. As extensões de aplicativos são iniciadas por outros aplicativos que precisam da funcionalidade da extensão. O aplicativo que inicia a extensão de aplicativo é chamado de "Aplicativo host". A interface do usuário da extensão é exibida no contexto do aplicativo host.
Embora o aplicativo de contêiner e a extensão correspondente sejam processos independentes executados em sua própria área restrita, eles podem compartilhar dados por meio de um Contêiner compartilhado.
O Shared Container pode ser configurado registrando um App Group exclusivo e ativando-o para o aplicativo contêiner e a extensão. Você aprenderá a configurar isso na próxima seção.
Configuração de grupos de aplicativos
Consulte o Documentos para desenvolvedores da Apple para saber mais sobre como configurar o App Groups em seu aplicativo iOS
Abra o CBLiteApp.xcworkspace do projeto do aplicativo de demonstração que você baixou.
- Abra a guia "Capabilities" (Recursos) do CBLiteApp Container App target. Você deverá ver o App Group group.com.example.CBLiteSharedData habilitado.

Ativação do App Group para o aplicativo
- Abra a guia "Capabilities" (Recursos) do alvo CBLiteTaskExtension. Você deverá ver o mesmo App Group, group.com.example.CBLiteSharedData habilitado.

Configuração do grupo de aplicativos na extensão
A ativação dos recursos do App Group para um destino o adiciona aos arquivos de direitos para o aplicativo contêiner e sua extensão.
- Além disso, você terá que adicionar o recurso App Groups ao seu App Id registrado no Apple Developer Portal.

Configuração do App Group para o aplicativo no Apple Developer Portal
Passo a passo do aplicativo
Crie e execute o aplicativo escolhendo o destino do aplicativo "CBLiteApp". Agora, mude para a exibição Hoje da Central de Notificações
- Adicione seu novo widget de extensão ao Today View, conforme mostrado abaixo
- Mude para o aplicativo e adicione algumas tarefas tocando no botão "+". Mude para o widget Today correspondente. Você perceberá que as tarefas que adicionou são exibidas no widget.
- Marque uma tarefa como "Concluída" tocando na tarefa. Agora, volte para o aplicativo Container. Você notará que o status de conclusão das tarefas foi atualizado para corresponder às ações realizadas no widget Hoje.
- Edite ou exclua uma tarefa da mesma forma no aplicativo Container, passando o dedo sobre a entrada da tarefa. Alterne para o widget Hoje. Você verá a lista de tarefas atualizada.
- Se o seu dispositivo for compatível com o 3D Touch, você poderá forçar o toque no ícone do aplicativo na tela inicial para revelar a extensão do Top Tasks diretamente no ícone e interagir com ele. Muito legal!
- Por fim, encerre o aplicativo Container. Alterne para o Today Widget e atualize o status Concluído de uma tarefa. Reinicie o aplicativo. As tarefas serão listadas com o status atualizado.
Passo a passo do código
As tarefas são armazenadas em um banco de dados local incorporado do Couchbase Lite. Isso implica que tanto o aplicativo contêiner quanto a extensão Today precisam acessar o banco de dados. Conforme discutido anteriormente, a maneira de compartilhar dados entre o aplicativo contêiner e a extensão é por meio do Shared Container. Isso implica que o banco de dados do Couchbase Lite deve estar localizado no Shared Container.
O código para habilitar isso é simples.
Abra o Gerenciador de banco de dados.swift arquivo.
O DatabaseManager é uma classe singleton que lida com as funções básicas de gerenciamento de banco de dados.
- Localizar appGroupContainerURL função
Essa função constrói o caminho para a pasta do contêiner compartilhado.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
// 1. obter URL para o contêiner de grupo compartilhado deixar gerenciador de arquivos = Gerenciador de arquivos.padrão guarda deixar groupURL = gerenciador de arquivos .containerURL(forSecurityApplicationGroupIdentifier: "group.com.example.CBLiteSharedData") mais { retorno nulo } deixar storagePathUrl = groupURL.appendingPathComponent("CBLite") deixar caminho de armazenamento = storagePathUrl.caminho // 2: criar uma pasta no local do contêiner compartilhado com o nome "CBLite" se !gerenciador de arquivos.fileExists(atPath: caminho de armazenamento) { fazer { tentar gerenciador de arquivos.createDirectory(atPath: caminho de armazenamento, comIntermediateDirectories: falso, atributos: nulo) } captura deixar erro { impressão("Erro ao criar o caminho do arquivo: \(erro)") retorno nulo } } retorno storagePathUrl |
- Retorna o URL para o contêiner de grupo compartilhado. Os contêineres de grupo são armazenados em ~/Biblioteca/Contêineres de grupo/
- Crie uma pasta chamada CBLite no contêiner do grupo compartilhado.
- Localizar configureCBManagerForSharedData função
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
fazer { // Definir o modo de proteção de arquivo para a pasta do banco de dados do Couchbase Lite deixar opções = CBLManagerOptions(readOnly: falso, fileProtection: Dados.WritingOptions.completeFileProtectionUnlessOpen) deixar cblpoptions = UnsafeMutablePointer<CBLManagerOptions>.alocar(capacidade: 1) cblpoptions.inicializar(para: opções) se deixar url = autônomo.appGroupContainerURL() { // Inicialize o CBLManager com o diretório do contêiner compartilhado _cbManager = tentar Gerenciador de CBL.inicial(diretório: url.relativePath, opções: cblpoptions) } retorno verdadeiro } captura { retorno falso } |
- Cria o objeto CBLManagerOptions options com as proteções de arquivo apropriadas. Um valor de completeFileProtectionUnlessOpen implica que o acesso de leitura/gravação ao arquivo é restrito, a menos que o arquivo esteja aberto
- Inicialize o CBLManager com o caminho para o contêiner compartilhado. Quando o banco de dados for criado, ele será criado no contêiner compartilhado. O banco de dados do Couchbase Lite está agora no contêiner compartilhado, no qual o aplicativo e a extensão podem ler e gravar.
E agora?
Explore o restante do código de exemplo da demonstração para entender como os documentos são adicionados, editados e excluídos. Dê uma olhada especificamente na seção TaskPresenter.swift arquivo. É aqui que todas as interações com o banco de dados do Couchbase Lite são tratadas.
Se tiver alguma dúvida, sinta-se à vontade para entrar em contato comigo em Twitter. Se você quiser sugerir melhorias, envie uma solicitação pull para o site GitHub repo. Você pode saber mais sobre a integração com o Couchbase Lite neste Primeiros passos com o Couchbase Lite blog. O Fóruns do Couchbase são outro ótimo lugar para postar suas perguntas.
Embora esta postagem discuta o uso do Couchbase Lite no modo autônomo, fique atento a uma próxima postagem que aprimorará o recurso para incluir a sincronização com a nuvem.