Press enter to see results or esc to cancel.

Push Notification com: Xamarin, Firebase Cloud Messaging (FCM), App Center Push e App Center Client – Parte 3

Usando a Push API do App Center Push

O App Center nos disponibiliza via Swagger os end points para interagirmos com diversas funções do App Center. Entre essas funções está a Push. Para esse exemplo usaremos:

 

 

Esse end point é responsável por criar via POST a notificação no App Center, notificação essa que será disparada de acordo com alguns critérios como: para todos os dispositivos, para usuários específicos, dispositivos específicos entre outros.

Para que o consumo dessa API ocorra é necessário ter uma chave de autorização para passar junto com a requisições, POST, GET e outras. Essa chave poderá ser obtida em Account Settings -> API Tokens no App Center.

Para que o envio da notificação fosse possível criei um método para enviar a notificação via POST.

public Task AdicionarNotificacao(Guid[] devices, string nome, string titulo, string conteudo)
{
    var adicionarNotificacao = new EnviarNotificacao
    {
        ConteudoNotificacao = new ConteudoNotificacao
        {
            Conteudo = conteudo,
            Nome = nome,
            Titulo = titulo
        },
        ObjetivoNotificacao = new ObjetivoNotificacao
        {
            Dispositivos = devices
        }
    };

    return AdicionarBaseHttpClient("v0.1/apps/ferreirafernandar/ClimaTempo/push/notifications", adicionarNotificacao);
}
public async Task AdicionarBaseHttpClient(string url,
    string endpoint,
    object model,
    string key)
{
    using (var response = new System.Net.Http.HttpClient())
    {
        var request = MontarRequest(url, endpoint, HttpMethod.Post, key, model)</code>

            var retorno = response.SendAsync(request, CancellationToken.None).Result;

        var resultado = retorno.Content.ReadAsStringAsync().Result;

        return JsonConvert.DeserializeObject(resultado);
    }
}
public HttpRequestMessage MontarRequest(string url,
        string endpoint,
        HttpMethod method,
        string key,
        object content = null,
        string mediaType = "application/json")
    {
        var request = new HttpRequestMessage
        {
            RequestUri = new Uri(url + endpoint),
            Method = method
        };
    }
    request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(mediaType));
    request.Headers.Add("X-API-Token", key);

    if (content != null)
        request.Content = new ObjectContent(content.GetType(), content, new JsonMediaTypeFormatter());

        return request;
}

E chamei este método no meu serviço

 await appCenterService.AdicionarNotificacao(
    new[] { notificacao.IdDispositivo }, "ClimaTempo",
    "A temperatura caiu!",
    $"Cidade de {notificacao.Cidade} com temperatura atual de {cidade.Principal.TemperaturaMinima}°.");

Vale ressaltar que a Push API conta com vários outros métodos para lidar com Push.

Como resultado as notificações chegarão aos dispositivos esperados.

Importante: Caso mantenha o app aberto as notificações não serão apresentadas, sendo assim feche ou minimize.

 

 

Bom, pessoal, era isso que queria passar a vocês e espero que possa ser útil em algum momento!

 

Imagem utilizada no post: Pixabay

Tweet about this on TwitterShare on FacebookShare on LinkedInEmail this to someone
Comments

Leave a Comment