tiagobarreto

Implementando Push Notifications com GCM

Introdução

tiagobarreto

Analista de Sistemas residente em Fortaleza com mais de 10 anos de experiência profissional na área de Tecnologia da Informação atuando em pesquisa & desenvolvimento, inovação e consultoria.




RECENTES

Descobrindo as features do Elixir e Phoenix 04th February, 2016

Vamos criar uma simples aplicação em Angular JS 11th May, 2014

Back-end

Implementando Push Notifications com GCM

5 de outubro de 2013.

O Google Cloud Messaging (GCM) era a principal solução para enviar push notifications em dispositivos Android. Push notifications são uma ferramenta essencial para manter os usuários engajados, oferecendo atualizações em tempo real diretamente no dispositivo do usuário.

Neste artigo, abordaremos como configurar o GCM e implementá-lo em um aplicativo Android, fornecendo um guia prático para enviar e receber notificações.

O que é Google Cloud Messaging (GCM)?

GCM é um serviço oferecido pelo Google que permite que os desenvolvedores enviem mensagens de até 4 KB para aplicativos em dispositivos Android. Ele oferece um canal confiável e eficiente para entregar notificações push.

Benefícios do GCM:

  • Mensagens em tempo real: Notificações são entregues instantaneamente.
  • Consumo eficiente de bateria: O GCM otimiza a entrega para reduzir o consumo de energia do dispositivo.
  • Flexibilidade: Permite o envio de mensagens tanto para dispositivos individuais quanto para grupos de dispositivos.

Configurando o Google Cloud Messaging

Passo 1: Criar um projeto no Google Cloud Console

  1. Acesse o Google Cloud Console.
  2. Crie um novo projeto e dê um nome, como “GCM Push Notifications”.
  3. Vá para “APIs e serviços” e ative a Google Cloud Messaging API.
  4. Gere uma Server API Key para autenticar o servidor com o GCM.

Passo 2: Configurar o projeto Android

  1. No arquivo AndroidManifest.xml, adicione as permissões necessárias:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
  1. Declare o serviço GCM e um receptor de mensagens:
<application>
    <receiver
        android:name="com.google.android.gms.gcm.GcmReceiver"
        android:exported="true"
        android:permission="com.google.android.c2dm.permission.SEND" >
        <intent-filter>
            <action android:name="com.google.android.c2dm.intent.RECEIVE" />
            <category android:name="com.seuprojeto.app" />
        </intent-filter>
    </receiver>

    <service
        android:name="com.seuprojeto.GCMListenerService"
        android:exported="false">
        <intent-filter>
            <action android:name="com.google.android.c2dm.intent.RECEIVE" />
        </intent-filter>
    </service>
</application>
  1. Adicione o arquivo de configuração do Firebase (google-services.json) ao diretório app/ do seu projeto.

Passo 3: Criar o serviço GCM no Android

  1. Crie uma classe para gerenciar as mensagens recebidas do GCM:
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import androidx.core.app.NotificationCompat;
import com.google.android.gms.gcm.GcmListenerService;

public class MyGCMListenerService extends GcmListenerService {

    @Override
    public void onMessageReceived(String from, Bundle data) {
        String message = data.getString("message");
        Log.d("GCM", "Mensagem recebida: " + message);

        // Exibir a notificação
        showNotification(message);
    }

    private void showNotification(String message) {
        NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
                .setSmallIcon(R.mipmap.ic_launcher)
                .setContentTitle("Nova Notificação")
                .setContentText(message)
                .setAutoCancel(true);

        Intent intent = new Intent(this, MainActivity.class);
        PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
        builder.setContentIntent(pendingIntent);

        NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
        manager.notify(0, builder.build());
    }
}
  1. Configure o cliente GCM no MainActivity para registrar o dispositivo:
import android.os.Bundle;
import android.util.Log;
import androidx.appcompat.app.AppCompatActivity;
import com.google.android.gms.gcm.GoogleCloudMessaging;

public class MainActivity extends AppCompatActivity {

    private static final String TAG = "GCM";
    private static final String SENDER_ID = "SEU_SENDER_ID";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        new Thread(() -> {
            try {
                GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(this);
                String regId = gcm.register(SENDER_ID);
                Log.d(TAG, "Dispositivo registrado. ID: " + regId);
                // Enviar regId ao servidor
            } catch (Exception e) {
                Log.e(TAG, "Erro ao registrar dispositivo", e);
            }
        }).start();
    }
}

Testando o GCM

  1. Envie uma mensagem usando a API do GCM com uma ferramenta como curl:
$ curl -X POST -H "Authorization: key=SERVER_API_KEY" \
       -H "Content-Type: application/json" \
       -d '{
            "to": "DEVICE_REGISTRATION_ID",
            "data": {
                "message": "Olá, esta é uma notificação push!"
            }
          }' \
       https://fcm.googleapis.com/fcm/send
  1. A mensagem será exibida no dispositivo Android registrado.

Conclusão

Com o Google Cloud Messaging, enviar notificações push para dispositivos Android se torna um processo eficiente e confiável. Embora o GCM tenha sido substituído pelo Firebase Cloud Messaging (FCM) nos anos seguintes, ele foi essencial em 2013 para conectar desenvolvedores e usuários em tempo real. Experimente integrá-lo em seus aplicativos e aproveite o poder das notificações push para engajar seus usuários.

comments powered by Disqus