GCM Downstream Messages. Push Message Android - Parte 1

Investir em Você é Barra de Ouro a R$ 2,00. Cadastre-se e receba grátis conteúdos Android sem precedentes! Você receberá um email de confirmação. Somente depois de confirma-lo é que eu poderei lhe enviar os conteúdos semanais exclusivos. Os artigos em PDF são entregues somente para os inscritos na lista.

Email inválido.
Blog /Android /GCM Downstream Messages. Push Message Android - Parte 1

GCM Downstream Messages. Push Message Android - Parte 1

Vinícius Thiengo
(5790) (19)
Go-ahead
"O método consciente de tentativa e erro é mais bem-sucedido que o planejamento de um gênio isolado."
Peter Skillman
Prototipagem Android
Capa do curso Prototipagem Profissional de Aplicativos
TítuloAndroid: Prototipagem Profissional de Aplicativos
CategoriasAndroid, Design, Protótipo
AutorVinícius Thiengo
Vídeo aulas186
Tempo15 horas
ExercíciosSim
CertificadoSim
Acessar Curso
Quer aprender a programar para Android? Acesse abaixo o curso gratuito no Blog.
Lendo
TítuloManual de DevOps: como obter agilidade, confiabilidade e segurança em organizações tecnológicas
CategoriaEngenharia de Software
Autor(es)Gene Kim, Jez Humble, John Willis, Patrick Debois
EditoraAlta Books
Edição
Ano2018
Páginas464
Conteúdo Exclusivo
Investir em Você é Barra de Ouro a R$ 2,00. Cadastre-se e receba gratuitamente conteúdos Android sem precedentes!
Email inválido

Opa, blz?

Nesse vídeo dou inicio a uma nova série, Push Message no Android, porém não descartando futuras atualizações na APP de carros da série anterior. No final dessa série vou voltar a APP de carros e implementar uma feature de push message (GCM, SNS, Parser) que seja a melhor opção para nossa APP de carros. Note que também separei esse conteúdo de push message para não confundir seguidores que estão buscando apenas uma implementação desse tipo de script e não uma completa como seria se utilizando a APP de carros.

Como apresentado no vídeo, a implementação do novo script do Google Cloud Message (GCM) está mais simples que a versão anterior, tendo em mente que a versão anterior não mais funcionará, logo a migração para o novo script é necessária o quanto antes. Apesar da utilização da classe InstanceID no contexto de GCM ela pode ser utilizada para "n" outras entidades, não há vinculo restrito com os scripts de GCM. O InstanceID nos informa um identificador único para nosso conjunto APP / Device além de outras features como autenticação.

Fique atento quanto a configuração inicial para utilizar o PlayServices na APP e consequentemente utilizar o GCM. Realize o registro do serviço requisitado, GCM, dessa vez não há necessidade de fingerprint (SHA1 gerado via shell script), apenas de cliques em "Ok" (ou o equivalente) e depois a atualização dos gradles top level e app level. Utilize seus próprios API_KEY e SENDER_ID, provavelmente vc terá de alterar o nome do package principal de seu projeto, pois nomes de package no Android são únicos para toda a plataforma.

Não comentei nesse vídeo (provavelmente vou falar nos próximos), mas é possível trabalhar com mensagens em tópicos (o registration id não teria muita relevância nesse caso de assinatura em tópicos) e com o analytics do Developer Play Store Dashboard para obter dados de falhas e cia na utilização do GCM na APP.

Note que a implementação de InstanceIDListenerService é necessária segundo a documentação, pois o registration id do APP / Device pode se tornar antigo e então parar de funcionar, dessa forma, sem o InstanceIDListenerService, ou seu script realiza a verificação de todos os results no lado servidor para cada push message gerado, ou fica sem atualizar o registration id e consequentemente sem enviar novas push messages ao referente device. Note que esse primeiro vídeo foi também uma maneira de atualizar o primeiro vídeo de GCM que já tinha no Blog. Sem mais delongas, vou deixar você assistir ao video.

GitHub do projeto: https://github.com/viniciusthiengo/push-message-serie

