Ricevere notifiche push potenziate

Puoi allegare file di immagini alle notifiche Android. L’aggiunta di componenti visivi può aumentare notevolmente il coinvolgimento degli utenti con le notifiche push.

Gestire i messaggi push potenziati in ingresso (FCM)

Se l’app è in primo piano, il messaggio push sarà gestito dall’app che estende la classe FirebaseMessagingService ed è dichiarato nel file manifesto come segue:

<service
    android:name=".MyFirebaseMessagingService"
    android:exported="false">
    <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT" />
    </intent-filter>
</service>
IMPORTANTE

La classe che contiene l’implementazione onMessageReceived() gestisce i dati ricevuti.

Se il messaggio push contiene un URL multimediale, questo sarà disponibile nel parametro RemoteMessage che viene passato alla funzione onMessageReceived(). La chiave da utilizzare è attachment-url, come mostrato nel seguente esempio di codice:

public class MyFirebaseMessagingService extends FirebaseMessagingService {
        @Override
        public void onMessageReceived(RemoteMessage remoteMessage) {
      Log.d("Remote Message", "RemoteMessage: " + remoteMessage.toString());
            // Check if message contains a data payload.
            if (remoteMessage.getData().size() > 0) {
                Log.d("Remote Message", "RemoteMessage: " + remoteMessage.getData());
                sendNotification(remoteMessage);
            }
    }
 
private void sendNotification(RemoteMessage message) {
        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);

     String channelId = getString(R.string.default_notification_channel_id);
     Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
     NotificationCompat.Builder notificationBuilder =
                new NotificationCompat.Builder(this, channelId)
                        .setSmallIcon(R.drawable.ic_stat_ic_notification)
                        .setContentTitle(getString(R.string.fcm_message))
                        .setContentText(message.getData().get("body"))
                        .setAutoCancel(true)
                        .setSound(defaultSoundUri)
                        .setContentIntent(pendingIntent);
  
    //Handle image url if present in the push message 
        String attachmentUrl = message.getData().get("attachment-url");
  
    if (attachmentUrl != null) { 
    Bitmap image = getBitmapFromURL(attachmentUrl); 
    if (image != null) { 
      notificationBuilder.setStyle(new        NotificationCompat.BigPictureStyle().bigPicture(image)); 
        } 
        } 

     NotificationManager notificationManager =
              (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

     // Since android Oreo notification channel is needed.
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        NotificationChannel channel = new NotificationChannel(channelId,
                    "Channel human readable title",
                    NotificationManager.IMPORTANCE_DEFAULT);
            notificationManager.createNotificationChannel(channel);
     }

     notificationManager.notify(0 /* ID of notification */, notificationBuilder.build());
    }
}
IMPORTANTE

Quando si imposta NotificationCompat.BigPictureStyle, è possibile che le immagini di grandi dimensioni non vengano visualizzate. Per fare in modo che siano sempre visualizzate, imposta il parametro nativo Notification.BigPictureStyle.

Esempio di notifiche push potenziate

Esempio di notifica push potenziata con un’immagine:

Per ulteriori informazioni sulle notifiche push potenziate con Android, vedi Coinvolgere con le notifiche potenziate.

In questa pagina