Unlimited WordPress themes, graphics, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. iOS 10
Code

iOS 10: Extensões do Serviço de Notificação

by
Difficulty:BeginnerLength:ShortLanguages:

Portuguese (Português) translation by Erick Patrick (you can also view the original English article)

Introdução

Ao receber uma notificação no iOS, talvez queiramos baixar conteúdo ou editar algum conteúdo antes de mostrá-lo ao usuário. No iOS 10, a Apple permite que apps faça isso através da nova Extensão de Serviços de Notificação.

Um exemplo de quando isso será útil é quando temos um app de mensagens onde o servidor backend só identifica usuários por algum código ao invés de nomes. Para um usuário do app, os nomes e detalhes dos contatos seriam registrados localmente, no aparelho. Ao enviar uma notificação de mensagem para o usuário, a carga original incluiria a identificação do remetente, que a extensão de serviço substituiria com o nome do contato.

Para usar esse novo tipo de extensão, é preciso usar o Xcode 8 ou posterior e a SDK do iOS 10.

Por favor, veja a nota abaixo ante de continuar com a dica:

  • O artigo não mostrará o processo de configurar um app para receber/enviar notificações locais ou push.
  • O código exemplo usará as APIs apresentadas na framework UserNotifications, que é nova no iOS 10.
  • Se quiser aprender a criar interfaces customizadoas para notificações, elas são feitas através de extensões de conteúdo de notificação.

Se quiser aprender mas sobre esses tópicos, veja esses outros tutoriais:

1. Configuração da Extensão

A adição de uma extensão de serviço de notificação a um app do iOS é idêntica à de outras extensões. Na barra de menus do Xcode, vá em Arquivo > Novo > Alvo... e selecione modelo de Notification Service Extension do menu que aparecer.

Extension Template

No próximo menu, preenchemos informações da aplicação.

Após a extensão ser criada, veremos dois arquivos (ou três se usar Objective-C) na pasta da extensão no navegador de projetos do Xcode.

  • NotificationService.swift, que conterá todo o código da lógica da extensão.
  • Info.plist, que contém os detalhes de configuração da extensão.

O arquivo Info.plist contem toda a informação necessária para a extensão, assim, o único arquivo necessário alterar é o NotificationService.swift.

2. Ciclo de Vida da Extensão

Uma vez configurado o app com uma extensão de serviço de notificação, o processo a seguir entrará em ação para cada notificação:

  1. O app recebe a notificação.
  2. O sistema cria uma instância da classe da extensão e executa-a em plano de fundo.
  3. A extensão executa edição de conteúdo e/ou baixa conteúdo.
  4. Se a extensão tomar muito tempo, ela será notificada e encerrada imediatamente.
  5. A notificação é mostrada ao usuário.

Como vemos, ao usar uma extensão de serviço de notificação, temos pouco tempo para realizar o trabalho necessário. Se a extensão demorar muito, ela será parada pelo sistema e a notificação será entregue como se não existisse extensão.

3. Código da Extensão

A extensão de serviço de notificação existe como um único objeto subclasse de UNNotificationServiceExtension. Essa classe deine os métodos a seguir:

  • didReceive(_:withContentHandler:) que provê à extensão o objeto UNNotificationRequest original. Nesse método, criamos um novo objeto UNNotificationRequest e passamos this como parâmetro para o manipulador de encerramento quando terminamos. O conteúdo da notificação pode ser criado do zero ou de uma cópia mutável do conteúdo original. O código abaixo mostrar uma implmentação exemplo do método:
  • serviceExtensionTimeWillExpire, executada quando a extensão está prestes a ser encerrada pelo sistema. Esse método não recebe quaisquer parâmetros, logo, se quiser provêr uma versão em-andamento do conteúdo modificado, é preciso manter uma referência do manipulador de conclusão do método  didReceive(_:withContentHandler:). O código a seguir mostra como pode ser obtido na nossa subclasse:

4. Limitações da Extensão

A última coisa importante a considerar ao usar uma extensão de serviço de notificação são as condições às quais a extensão operará.

Primeiro, a extensão só será executada para notificações configuradas para mostrar alertas de tela para o usuário. Isso significa que notificações silenciosas (como as que atualizam emblemas de app) não ativaram a extensão.

Segundo, o dicionário aps da notificação vindoura, dentro da carga, deve incluir uma chave mutable-content com valor igual a 1.

A configuração correta das notificações dependerá da própria configuração do app. Para casar a segunda condição, algumas mudanças poder precisar ser feitas na implementação do lado do servidor das notificações push. Se não usamos um servidor customizados, mas um serviço de terceiros para aimplementação de notificação push, sugiro pesquisa e ler a documentação deles se não conseguir fazer extensão funcionar.

Conclusão

Com a nova classe UNNotificationServiceExtension no iOS 10, é bem simples implementarmos uma extensão de serviço de notificação para nossas aplicações. Qualquer que seja o caso, essas APIs permitem-nos modificar facilmente o conteúdo de uma notificação antes de mostrá-la.

Como sempre, deixe seus comentários na seção abaixo. E veja algumas das outras publicações sobre desenvolvimento de apps para iOS 10 e Swift!

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.