GitHub do projeto, parte Web: https://github.com/viniciusthiengo/push-message-serie-web

Segue link de vídeos que complementam conteúdos desse vídeo (caso ainda não os tenha implementado anteriormente):

Volley, Gson e RetryPolicy em Material Design Android Série APP

SharedPreferences no Android, Entendendo e Utilizando

EventBus Lib, Comunicação Entre Entidades Android

Segue links das páginas apresentadas no vídeo:

Implementação do GCM Client no Android

Página de referência a classe InstanceID

Key-value reference para utilização no lado servidor do script GCM

Página de referência a classe InstanceIDListenerService

Google Play Services libs

Segue link da lib PHP utilizada para facilitar a comunicação de nosso thrid-part server com o GCM Servers:

Endroid Google Cloud Messaging

Vlw

 

Investir em Você é Barra de Ouro a R$ 2,00. Cadastre-se e receba grátis conteúdos Android sem precedentes!
Email inválido

Relacionado

Date e Time PickerDialog. Material Design Android - Parte 16Date e Time PickerDialog. Material Design Android - Parte 16Android
ContextMenu no RecyclerView. Material Design Android - Parte 17ContextMenu no RecyclerView. Material Design Android - Parte 17Android
Volley, Gson e RetryPolicy em Material Design Android Série APPVolley, Gson e RetryPolicy em Material Design Android Série APPAndroid
TextInputLayout e Envio de Email no Android com PHPMailer e AWS SESTextInputLayout e Envio de Email no Android com PHPMailer e AWS SESAndroid

Compartilhar

Comentários Facebook

Comentários Blog (19)

Para código / script, coloque entre [code] e [/code] para receber marcação especifica.
Forneça seu nome válido.
Forneça seu email válido.
Forneça o comentário.
Enviando, aguarde...
24/05/2016
Thiengo, desculpe desenterrar o tópico, mas estou com uma dúvida, estou vendo seus vídeos e curtindo pacas todo o seu conteúdo. Estou precisando desenvolver uma app com GCM para fazer o mobile do pessoa atualizar uma lista de eventos toda vez que é atualizada no no meu server.

Vc fala claramente a necessidade de uso do Android Studio. Não o tenho. É possível seguir os passos via eclipse como os outros diversos vídeos feitos por você, ou o Android Studio tem alguma particularidade?


Sds,
Alex Florindo
Responder
Vinícius Thiengo (0) (0)
26/05/2016
Fala Alex, blz?
Para utilizar no Eclipse vc provavelmente terá de instalar um plugin simulador do gradle, veja essa link: https://marketplace.eclipse.org/content/gradle-sts-integration-eclipse

Esse tb: http://www.vogella.com/tutorials/EclipseGradle/article.html

Mas instale eles já pensando no Firebase Cloud Message (FCM), pois ele está substituindo o GCM. Segue doc do FCM: https://firebase.google.com/docs/cloud-messaging/android/client

O FCM é ainda mais tranquilo de utilizar que o GCM. Abraço
Responder
28/05/2016
Show de bola... Vou dar uma olhada sim. Me diga uma coisa, essa migração de GCM para FCM é algo que irá acontecer a curto/médio prazo? É oficial?

Seria pedir demais para vc fazer u vídeo tutorial para a gente sobre Firebase Cloud Messaging?

