Notificações Push no Android
Defina o Token do Firebase no SDK do Grouplink
Após uma configuração regular do FCM no seu projeto, recupere o token do Firebase e defina-o com o método setFirebaseToken(Context context, String token) da classe Grouplink.
FirebaseMessaging.getInstance().getToken()
.addOnCompleteListener(new OnCompleteListener<String>() {
@Override
public void onComplete(@NonNull Task<String> task) {
if (!task.isSuccessful()) {
Log.w(TAG, "Falha ao buscar o token de registro do FCM", task.getException());
return;
}
// Obtenha o novo token de registro do FCM
String token = task.getResult();
Context context = MainActivity.this;
// Log e toast
String msg = getString(R.string.msg_token_fmt, token);
Log.d(TAG, msg);
// Defina o Token do Firebase no SDK do Grouplink.
Grouplink.setFirebaseToken(context, token);
Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();
}
});
O Token do Firebase deve ser monitorado, pois ele muda periodicamente. Faça o mesmo após um token ser renovado.
/**
* Existem dois cenários quando onNewToken é chamado:
* 1) Quando um novo token é gerado na inicialização do aplicativo
* 2) Sempre que um token existente é alterado
* No caso #2, existem três cenários quando o token existente é alterado:
* A) O aplicativo é restaurado para um novo dispositivo
* B) O usuário desinstala/reinstala o aplicativo
* C) O usuário limpa os dados do aplicativo
*/
override fun onNewToken(token: String) {
Log.d(TAG, "Token atualizado: " + token)
// Defina o Token do Firebase no SDK do Grouplink.
Grouplink.setFirebaseToken(context, token)
super.onNewToken(token)
}
Configurando a recepção de RemoteMessages do Firebase
Para configurar Notificações Regulares do Grouplink em foreground, é necessário configurar a recepção de notificações do FCM.
1. Obtenha a Notificação de dentro do RemoteMessage.
Implementação completa da extensão do FirebaseMessagingService:
import android.util.Log
import com.google.firebase.messaging.FirebaseMessagingService
import com.google.firebase.messaging.RemoteMessage
import com.grouplink.marketdemo.notification.NotificationManager
import com.grouplink.marketdemo.notification.NotificationManager.Companion.createNotificationChannelVisible
import com.grouplinknetwork.GroupLink
import java.util.*
class FirebaseService : FirebaseMessagingService() {
override fun onMessageReceived(message: RemoteMessage) {
/*
* Para mostrar uma notificação com o aplicativo em foreground, por favor sobrescreva
* este método e construa uma nova Notificação a partir do RemoteMessage
* recebido.
*/
super.onMessageReceived(message)
}
override fun onNewToken(token: String) {
GroupLink.setFirebaseToken(applicationContext, token)
// Crie o canal de notificação o mais rápido possível,
// para poder receber notificações.
createNotificationChannelVisible(this)
super.onNewToken(token)
}
}
Adicionando meta-dados para Canal de Notificação Personalizado
Para configurar um Canal de Notificação personalizado para notificações do Firebase, adicione as seguintes linhas:
<application>
.
.
.
<meta-data
android:name="com.google.firebase.messaging.default_notification_channel_id"
android:value="@string/default_notification_channel_id"/>
<meta-data
android:name="com.google.firebase.messaging.default_notification_icon"
android:resource="@drawable/ic_gl_alarm" />
<meta-data
android:name="com.google.firebase.messaging.default_notification_color"
android:resource="@color/gl_blue" />
</application>