Notification Permission est l’autorisation nécessaire pour qu’une application envoie des notifications push et des notifications locales à l’utilisateur. À partir d’Android 13 et iOS 12, les applications doivent demander cette autorisation à l’exécution via une boîte de dialogue système. Selon Android Developers, 2024, sans le consentement explicite de l’utilisateur, l’application ne peut pas afficher de notifications sur les appareils fonctionnant sous Android 13 et versions ultérieures.
Points clés
Notification Permission est une autorisation système qui régule la capacité d’une application à envoyer des notifications à l’utilisateur. Avant Android 13, toutes les applications pouvaient afficher des notifications sans demande — il suffisait de déclarer l’autorisation dans le manifeste. Cependant, avec l’augmentation du spam et des notifications intrusives, Google a introduit une demande obligatoire à l’exécution, similaire à iOS.
Sur iOS, l’autorisation de notification est obligatoire depuis iOS 8, et à partir d’iOS 12, les notifications provisoires sont apparues — des notifications silencieuses délivrées sans son et affichées dans le Centre de notifications sans demande explicite. Les notifications provisoires permettent au développeur de montrer à l’utilisateur la valeur des notifications avant de demander l’autorisation complète.
Selon Localytics (2024), 61 % des utilisateurs iOS et 55 % des utilisateurs Android acceptent de recevoir des notifications push après une demande. Le taux d’approbation dépend directement du contexte de la demande : les applications qui demandent l’autorisation après la première interaction précieuse obtiennent 40 % d’approbations de plus que celles qui la demandent au premier lancement.
L’évolution des autorisations de notification montre comment les plateformes ont progressivement restreint l’accès des applications à ce canal de communication. Comprendre cette évolution aide le développeur à gérer correctement les différentes versions du système d’exploitation.
Avant Android 13 (2022), n’importe quelle application pouvait afficher des notifications sans le consentement de l’utilisateur. Android 8.0 (2017) a introduit les canaux de notification, Android 12 (2021) a ajouté le blocage automatique des notifications intrusives, et enfin Android 13 a rendu obligatoire la demande de POST_NOTIFICATIONS à l’exécution. Pour les applications dont le targetSdkVersion est inférieur à 33, le système accorde automatiquement l’autorisation, mais Google Play exige la mise à jour du targetSdkVersion vers 33+ depuis août 2023.
iOS 8 (2014) a introduit la demande d’autorisation obligatoire via UIUserNotificationSettings. iOS 10 (2016) a présenté UNUserNotificationCenter avec la prise en charge des notifications enrichies. iOS 12 (2018) a ajouté les notifications provisoires et les notifications groupées. iOS 15 (2021) a introduit le mode Focus, qui peut bloquer les notifications indépendamment de l’autorisation de l’application. App Tracking Transparency (iOS 14.5) n’est pas lié aux notifications mais a également influencé la culture générale des demandes d’autorisation.
Actuellement, les deux plateformes exigent une demande d’autorisation Notification Permission à l’exécution. Le développeur ne peut plus compter sur l’activation automatique des notifications. L’utilisateur a un contrôle total sur les applications qui peuvent le notifier. Les canaux de notification sur Android et les catégories de notification sur iOS permettent à l’utilisateur d’affiner les types d’alertes qu’il reçoit.
Notification Permission sur Android est activée via l’autorisation POST_NOTIFICATIONS déclarée dans le manifeste, suivie d’une demande à l’exécution pour Android 13+.
Pour Android 13+, vous devez déclarer l’autorisation POST_NOTIFICATIONS dans AndroidManifest.xml. Pour la rétrocompatibilité avec Android 12 et versions antérieures, l’autorisation est automatiquement accordée par le système — aucune action supplémentaire n’est requise.
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
La demande d’autorisation POST_NOTIFICATIONS s’effectue via l’Activity Result API. Il est important de vérifier la version du SDK : sur Android 12 et versions antérieures, aucune demande n’est nécessaire — l’autorisation est considérée comme automatiquement accordée.
private val notificationPermissionLauncher =
registerForActivityResult(ActivityResultContracts.RequestPermission()) { granted ->
if (granted) {
createNotificationChannel()
showPushNotification()
} else {
logPermissionDenied()
}
}
fun requestNotificationAccess() {
if (Build.version.SDK_INT <= Build.VERSION_CODES.S_V2) {
// Android 12 et versions antérieures — autorisation accordée automatiquement
showNotification()
return
}
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.POST_NOTIFICATIONS) == PackageManager.PERMISSION_GRANTED) {
showNotification()
} else {
notificationPermissionLauncher.launch(Manifest.permission.POST_NOTIFICATIONS)
}
}
Sur Android 8.0+, l’application doit créer un canal de notification via NotificationChannel avant d’envoyer la première notification. Le canal a un niveau d’importance de IMPORTANCE_NONE à IMPORTANCE_HIGH, qui détermine si la notification sera affichée avec du son et sous forme de bannière. Si l’utilisateur a désactivé les notifications pour l’application, les nouveaux canaux n’auront aucun effet jusqu’à leur réactivation dans les paramètres. Il est recommandé de créer des canaux séparés pour différents types d’alertes : messages, publicités, événements système.
private fun createNotificationChannel() {
val channel = NotificationChannel(
CHANNEL_ID_MESSAGES,
"Messages",
NotificationManager.IMPORTANCE_HIGH
).apply {
description = "Notifications de nouveaux messages"
enableVibration = true
}
val manager = getSystemService(NotificationManager::class.java)
manager.createNotificationChannel(channel)
}
Notification Permission sur iOS est demandée via UNUserNotificationCenter. Apple recommande une approche en deux étapes : d’abord demander les notifications provisoires, puis, après avoir démontré la valeur, demander l’autorisation complète.
Les notifications provisoires sont des notifications silencieuses qui apparaissent dans le Centre de notifications sans son ni bannière. Elles ne nécessitent pas le consentement explicite de l’utilisateur et permettent à l’application de démontrer la valeur des notifications avant une demande complète. Après avoir reçu plusieurs notifications provisoires, l’utilisateur peut activer les notifications complètes via le menu dans la notification elle-même.
import UserNotifications
func requestNotificationPermission() {
let center = UNUserNotificationCenter.current()
center.requestAuthorization(options: [.alert, .badge, .sound]) { granted, error in
if let error = error {
print("Notification error: \(error.localizedDescription)")
return
}
if granted {
registerForRemoteNotifications()
} else {
handleDeniedPermission()
}
}
}
func requestProvisionalOnly() {
let center = UNUserNotificationCenter.current()
center.requestAuthorization(options: [.provisional, .alert, .badge, .sound]) { granted, error in
// Provisoire — l’utilisateur ne voit pas la boîte de dialogue
// Les notifications arrivent sans son dans le Centre de notifications
registerForRemoteNotifications()
}
}
Le statut actuel de Notification Permission sur iOS peut être obtenu via UNUserNotificationCenter.current().getNotificationSettings. Le statut .authorized, .denied, .provisional ou .notDetermined permet à l’application de choisir le comportement approprié. Après le premier refus, la boîte de dialogue système ne s’affiche plus — il faut rediriger l’utilisateur vers les Réglages via UIApplication.openSettingsURLString. Apple recommande également de gérer le statut .ephemeral (iOS 17+), qui fournit des notifications temporaires pour des scénarios spécifiques.
Les bonnes pratiques pour demander Notification Permission visent à augmenter le taux d’approbation et à réduire la perte d’utilisateurs. Une demande incorrecte peut non seulement priver l’application de la capacité d’envoyer des notifications, mais aussi entraîner la désinstallation de l’application.
L’anti-modèle le plus courant est de demander Notification Permission au premier lancement de l’application. L’utilisateur ne comprend pas encore la valeur de l’application et est très susceptible de refuser. Le moment optimal est après que l’utilisateur a effectué la première action précieuse : passé une commande, envoyé un message, s’est abonné à des mises à jour. Une demande post-valeur augmente le taux d’approbation à 65-75 %.
Avant la boîte de dialogue système, affichez votre propre écran avec des exemples de notifications que l’utilisateur recevra. Montrez une maquette d’une future notification avec texte et icône. Si l’utilisateur voit que les notifications seront utiles et non intrusives, il sera plus susceptible d’accepter. Un aperçu de notification sur l’écran de pré-autorisation est une technique efficace qui augmente le taux de conversion de 35 à 50 %.
Demander de manière proactive les notifications provisoires sur iOS permet de délivrer des notifications sans le consentement explicite de l’utilisateur. Si l’utilisateur voit la valeur de ces notifications, il peut activer les notifications complètes via le menu contextuel de la notification. Apple recommande cette approche pour les applications d’actualités, les applications météo et d’autres services où les notifications sont informatives et non transactionnelles. Selon Apple WWDC 2024, cette approche augmente le taux d’approbation complète de 20 à 30 %.
Foire aux questions
Après le refus, la boîte de dialogue système ne s’affiche plus. Le seul moyen d’activer les notifications est de rediriger l’utilisateur vers les paramètres système via Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS) sur Android ou UIApplication.openSettingsURLString sur iOS. Affichez un écran avec des instructions et un bouton pour continuer.
Sur Android 12 et versions antérieures, Notification Permission n’est pas requis — toutes les applications peuvent envoyer des notifications sans demande. Cependant, l’utilisateur peut désactiver les notifications à tout moment via les paramètres système. À partir d’Android 13, la demande à l’exécution est obligatoire pour targetSdkVersion 33+.
NotificationChannel est une catégorie de notification introduite dans Android 8.0. Chaque canal a un nom, une description, un niveau d’importance et un groupe. L’utilisateur peut désactiver des canaux individuels sans désactiver toutes les notifications de l’application. Par exemple, le canal « Nouveaux messages » et le canal « Mailings promotionnels » peuvent être configurés différemment.
Sur Android 13+, sans POST_NOTIFICATIONS, tout appel à NotificationManager.notify sera ignoré par le système. Sur iOS, sans l’autorisation UNUserNotificationCenter, les notifications ne sont pas délivrées. Exception : Provisional sur iOS (sans son, uniquement dans le Centre de notifications) et Android 12- (autorisation non requise).
Sur Android, utilisez NotificationManagerCompat.areNotificationsEnabled(). Sur iOS, appelez UNUserNotificationCenter.current().getNotificationSettings et vérifiez la propriété authorizationStatus. Pour Android, vérifiez également l’importance du canal : NotificationChannel.getImportance() ne doit pas être IMPORTANCE_NONE.
Résumé
Nous développerons une application mobile clé en main
IT Sectr crée des applications iOS et Android pour les startups et les entreprises depuis 2017. Nous vous conseillerons et vous proposerons la meilleure solution.
Lisez aussi