Google Cloud Messaging (GCM) no Android

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 /Google Cloud Messaging (GCM) no Android

Google Cloud Messaging (GCM) no Android

Vinícius Thiengo
(16348) (54)
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 mostro como utilizar o Google Cloud Messaging para enviar mensagens push aos usuários que utilizam sua APP. O Google Cloud Messaging ou apenas GCM é uma serviço de mensagens push do Google, e a grande diferença desse serviço para os outros é a possibilidade de fazer com que seu servidor Web seja a parte ativa da comunicação, ou seja, o usuário de sua APP não precisa estar com ela em funcionamento para ser notificado sempre você quiser notificá-lo enviando uma mensagem partindo de seu servidor Web.

O GCM é composto na verdade por três níveis de entidades,seu servidor Web, que é responsável por enviar a mensagem junto com os IDs dos dispositivos ao servidor GCM do Google, o servidor GCM do Google que pode ser HTTP ou CCS (XMPP), e então os aparelhos com sua APP instalada e que receberão a mensagem. Com o servidor HTTP escolhido (que é o do vídeo), nós apenas podemos enviar as mensagens de nosso servidor Web para o GCM e então para os aparelhos a serem notificados, já com o servidor CCS (XMPP) nós também podemos enviar a mensagem partindo do aparelho para o GCM e então para nosso servidor Web, processo também chamado de upstream (ou outro que também é suportado pelo HTTP é o downstream). No vídeo mostro vários IDs e aqui já cometem me referindo no plural, mas vc pode trabalhar da maneira como quiser (enviando uma mensagem personalizada individual para cada usuário, ou para um grupo, e por ai vai). No vídeo mostro minha implementação PHP do servidor, note que a parte onde tem a lógica mesmo para definir quais dispositivos receberão a mensagem e quando remover um registration id inválido está no servidor Web, a parte implementada no Android é mais "decoreba" do que lógica. A implementação no servidor é totalmente sem padrão, ou seja, você faz a sua como quiser, porém você precisa salvar os registrations id para poder notificar os usuários e é bom também implementar parte do código para saber quando remover ou não um registration id do banco de dados (isso é mostrado no vídeo). Lembre que o registration id é uma vinculação de sua APP com o dispositivo, ou seja, se sua APP é do tipo das que tem login você terá de fazer essa vinculação na mão em seu banco de dados, que não será difícil, somente vincule no banco de dados o registration id ao user id no bd. Acho que é isso, vou evitar mais delongas e deixar você assistir ao vídeo.

O link para download do código do projeto (incluindo código PHP) se encontra logo abaixo no post.

Segue links dos vídeos que podem ajudar a compreender melhor as tecnologias utilizadas junto com o GCM:

BroadcastReceiver no Android, Executando Tarefas no Background

Notification no Android, Criando Notificações Com Toque e Vibração

SharedPreferences no Android, Entendendo e Utilizando

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

Console de desenvolvedor Google

Página de explicação do Google Cloud Messaging no Android

Página Getting Started no Google Cloud Messaging no Android

Página do GCM HTTP Connection no site do Android

Página Implementing GCM Server no site do Android

Página Implementing GCM Client no site do Android

Vlw

ERRATA!
Adicione a seguinte linha abaixo da tag <action android:name="com.google.android.c2dm.intent.RECEIVE" /> no AndroidManifest.xml:

<action android:name="com.google.android.c2dm.intent.REGISTRATION" />

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

ExpandableListView no Android, Entendendo e UtilizandoExpandableListView no Android, Entendendo e UtilizandoAndroid
DialogFragment no Android, Entendendo e UtilizandoDialogFragment no Android, Entendendo e UtilizandoAndroid
Integrando o Leitor de QRCode ZXing no AndroidIntegrando o Leitor de QRCode ZXing no AndroidAndroid
Pacote Google Play Services Ads Para Anúncios no AndroidPacote Google Play Services Ads Para Anúncios no AndroidAndroid

Compartilhar

Comentários Facebook

