OneSignal Push Notification – Xamarin.Forms

Olá, neste post irei demonstrar como você pode implementar Push Notification em sua aplicação Xamarin.Forms utilizando o OneSignal.

 

ADICIONANDO O NUGET PACKAGE

Clique com o botão direito em cima de sua Solution e selecione “Manage NuGet Packages for Solution…”

1.1

 

Digite “Com.OneSignal” e selecione o plugin como demonstrado na imagem a seguir.

1.2

 

Selecione todos os projetos e clique no botão “Install”.

1

Firebase

Entre com uma conta da Google no Firebase e adicione um novo projeto.

f1

 

Informe um nome para o seu projeto e o país, o Project ID será gerado automaticamente.

f2

 

Em seguida selecione “Adicionar o Firebase ao seu aplicativo android”.

f3

 

Informe o nome do pacote de sua aplicação android. Se o seu projeto android ainda não tem um nome do pacote, adicione.

f4

 

O passo seguinte é ir em “Configurações do projeto”.

f5

 

Em configurações selecione “Cloud Messaging”, guarde o Token da “Chave do servidor” e o Código do remetente, pois iremos utiliza-los mais pra frente.

f6

OneSignal

Crie uma conta no site do OneSignal, não se preocupe, todo o serviço de Push disponibilizado é gratuito.

Adicione um novo projeto.

o1

 

Informe um nome para o seu projeto no OneSignal.

o2

 

Selecione “Google Android (GCM)”.

o3

 

No campo “Google Server API Key” informe o token da Chave do Servidor adquirido no Firebase e no campo “Google Project Number” adicione o Código do remetente.

o5

 

Ignore os passos seguintes clicando no “x” que encontra-se no canto superior direito.

o6

 

No menu lateral selecione “App Settings”.

o7

 

No canto superior direito selecione “Keys & IDs”.

o7

 

Guarde as informações do “OneSignal App ID” e “REST API Key”, pois iremos utiliza-los mais pra frente.

o7

Portable

Na classe App, dentro do método de inicialização, inicialize o OneSignal e no método “OnStart” chame o “RegisterForPushNotifications”, ambos demonstrado a seguir:

Substitua o texto “Insert OneSignal App ID here” pelo APP ID que se encontra no OneSignal.

App.xaml.cs

Android

No arquivo MainActivity.cs e dentro do método “OnCreate” inicialize o OneSignal.

MainActivity.cs

 

No arquivo AndroidManifest.xml adicione as Tags “permission”, “uses-permission” e “application” como demonstrado a seguir:

Substitua o texto “{InsertPackageNameHere}” pelo Package Name da sua aplicação andorid.

AndroidManifest.xml

iOS

No AppDelegate.cs dentro do método “FinishedLaunching” inicialize o OneSignal.

AppDelegate.cs

iOS Push Certificate

Para a plataforma iOS é necessário gerar um certificado com a sua conta de desenvolvedor da Apple. Veja como fazer isso aqui: Generate an iOS Push Certificate

Enviar uma mensagem

No Dashboard de sua aplicação no OneSignal, selecione “New push notification…”

send1

 

Selecione para quem tanto deseja enviar a mensagem.

send2

 

Defina o titulo e o conteúdo da mensagem.

send3

 

Selecione “Background data” se desejar que a mensagem chegue para os usuários que estejam com o app fechado.

send5

Em segue selecione next.

Enviar uma mensagem por outra aplicação

Caso você tenha uma aplicação para disparar o push notification, você pode montar um json com as configurações da mensagem, como o exemplo a seguir:

Para saber outras formas de sua aplicação disparar o push notification, clique aqui.

Resultado

ezgif.com-gif-maker (1)

 

 

Esse e todos os exemplos deste blog encontram-se disponíveis no GitHub.

icongithub

18 comentários em “OneSignal Push Notification – Xamarin.Forms

      1. Olá Juliano, apenas para deixar registrado que consegui usar o push no emulador (testei apenas no Genymotion). Para funcionar, é necessário que tenha instalado a última versão do Google Play na VM do Android.

        Curtir

  1. Ok! Meu device já aparece no menu “All users” como ativo (selecionei a opção background data)

    No Delivery Statistics aparece:
    Total Messages 1
    Pending 1

    Apesar do app estar aberto ainda não recebi, saberia dizer se existe alguma configuração ou procedimento extra que dispare de fato o Push ou foi demorado para você também?

    Obrigado.

    Curtir

    1. Olá Marcio, não é para demorar muito não. Verifica se o device tinha conexão com a internet. Talvez possa ser isso.

      Curtir

  2. Olá. Fiz um teste e funcionou…pesquisando mais a fundo, vi a opção de adicionar Location Point ao One Signal. Mas utilizando o comando OneSignal.Current.PromptLocation() nada acontece no painel do One SIgnal. Diferente de quando uso SendTag, aí posso criar um atributo de localização, por exemplo. Mas gostaria de usar o location point dele…se souber como, agradeço.

    Curtir

  3. Juliano, Boa Noite Amigo!
    Primeiramente gostaria de agradecer por este mais este POST!
    Após atualizar meu Projeto compartilhado para trabalhar com .NET Standard 2.0, o OneSignal parou de funcionar. Em pesquisas na Internet ainda não encontrei a solução. Saberia informar se existe alguma configuração adicional para que o OneSignal funcione com o .NET Standard 2.0 ?
    Aguardo por seu contato ok!
    Abs.

    Curtir

    1. Olá Wallace,

      Acabei de verificar que a biblioteca não possui atualizações para o .NET Standard 2.0 ainda.

      Porem, eu criei um projeto .NET Standard 2.0 e testei a biblioteca e ela funcionou normalmente. Apenas apresentou uma mensagem de alerta de compatibilidade, mas funcionou.

      De qualquer forma irei entrar em contato com o pessoal para saber sobre a atualização.

      Experimente instalar novamente a biblioteca ou fazer o teste em um projeto novo separado para ver se não afetou algum arquivo no momento da sua atualização.

      Qualquer dúvida estou a disposição.

      Curtir

  4. Hi, did you had a chance to contact OneSignal team? any updates from them? their xamarin sdk needs to update to support .Net Standard as well as Android API 26. Currently its not working on Oreo. Its sad not being able to use such great service. seems they are not maintaining xamarin sdk

    Curtir

  5. Olá ajudou bastante o Tutorial. Como eu faço para recuperar o IDUser? preciso guarda-lo para enviar push individuais….. como faço???

    Curtir

    1. Olá Jader, fico feliz em saber que te ajudou.

      Utilize o exemplo a seguir, qualquer dúvida entre em contato comigo pela sessão contatos que eu te ajudo.

      Abraços.

      Curtir

  6. Ola Juliano não sei se o primeiro comentário foi registrado mas se não vai esse, parabéns pelo post muito bom, só que no meu caso deu um erro que não consigo resolver:error: package com.google.android.gms.tasks does not exist

    Meu projeto é Xamarin.Forms .NET Standard 2.0

    Sabe me dizer se existe alguma solução ??

    Abraço

    Curtir

    1. Olá Rafael, obrigado.

      Experimente dar um downgrade nos pacotes do GooglePlayServices. Pois o OneSignal normalmente não funciona perfeitamente com as versões mais recentes.
      Neste exemplo com a essa versão do OneSignal, experimente utilizar a versão 60.1142.1 dos pacotes do GooglePlayServices.

      Espero ter ajudado.

      Abraço

      Curtir

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s