Xamarin | Push Notification com Shiny

Felipe Baltazar
3 min readMar 2, 2021

--

Xamarin, Prism and Shiny logos
Xamarin + Prism + Shiny

Anteriormente eu apresentei uma forma de configurar o Shiny com o Prism, para aumentar o leque de possibilidades de nossas aplicações.
Você confere esse post aqui:

Hoje oque eu trago para vocês é como configuramos o Shiny para utilizarmos a implementação de Push Notifications tanto para Firebase quanto para AzureHubNotifications.

Nugetssssss

Vamos instalar, além dos pacotes citados no post de configuração do Shiny + Prism, o pacote Shiny.Push.FirebaseMessaging.

Nuget.org page showing the Shiny.Push.FirebaseMessaging package
Shiny.Push.FirebaseMessaging

Configurando a aplicação

Para o Android configuramos os ícones da notificação e chamamos o inicializador do Shiny:

MainApplication.cs

Para o iOS, configuramos a inicialização do projeto no Appdelegate inicializando o Shiny:

AppDelegate.cs

Nossa classe MyStartup vamos configurar os serviços utilizados:

MyStartup.cs

Na nossa classe de inicialização, do Shiny, vamos configurar para usar as notificações do Firebase (Ou AzureHubNotifications).

PushDelegate.cs

Nossa classe PushDelegate é quem vai ser responsável por tomar ações quando recebemos um Push.

Aqui é bom salientar que possuímos dois tipos de Push:

  • Notification Message: Essa pode ser enviada pela interface do firebase, mas existe uma limitação com quais dados você consegue enviar para o dispositivo.
  • Data Message: Essa pode ser enviada chamando a api do Firebase, e você consegue determinar qualquer JSON para enviar para os dispositivos. Você pode ainda determinar se é necessário ou não a exibição de uma notificação.

Dito isso, o OnEntry é a representação do Notification Message, ou seja, detalhes de uma notificação que já foi exibida para o usuário.

O OnReceived representa o Data Message, e alí podemos determinar oque fazer com os dados. (ex.: processar algo em background, enviar uma notificação mais personalizada e etc..)

No Firebase, buscamos o arquivo google-services.json e incluímos nos projetos de plataforma específica (Android/iOS), definindo sua ação de compilação para GoogleServicesJson.

google-service.json included on android csproj
google-service.json

Feito! Com apenas esses passos simples implementamos o PushNotification do firebase em nossa aplicação Xamarin.Forms.

Bonus!

Um exemplo de como podemos manipular externamente, a visibilidade de uma notificação, é enviar esses dados via JSON, na Data Message.

Vamos incluir a utilização do serviço de notificações do Shiny, na nossa classe de inicialização:

MyStartup.cs

E configurar nosso PushDelegate para tratar os seguintes parâmetros:

PushDelegate.cs

Agora podemos utilizar o Postman para fazer a requisição e passar os dados necessários.

Postman interface with json body
Postman interface

Para saber mais como utilizar o Postman para enviar PushNotifications veja esse Post do Patrik Butani.

Android UI showing the push notification
Data notification

--

--

Felipe Baltazar

Developer AspnetCore 🌐, Windows 💻, Xamarin 🐒, Nerd 🤓, Gamer 🎮 , Father 👨‍👩‍👦 | Github:https://github.com/felipebaltazar