Comentários Blog (54)

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...
jhonny (1) (0)
04/01/2016
Este metodo ainda funciona ? si funciona vc sabe me dizer pq a classe HttpConnectionUtil esta dando erro em tudo ? estou usando o android studio
Responder
Vinícius Thiengo (0) (0)
05/01/2016
Fala Jhonny, blz?
Veja esse vídeo (http://www.thiengo.com.br/gcm-downstream-messages-push-message-android-parte-1 ). Essa acima está obsoleto. Abraço
Responder
26/11/2015
Thiengo, você sabe me dizer se o gcm envia as mensagens na mesma ordem em que o meu servidor enviou pra ele?

Obrigado, abraço.
Responder
Vinícius Thiengo (0) (0)
26/11/2015
Fala Luis, blz?
Na verdade na documentação não notei essa informação, mas mesmo que ele envie, o que está buscando saber, mt provavelmente, e a ordem de chegada do push message, que na verdade está fora do controle dos servidores do Google, pois a latência da rede a conexão do device na rede e outros "n" fatores influenciam na entrega do pacote ao seu destino. Logo podemos assumir que não tem ordem na chegada, mesmo se houver ordem no envio.

Esse vídeo acima é antigo, veja esse (http://www.thiengo.com.br/gcm-downstream-messages-push-message-android-parte-1 ), é a versão mais atual. Abraço
Responder
Mario Pacio (1) (0)
27/10/2015
Fala blz?? Sabe dizer como faço pra adicionar imagem e botão de action no payload?
Abs
Responder
Vinícius Thiengo (0) (0)
27/10/2015
Fala Mario, blz sim.
Na verdade esse action button é configurado na Notification e não no push message. EU tenho um exemplo dele nesse vídeo mais atual sobre GCM e Notification (http://www.thiengo.com.br/notificacoes-com-notificationcompat-push-message-android-parte-2 ). Abraço
Responder
Wagner (1) (0)
25/09/2015
Olá Thiengo! Muito bom o seu video! Fiz u aplicativo seguinto seu vídeo e acabei de ler que o serviço C2DM será encerrado completamente em 2015/10/20. Esta mudança exige alguma alteração na sua implementação? também encontrei que o envio de msg do servidor para o cliente deve ser enviado para um novo ponto de extremidade: https://gcm-http.googleapis.com/gcm/send. No meu servidor eu tenho apenas q alterar esta url ou preciso fazer mais alguma alteração? na minha aplicação eu utilizo a url "https://android.googleapis.com/gcm/send ".
Att.
Responder
Vinícius Thiengo (0) (1)
25/09/2015
Fala Wagner, blz?
Dê uma olhada na série Push Message Android que fiz, começando por esse vídeo (http://www.thiengo.com.br/gcm-downstream-messages-push-message-android-parte-1 ). Nela abordo a nova forma de utilizar o GCM, não é somente alterar o url. Abraço
Responder
Wagner (1) (0)
25/09/2015
Muito obrigado pela resposta rápida! Vou verificar os vídeos que você sugeriu! Abraço!
Responder
Wagner (1) (0)
25/09/2015
Thiengo, essa nova forma de fazer é possível apenas com Android Studio ou consigo fazer no Eclipse também?
Responder
Vinícius Thiengo (0) (1)
25/09/2015
Wagner, instale a versão mais atual do Google  Play Services no Eclipse, se passar sem problemas, provavelmente não terá dificuldades com essa nova versão rodando no Eclipse. Lembro que migrar para o AndroidStudio o quanto antes é uma sabia escolha, pois o Eclipse, se não me engano, não tem mais suporte do Google, digo, o SDK do Android para Eclipse. Abraço
Responder
renato (1) (0)
02/06/2015
Olá parabéns pelos vídeos,  Thiengo, você acha q o gcm serviria para enviar notificações aos usuarios q utilizam o app, por !exemplo todos os usuários que aguardam uma promoção,  me refiro a bastantes usuários,  tipo caiu no banco de dados a promocao, os usuarios recebem a notificacao ,aquela externa push noticstion seria a melhor maneira, com o gcm somente posso enviar 1000 msgns por vez?

obrigado.
Responder
Vinícius Thiengo (0) (0)
03/06/2015
Fala Renato, blz?
Essa é uma limitação do GCM quando se tem centenas de mlhares de users, um Facebook, por exemplo, tem de ter o próprio servidor de push messages, pois enviar de 1000 em 1000 é inviável. Uma outra opção é o serviço de push message da Amazon Web Service, com ele vc paga $ 1,00 a cada 1 milhão de mensagens enviadas. Acho que se vc tiver até uns 100K de users ativos ainda é possível continuar com o GCM, caso contrário é buscar uma alternativa mais poderosa. Já viu as alternativas abaixo:

https://pushover.net/

http://www.airbop.com/features?gclid=CJvv4eav88UCFYaRHwod6KIAMQ

Abraço
Responder
Renato (1) (0)
03/06/2015
Oi Thiengo, vou verificar os links, talvez no futuro o Amazon Web Service seja uma opção, muito obrigado!
Responder
20/05/2015
PARABÈNSThiago, tenho aprendido muito contigo! Só não entendi uma coisa, como crio e disparo as notificaçoes que vão para quem baixou o app??
Responder
Vinícius Thiengo (0) (0)
21/05/2015
Fala Henrique, blz?
O GCM vai criar um id único para sua APP no device do user, esse id vc tem que criar um código em sua APP que enviará o id para seu servidor Web, onde tem sua base de dados remota. Feito isso, vamos supor que tem um blog e toda vez que postar algo quer que os users recebam a notificação, então partindo que algo novo foi postado, seu script no servidor Web pega os ids cadastrados (nesse exemplo, sem filtro), junto com a mensagem, chama o script de envio de dados para o servidor do GCM (como no vídeo) e o servidor do GCM se encarregará de notificar todos os aparelhos de ids enviados para ele. Note que na verdade o GCM somente entregará a mensagem enviada pelo servidor Web de seu controle, para gerar a notification na barra de status e cia vc precisa implementar uma Notification no Android (http://www.thiengo.com.br/notification-no-android-criando-notificacoes-com-toque-e-vibracao ). Abraço
Responder
Henrique (1) (0)
21/05/2015
Olá Thiago, sou muito grato a sua atenção cara, mas não entendi muito bem... ótimo saber que toda alteração que faço no site vai automático, mas quando coloco o app pra rodar ele gera um id, show! mas não consegui fazer registrar em meu banco de dados... muito obrigado cara, grande abraço!
Responder
Vinícius Thiengo (0) (0)
21/05/2015
Henrique, somente corrigindo, esse "automático" somente é automático depois que vc criou o script em seu servidor Web que permitirá esse envio, ou seja, terá de criar o script.

Para salvar o reg id em sua base de dados remota vc pode utilizar o Volley (http://www.thiengo.com.br/volley-no-android-entendendo-e-utilizando ) para enviar esse reg id para seu WebServer e então com a linguagem de backend (PHP, Java, Python, ...) de seu server vc recebe o id e salva no database no servidor. Abraço
Responder
Alann Jaksnon (1) (0)
04/04/2015
Boa noite Thiengo,
Parabéns pelo post... muito bom e bem detalhado... assisti vários, mas o seu é o mais completo.

Estou com um problema, depois que rodo o app, ele grava o registration_id no DB, mas qndo vou fazer um teste igualmente como mostra no vídeo, com a mesma query da url que vc usou, trocando apenas para meu servidor, dá um erro:
Se rodo no localhost:
bool(false)

Se rodo no meu sevidor:
bool(false)
Warning: Invalid argument supplied for foreach() in ....\gcm-php\ctrl\CtrlGcm.php on line 73

Você sabe me dizer o que pode ser isso?

Obrigado!
Responder
Vinícius Thiengo (0) (0)
04/04/2015
Fala Alann, blz?
Criou suas próprias credenciais no Console do Google como fiz no vídeo. Se possível altere o nome do projeto tb. E o ip de seu servidor, forneceu o correto? Está utilizando a chave de servidor correta em seu servidor no momento de enviar as mensagens ao servidor GCM? Abraço
Responder
Alann Jaksnon (1) (0)
05/04/2015
Sim, eu criei as credenciais e editei o MainActivity.java passando a SENDER_ID, editei o HttpConnectionUtil.java passando a URL do meu server e no PHP também editei o CtrlGcm.php e passei minha GOOGLE_API_KEY... na console da Google também tentei com o IP de teste 0.0.0.0/0 e com o IP do meu servidor e a resposta não mudou...
Responder
Vinícius Thiengo (0) (0)
06/04/2015
Alann, veja a primeira resposta desse link do stackoverflow (http://stackoverflow.com/questions/11242743/gcm-with-php-google-cloud-messaging ) para ver se seu curl php está indo no mesmo caminho de configuração. Depois certifique-se de que está utilizando a ServerKey igualmente indicado nesse link (http://www.sherif.mobi/2012/07/gcm-php-push-server.html ). Se não funcionar volte ae. Abraço
Responder
Alann Jaksnon (1) (0)
06/04/2015
Consegui resolver... Como a chamada do google é um https, eu acrescentei estas 2 linhas ao curl e funcionou tanto no server quanto no localhost...
// Avoids problem with https certificate
curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false);
Você deveria adicionar estas linhas no seu projeto para que outros não tenham o mesmo problema. Obrigado pelas dicas e pelo post! Abraço...
Responder
Vinícius Thiengo (0) (0)
07/04/2015
Show de bola Alann, vou adicionar essas duas linhas agora mesmo. Vlw, abraço
Responder
17/03/2015
Olá Thiengo, a aplicação está funcionando normal. Está retornando o ID, ele mostra o registrer ID na tela só que não registra no BD. Em qual arquivo PHP eu configuro a conexão com o BD. É no arquivo Database.php ou é em outra?

Tem outra coisa também, na primeira vez que rodo a aplicação printa o id na tela, mas na segunda fica tudo branco. Isto é normal? Tenho que desinstalar e instalar a aplicação?

Preciso fazer isto funcionar rápido, me ajude.
Responder
Vinícius Thiengo (1) (0)
17/03/2015
Fala Felipe, blz?
É no arquivo Database.php mesmo que vc configura o bd, mas verifique se não está tendo erro com os superglobais $_GET ou $_POST, teve alguns seguidores que tiveram problemas com esses por não utilizarem o correto (ou $_GET ou $_POST). Se não me engano, na APP de exemplo eu coloquei para enviar apenas uma vez, depois salvo no SharedPreferences e envio novamente somente se o reg id for alterado (que pode acontecer, mesmo sendo mt dificil). Essa lógica é recomendada para ter a necessidade de enviar o mesmo reg id toda vez que o user abre a APP. Lembrando que se estiver utilizando um servidor localhost vc terá de ajustar sua URL com o ip de sua máquina (ipconfig no cmd vai lhe dar essa informação). Abraço
Responder
17/03/2015
Opa valeu pela rapidez, então estou usando um servidor mesmo, testei a conexão com mysql_connect() porém ele não está salvando no BD. Estou usando o mysql  com um campo id int 6 e outro chamado registration_id do tipo long text. O id está como auto incremente e é primário.

O ip do servidor estou usando aquele de teste 0.0.0.0/0 (acho que era assim se não me engano)
Responder
Vinícius Thiengo (1) (0)
17/03/2015
Ok, agora somente verifique se os dados estão chegando no servidor Web, pode salvar em um arquivo.txt para saber se o problema está ou não no bd ou nas superglobais $_GET, $POST. Abraço
Responder
17/03/2015
Então, estou pegando por POST, pois tanto o java tanto o PHP é o mesmo do site, fiz download e mudei o Sender_ID, o HttpPost httpPost = new HttpPost("link do ctrl gcm.php");

e lá no CTRL GCM mudei o _GOOGLE_API_KEY__

Acho que a conexão está correta, pois fuincionou com a função mysql_connect(); Eu apenas mudei lá no Database.php o host, database, user e o password.

Não faço ideia do que seja o erro.
Responder
17/03/2015
Thiengo, eu testei aqui e o servidor realmente não está reconhecendo como POST, mas está enviando para o servidor.
package br.exemplogcm.util;

import java.io.IOException;
import java.util.ArrayList;

import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;

public class HttpConnectionUtil {
public static String sendRegistrationIdToBackend(String regId){
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost("meulink/ctrl/CtrlGcm.php");
String answer = "";

try{
ArrayList valores = new ArrayList();
valores.add(new BasicNameValuePair("method", "save-gcm-registration-id"));
valores.add(new BasicNameValuePair("reg-id", regId));

httpPost.setEntity(new UrlEncodedFormEntity(valores));
HttpResponse resposta = httpClient.execute(httpPost);
answer = EntityUtils.toString(resposta.getEntity());
}
catch(NumberFormatException e){ e.printStackTrace(); }
catch(NullPointerException e){ e.printStackTrace(); }
catch(ClientProtocolException e){ e.printStackTrace(); }
catch(IOException e){ e.printStackTrace(); }
return(answer);
}
}
 
O servidor php não está reconhecendo o POST if(preg_match('/^(save-gcm-registration-id){1}$/', $_POST['method'])){ } Só não sei como resolve, pois está como POST. Era para funcionar não?
Responder
17/03/2015
Muito Obrigado Thiengo, já consegui resolver o problema. O problema era a falta do http://www. antes do arquivo e no BD era erro do nome do BD.
Responder
Vinícius Thiengo (0) (0)
18/03/2015
Show de bola Felipe, abraço
Responder
Cesar Balzer (0) (0)
11/01/2015
Ola blz Vinicius
Eu tenho meus apps rodando conectados no meu localhost, ele envia as mensagens normalmente, quando eu coloco a url do meu site, ele nao envia mais e me mostra o 401 Unauthorized, ja criei uma chave com o ip do meu servidor online, mas mesmo assim nao envia, vc ja teve algum problema parecido ou sabe de alguma coisa pra me ajudar?
Obrigado e um abraçø!!
Responder
Vinícius Thiengo (0) (0)
11/01/2015
Fala Cesar, blz sim.
Dê uma olhada nesse post do stackoverflow (http://stackoverflow.com/questions/12619759/google-gcm-server-returns-unauthorized-error-401 ), o problema é o mesmo que o seu, verifica se está utilizando o correto IP de seu servidor. Abraço
Responder
Cesar Balzer (0) (0)
11/01/2015
Esta certo o ip Vinicius, dei um ping pra sabe o ip, ta pingando normal. Criei a chave pra esse ip mesmo no Server Key, mas mesmo assim não esta funcionando.
Responder
Vinícius Thiengo (0) (0)
12/01/2015
Responder
18/03/2015
encripter.com
ip: 185.28.21.53

p.s.: nao sou a mesma pessoa que iniciou a dúvida, mas estou exatamente com o mesmo problema
Responder
18/03/2015
cara, retirei o ip e deu certo? estou correndo alguma vulnerabilidade?
Responder
Vinícius Thiengo (0) (0)
19/03/2015
Fala André, blz?
Até onde sei não. Abraço
Responder
18/11/2014
Boa noite Cara,
Gostaria de tirar uma dúvida.
Mas antes gostaria de dar os parabéns pelo tutorial.. Excelente qualidade e atenção com as pessoas que estão querendo aprender a usar o gcm. Porém mesmo seguindo o seu tutorial me deparei com um erro interessante, eu não estou conseguindo ver o meu id na tela assim que eu abro o app pela primeira vez, consigo fazer tudo.. Mando uma mensagem pelo browser tudo normalmente, mas não estou conseguindo visualizar ele assim que eu abro pela primeira vez executo (limpo o DB, desinstalo o app, reinstalo e executo). Você poderia me ajudar quanto a isso?..

Obrigado pela atenção
Responder
Vinícius Thiengo (0) (0)
19/11/2014
Fala Igor, blz?
Veja se entendi, vc consegue pegar id do GCM em seu APP instalado no device, consegue enviar ao servidor e gravar, consegue enviar a mensagem do servidor para seu APP em seu device via GCM, porém vc não consegue visualizar o id na primeira vez que utiliza a APP, é isso? Ou vc não consegue pegar o id na primeira vez que entra na APP? Se for a ultima opção verifica no LogCat se tem alguma exception ocorrendo e sendo tratada (se estiver sendo tratada a APP não para, ela continua sem problemas fatais, somente de execução no caminho certo). Se for a primeira opção verifique se vc está printando o ID em algum lugar (TextView, LogCat)... se não for nenhuma das duas volte ae e explique mais detalhadamente. Abraço
Responder
Jhosef (0) (0)
03/11/2014
Boa tarde Thiengo,

Segui os passos do vídeo e estou com o seguinte problema ao tentar enviar uma mensagem pro celular.

"Unauthorized

Error 401"

E é o mesmo script!!!
Responder
Vinícius Thiengo (0) (0)
04/11/2014
Fala Jhosef, blz?
Provavelmente sim, faz o seguinte, baixa o projeto que está disponível aqui no post (botão de download acima de "Recomendado"), altere o nome do pacote e crie a chave no Console do Google, chave com esse novo nome de pacote e tente rodar (atualize o número de projeto do Console do Google na APP tb), vê se roda assim, pois algumas vezes alguns seguidores do blog vão construindo pelo vídeo e acabam deixando passar algo, depois fala se deu para pegar o erro. Abraço
Responder
Jhosef (1) (0)
04/11/2014
Thiengo, resolvi removendo o IP do Server Key, deixei sem nenhum IP e funcionou, não sei pq, mas o IP do servidor que eu estou usando não está aceitando.
Responder
Emanuel (0) (0)
04/10/2014
Oi Thiengo, tudo blz? Cara o que eu quero te perguntar não tem muito haver com o conteúdo do seu blog, mas eu ja estou tão desesperado q estou perguntando em tudo que é forum e blog bons relacionado a programação rs. É o seguinte cara, eu estou fazendo uma busca no banco de dados usando PHP e simplesmente o "while" não funciona, vc sabe me dizer o por que e se isso ja aconteceu com vc? olha só o codigo pra vc entender melhor

$sql = " SELECT 'Id' FROM 'users' where username IN ( 'fabio', 'valdir', 'vitor', 'samara') " ;

$result = mysql_query($sql);

while ($row = mysql_fetch_Object($resultToGroup))
{
     $IDs = $row->Id;

              }

Ai o que acontece é o seguinte, ele só me retorna o primeiro resultado o primeiro "id" da lista é como se o meu while não existisse o que sera q pode ser? Será que o PHP bugou?  se poder por favor me ajude ficarei muito grato!
Responder
Vinícius Thiengo (2) (0)
05/10/2014
Fala Emanuel, blz?
Vc testou sua SQL direto no bd para ver se ela retorna mais do que um resultado? Se ela continuar retornando apenas um resultado então é isso, de acordo com sua clausula where é apenas um resultado mesmo. Mas o que pude notar é sua variavel $IDs, no final da iteração no loop while ela sempre terá apenas um valor, ela teria de ser um array e então ir colocando os ids nas posições, como o exemplo abaixo:

$sql = " SELECT 'Id' FROM 'users' where username IN ( 'fabio', 'valdir', 'vitor', 'samara') " ;
$result = mysql_query($sql);
$IDs = array();
while ($row = mysql_fetch_Object($resultToGroup)){
$IDs[] = $row->Id;
}

Ve se roda assim (e não esqueça de testar sua sql direto no bd antes). Abraço
Responder
Emanuel (0) (0)
06/10/2014
Aêêê cara agora funcionou!! :D, obrigado msm, eu já estava a 1 semana tentando resolver isso, tava desesperado, já tinha perguntado em uma porrada de fóruns e ninguém conseguiu me dar uma solução, agora com sua dica do array funcionouuuu uhuu :D, valeu msm veei, vc é muitooo fera!!

E aa, pelo que eu fiquei sabendo as funções mysql_* estão depreciadas, sabe me dizer se isso procede mesmo? Valeu cara obrigado msm!
Responder
Vinícius Thiengo (1) (0)
06/10/2014
Show de bola!
Sobre as funções mysql_*, sim, elas estão depreciadas, utilize as mysqli*. Abraço
Responder
wiliam (0) (0)
01/10/2014
Oi Thiengo tudo bom? Cara eu queria saber se vc sabe uma forma de fazer um layout tipo o layout dos anúncios do adsense onde os nomes ficam passando? tipo, no layout fica a foto da empresa do lado e  aparece o nome da empresa ai depois sai e aparece uma descrição da empresa ai depois sai e aparece preços, bem assim, Você sabe como fazer isso? Desd já obrigado seus videos são ótimos e seu blog ta me ajudando muito!
Responder
Vinícius Thiengo (1) (0)
01/10/2014
Fala Willian, blz?
Tem como sim, uma solução pode ser utilizando o ObjectAnimator junto com um temporizador (feito na mão ou utilizando o CountDownTimer) além dos layouts personalizados que aparecerão na transação (ImageView, TextView, LinearLayout e por ai vai). Então essa foi a ideia que tive, mas tem várias soluções para isso... a parte não tranquila é que vc terá de trabalhar a lógica no temporizador para fazer as transições corretamente. Abraço
Responder
Luis Ricardo (0) (0)
01/10/2014
Thiengo parabens pelos post.
Cara o meu só funciona no emulador , no meu celular nao chega a notificação , esta dando que o device token esta expirado . O que pode ser?
Responder
Vinícius Thiengo (0) (0)
01/10/2014
Respondido no comentário do Facebook.
Responder
30/09/2014
parabéns pelo video, vc poderia fazer um exemplo com django?
Responder
Vinícius Thiengo (1) (0)
30/09/2014
Fala Peterson, blz?
Então vou dar uma olhada nesse django, ainda não o conheço. Abraço
Responder