Vlw mais uma vez...
Responder
Vinícius Thiengo (0) (0)
28/05/2016
Alex, recomendo que altere o quanto antes, o código ficou até mais tranquilo. Não tenho datas e mesmo se tivesse duvido mt que serão válidas, eles tendem a adiar. O vídeo vai sair, com os vídeos da série sobre o Firebase. Abraço
Responder
Danilo (1) (0)
07/11/2015
Thiengo, no caso para implementar um form html para inserir o conteúdo da notificação é preciso pegar o $_POST do forme setar no array que armazena o conteúdo a ser enviado para a app, correto? Não sei se é a melhor forma, mas pretendo fazer um pequeno form para inserir as notificações, a medida que novas informações são recebidas no banco de dados. Como vc faz para automatizar esse processo? Tipo, quando vai colocar um novo post, uma nova msg , etc... Abs
Responder
Vinícius Thiengo (0) (0)
28/11/2015
Danilo, utilizar o array é uma lógica possível, se é a melhor somente testando e vendo o tempo de resposta... no blog o que faço é assim que crio um novo conteúdo (post, mensagem dia, ...) e o bd salva sem problemas, o script verifica se o conteúdo está ativo (status = 1) e então envia o GCM message. Abraço
Responder
20/08/2015
Olá Thiengo, fiz uns testes aqui usando Curl na mão e deu erro de SSL, é necessário https ?
Responder
Vinícius Thiengo (0) (0)
20/08/2015
Everson, se me recordo bem, sim, a chamada ao servidores do GCM é sempre via SSL. Tente com o componente que estou utilizando no projeto, ele é leve e fácil de trabalhar. Abraço
Responder
21/08/2015
Eu usei, porém, depois de sucessivos erros eu fiz via curl na mão e usei também no POSTMAN, apenas com o POSTMAN funcionou.
Responder
21/08/2015
Olá thiengo, mais uma vez, encontrei uma solução, enviando a requisição com curl na mão, foi a seguinte
 curl_setopt($curl /* sua instâcia do curl */, CURLOPT_SSL_VERIFYPEER, false); 
Responder
Vinícius Thiengo (1) (0)
22/08/2015
Show de bola Everson
Responder
20/08/2015
Olá Thiengo, estou tentando implementar essa parada mas tá dando "Unauthorized 401", fiz outros teste eu deu tbém invalidRegistration. Tem que ter cadastro de desenvolvedor pago ?
Responder
Vinícius Thiengo (0) (0)
20/08/2015
Fala Everson, blz?
Na verdade não precisa de conta paga no Google, o que precisa é gerar o arquivo .json igualmente fiz no vídeo, porém com suas configurações de projeto. Se possível troque ao menos os nomes dos packages do exemplo utilizado, pois o Google trabalha com nomes de packages no scopo global, ou seja, não pode haver repetidos. Abraço
Responder
Vinícius Thiengo (0) (0)
20/08/2015
Entre no Console do Google (https://code.google.com/apis/console/?hl=pt-br ) tb para verificar se sua conta foi criada. Abraço
Responder
ivanrocha.rocha (1) (0)
19/08/2015
e ai Thiengo blz? muito bom o video. gostei muito, bom ja consegi implementar o gcm no meu projecto graças ao seu video. só que na parte de enviar o token para o servidor eu usei o volley mas funcionou di boa. a parte do servidor tb achei um pouco complicado mais consegui fazer, fazendo uma fusão dos dois videios sobre gcm que tens publicado. muito obrigado e grande abraço
Responder
14/08/2015
Bom dia Vinícius, muito bom este vídeo.. eu estou tento dificuldades com o Play Service esta me mostrando o erro: java.lang.NoClassDefFoundError: com.google.android.gms.common.internal.zzd mesmo ja colocando as dependências. Poderia me dar uma ajuda?
Responder
Vinícius Thiengo (0) (0)
14/08/2015
Fala Wallace, blz?
Está com as libs de suporte tb setadas no gradle (support-v7 e v4)? Está atualizando o gradle correto (tem o Project e o Module), cada um tem uma parte da atualização. Gerou seu play-services.json? Abraço
Responder
Alessandro (3) (0)
11/08/2015
Muito bom, parabéns pela aula. A parte do Android ficou super tranquila de se entender 'isso minhas palavras', mais a parte do servidor o php que ainda me gera um desconforto ao tentar entender, porém acho que deve ser por que não sou muito avançado nele. Enfim agradeço pela aula.
Responder
Vinícius Thiengo (0) (0)
11/08/2015
Fala Alessandro, blz?
Essa dificuldade no lado servidor é comum, mas se reparar bem ela é quase que estática, não terá muita coisa além do apresentado no vídeo (com XMPP vai sim). Já a parte mobile é que floresce as ideias: chamar um status bar notification, abrir a APP diretamente sem notification, acionar um service no background, ...
Responder