Ieri Google ha presentato a Google I/O il nuovo sistema di notifica basato sul nuovo Firebase. Ho provato questo nuovo FCM (Firebase Cloud Messaging) con l'esempio su Github.Icona di notifica con il nuovo sistema Firebase Cloud Messaging
L'icona della notifica è sempre la ic_launcher nonostante ho dichiarato una specifica drawable
Perché? Di seguito il codice ufficiale per la gestione del messaggio
public class AppFirebaseMessagingService extends FirebaseMessagingService {
/**
* Called when message is received.
*
* @param remoteMessage Object representing the message received from Firebase Cloud Messaging.
*/
// [START receive_message]
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
// If the application is in the foreground handle both data and notification messages here.
// Also if you intend on generating your own notifications as a result of a received FCM
// message, here is where that should be initiated. See sendNotification method below.
sendNotification(remoteMessage);
}
// [END receive_message]
/**
* Create and show a simple notification containing the received FCM message.
*
* @param remoteMessage FCM RemoteMessage received.
*/
private void sendNotification(RemoteMessage remoteMessage) {
Intent intent = new Intent(this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent,
PendingIntent.FLAG_ONE_SHOT);
Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
// this is a my insertion looking for a solution
int icon = Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP ? R.drawable.myicon: R.mipmap.myicon;
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
.setSmallIcon(icon)
.setContentTitle(remoteMessage.getFrom())
.setContentText(remoteMessage.getNotification().getBody())
.setAutoCancel(true)
.setSound(defaultSoundUri)
.setContentIntent(pendingIntent);
NotificationManager notificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0 /* ID of notification */, notificationBuilder.build());
}
}
firebase non ha nulla a che fare con come si sta creando la notifica, si prega di fornire un'immagine come a quello che stai vedendo – tyczj
esatto. questo codice proviene direttamente da Firebase e il metodo sendNotification() è esattamente lo stesso per qualsiasi notifica. Questo codice funziona correttamente con GCM, ma con FCM no. rimane sempre ic_launcher, usando la nuova interfaccia web per inviare messaggi – marco
si imposta l'icona piccola ma non l'icona grande, a meno che non si stia inviando una push con il tag di notifica nel payload push che non ha nulla a che fare con FCM – tyczj