Comment afficher les notifications sur Android? setPriority(Notification.PRIORITY_MAX)
comme Notification.PRIORITY_MAX est obsolète, quelle est l'alternative?
NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
.setContentIntent(pendingIntent)
.setSmallIcon(R.mipmap.ic_launcher)
.setContentTitle("Notification Title")
.setContentText("Notification Text")
.setPriority(Notification.PRIORITY_MAX)
.setAutoCancel(true);
Dans Android O, les canaux Notification ont été introduits. En particulier, vous définissez Channel avec constructor . Dans la documentation, vous pouvez voir la notion d’importance et c’est ce qui remplace la priorité.
PRIORITY_MAX Cette constante est déconseillée dans l'API de niveau 26. Utilisez IMPORTANCE_HIGH à la place.
PRIORITY_MAX
int PRIORITY_MAX
Cette constante est obsolète dans les API de niveau 26 . Utilisez à la place IMPORTANCE_HIGH.
Priorité maximale, pour les éléments les plus importants de votre application qui nécessitent l'attention ou la saisie de l'utilisateur.
Valeur constante: 2 (0x00000002)
// create ios channel
NotificationChannel iosChannel = new NotificationChannel(IOS_CHANNEL_ID,
IOS_CHANNEL_NAME, NotificationManager.IMPORTANCE_HIGH);
iosChannel.enableLights(true);
iosChannel.enableVibration(true);
iosChannel.setLightColor(Color.GRAY);
iosChannel.setLockscreenVisibility(Notification.VISIBILITY_PUBLIC);
getManager().createNotificationChannel(iosChannel);
https://developer.Android.com/reference/Android/app/Notification.html#PRIORITY_MIN
À partir d'Android O (API 26), la priorité au niveau de la notification est obsolète. Elle a été remplacée par une importance au niveau du canal et les notifications doivent maintenant être placées dans un canal spécifique.
Si vous utilisez Android O ou une version ultérieure, vous devez créer un canal et définir son importance.
NotificationChannel channel = new NotificationChannel(CHANNEL_ID,
CHANNEL_NAME, NotificationManager.IMPORTANCE_HIGH);
Si vous devez maintenir la compatibilité avec les versions antérieures de la version Android, vous devez continuer à définir la priorité au niveau de la notification.
NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
...
.setPriority(Notification.PRIORITY_MAX)
...
Malheureusement, il génère l'avertissement concernant la dépréciation de PRIORITY_MAX.
Cela peut être évité en utilisant la version NotificationCompat de la constante PRIORITY_MAX.
NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
...
.setPriority(NotificationCompat.PRIORITY_MAX)
...
Seulement trois étapes à suivre pour la notification Android O
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this, "CHANNEL_ID")
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
CharSequence name = "Hello";// The user-visible name of the channel.
int importance = NotificationManager.IMPORTANCE_HIGH;
NotificationChannel mChannel = new NotificationChannel(CHANNEL_ID, name, importance);
mNotificationManager.createNotificationChannel(mChannel);
}
mNotificationManager.notify(notificationId, notificationBuilder.build());
Code de travail pour toutes les versions Android pour définir la priorité maximale.
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
String NOTIFICATION_CHANNEL_ID = "my_channel_id_01";
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationChannel notificationChannel = new NotificationChannel(NOTIFICATION_CHANNEL_ID, "My Notifications", NotificationManager.IMPORTANCE_HIGH);
// Configure the notification channel.
notificationChannel.setDescription("Channel description");
notificationChannel.enableLights(true);
notificationChannel.setLightColor(Color.RED);
notificationChannel.setVibrationPattern(new long[]{0, 1000, 500, 1000});
notificationChannel.enableVibration(true);
notificationManager.createNotificationChannel(notificationChannel);
}
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this, NOTIFICATION_CHANNEL_ID);
notificationBuilder.setAutoCancel(true)
.setDefaults(Notification.DEFAULT_ALL)
.setWhen(System.currentTimeMillis())
.setSmallIcon(R.drawable.ic_launcher)
.setTicker("Hearty365")
.setPriority(Notification.IMPORTANCE_HIGH)
.setContentTitle("Default notification")
.setContentText("Lorem ipsum dolor sit amet, consectetur adipiscing elit.")
.setContentInfo("Info");
notificationManager.notify(/*notification id*/1, notificationBuilder.build());