Push personnalisé au premier plan

Personnalisez la notification qui arrive pendant que votre app est ouverte

Lorsqu'une notification push arrive alors que votre app est ouverte, iOS vous laisse la main. Le SDK iOS Pushwoosh l'affiche sous forme de bannière animée à vos couleurs et dans vos polices, avec le matériau Liquid Glass d'Apple sur iOS 26.

Trois écrans d'iPhone de face, côte à côte, dans des apps différentes : une app d'actualité avec une bannière Liquid Glass à ses couleurs au-dessus d'un article, un jeu avec une bannière assortie à son univers au-dessus de l'écran de match, et une app bancaire avec une bannière de confirmation au-dessus de l'écran de virement

Plus de 80 000 entreprises nous font confiance pour développer leur engagement

Le format, en détail

Une notification push qui arrive alors que votre app est au premier plan, c’est à votre app de la gérer. iOS affichera sa bannière système standard par-dessus votre interface, ou rien du tout, et un message autour duquel vous avez construit tout un parcours apparaît sous forme d’habillage système gris. Le module PushwooshForegroundPush affiche ce même payload sous la forme d’une bannière qui vous appartient.

Liquid Glass (iOS 26)

Activez useLiquidView et la bannière est dessinée dans le matériau Liquid Glass d'Apple : elle s'intègre à iOS 26 au lieu de ressembler à un calque collé sur votre écran.

Une bannière standard (iOS 13 à 25)

En dessous d'iOS 26, le même appel affiche une bannière pleine avec votre dégradé et vos couleurs, et les toolchains Swift plus anciennes basculent sur un effet de flou. Une seule configuration couvre les trois cas.

Image et GIF

Titre, message, image et GIF animé, tous lus depuis le payload que la notification transporte déjà.

Animation, retour haptique et durée d'affichage

Une animation d'entrée, une disparition balls ou regularPush, un retour haptique à l'arrivée parmi sept niveaux, et une durée en secondes avant que la bannière ne disparaisse d'elle-même.

Ce que vous contrôlez

PropriétéCe qu'elle définitValeurs
useLiquidViewLe matériau Liquid Glass sur iOS 26Booléen, false par défaut
gradientColors, backgroundColorLa surface sur laquelle la bannière est dessinéeVos couleurs de marque
titlePushColor, messagePushColorLa couleur du texte des deux lignesVos couleurs de marque
titlePushFont, messagePushFontLes polices des deux lignesToute police embarquée dans votre app
usePushAnimationL'animation d'entréeBooléen, true par défaut
durationLa durée d'affichage avant disparitionSecondes
vibrationLe retour haptique déclenché à l'arrivéenone, light, medium, heavy, soft, rigid, notification
disappearedPushAnimationLa manière dont la bannière quitte l'écranballs ou regularPush
styleLa mise en page intégréestyle1, la seule disponible aujourd'hui
Propriété
1 / 9
useLiquidView
Ce qu'elle définit
Le matériau Liquid Glass sur iOS 26
Valeurs
Booléen, false par défaut
Propriété
2 / 9
gradientColors, backgroundColor
Ce qu'elle définit
La surface sur laquelle la bannière est dessinée
Valeurs
Vos couleurs de marque
Propriété
3 / 9
titlePushColor, messagePushColor
Ce qu'elle définit
La couleur du texte des deux lignes
Valeurs
Vos couleurs de marque
Propriété
4 / 9
titlePushFont, messagePushFont
Ce qu'elle définit
Les polices des deux lignes
Valeurs
Toute police embarquée dans votre app
Propriété
5 / 9
usePushAnimation
Ce qu'elle définit
L'animation d'entrée
Valeurs
Booléen, true par défaut
Propriété
6 / 9
duration
Ce qu'elle définit
La durée d'affichage avant disparition
Valeurs
Secondes
Propriété
7 / 9
vibration
Ce qu'elle définit
Le retour haptique déclenché à l'arrivée
Valeurs
none, light, medium, heavy, soft, rigid, notification
Propriété
8 / 9
disappearedPushAnimation
Ce qu'elle définit
La manière dont la bannière quitte l'écran
Valeurs
balls ou regularPush
Propriété
9 / 9
style
Ce qu'elle définit
La mise en page intégrée
Valeurs
style1, la seule disponible aujourd'hui

Où le régler

Un appel au lancement

foregroundNotificationWith(style:duration:vibration:disappearedPushAnimation:) dans didFinishLaunchingWithOptions, plus les propriétés d'apparence. Configuré une fois pour toute l'app.

Un appel à la réception

showForegroundPush(userInfo:) depuis votre callback PWMessagingDelegate.onMessageReceived affiche la bannière directement à partir du payload du message.

Un delegate pour le tap

PWForegroundPushDelegate.didTapForegroundPush(userInfo:) vous transmet le payload complet : un tap ouvre le deep link exactement là où la campagne le prévoyait.

Son rôle, au sein d’un parcours

Une notification, trois rendus

La bannière au premier plan est un mode d’affichage d’un message que vous envoyez déjà. Même segment, même déclencheur, même payload, même étape dans le même Customer Journey. Seul change ce que fait l’appareil à la réception.

App fermée, le message arrive comme une notification système ordinaire ou met à jour une Live Activity. App ouverte, le SDK affiche cette bannière. Lorsque le moment mérite un plein écran avec une offre ou un formulaire, le même parcours passe à un message in-app.

Une information tombe pendant que le lecteur lit un article

Un événement éditorial déclenche le parcours. Une notification silencieuse précharge l’article en arrière-plan, invisible pour le lecteur, et l’alerte suit une seconde plus tard.

Les lecteurs dont l’app est fermée voient la notification système sur leur écran verrouillé. Ceux qui sont déjà dans l’app voient la bannière propre au titre de presse glisser au-dessus de l’article qu’ils lisaient, vignette comprise, et un seul tap les emmène vers le nouvel article. La Message Inbox conserve l’alerte dans tous les cas.

Pour quels usages

La bannière ne s’affiche que lorsque l’utilisateur est dans votre app : sa valeur dépend donc de la densité en session, c’est-à-dire de la part de vos envois qui arrive sur un écran déjà ouvert. Les apps aux sessions longues en tirent le plus ; celles dont les messages arrivent sur un téléphone rangé dans une poche en tirent très peu.

MomentCe que dit le messagePourquoi la bannière convient
Médias et presse : une information tombe pendant la lectureLe verdict est tombéLe lecteur est déjà dans l'app, et la bannière système casserait le design propre au titre
Streaming : une sortie pendant un épisodeLa saison 3 est disponibleL'alerte peut porter le visuel de la série au lieu d'arriver en habillage système
Sport en direct : un but pendant que l'utilisateur regarde dans l'app1-0, 68e minuteL'utilisateur a ouvert l'app pour l'événement et le regarde quand la notification arrive
E-commerce et marketplaces : une baisse de prix pendant la navigationDe retour en stock dans votre tailleUne bannière stylée en plein défilement s'intègre à la boutique au lieu d'interrompre
Fintech : une confirmation pendant une opération in-appVirement envoyéUne confirmation à vos couleurs paraît native au moment même où l'utilisateur l'attend
Jeux mobiles : un événement ou une récompense pendant une partieÀ vous de jouer: Le raid commence dans 5 minAvec des sessions longues, la plupart des notifications arrivent en jeu, et une bannière assortie à l'univers s'intègre à l'interface
Apps de créateurs et d'abonnement : une nouveauté ou une relance d'essaiNouveau chez un artiste que vous suivezUne app soigneusement conçue ne devrait pas laisser ce moment au système, et le tap mène directement au paywall
Moment
1 / 7
Médias et presse : une information tombe pendant la lecture
Ce que dit le message
Le verdict est tombé
Pourquoi la bannière convient
Le lecteur est déjà dans l'app, et la bannière système casserait le design propre au titre
Moment
2 / 7
Streaming : une sortie pendant un épisode
Ce que dit le message
La saison 3 est disponible
Pourquoi la bannière convient
L'alerte peut porter le visuel de la série au lieu d'arriver en habillage système
Moment
3 / 7
Sport en direct : un but pendant que l'utilisateur regarde dans l'app
Ce que dit le message
1-0, 68e minute
Pourquoi la bannière convient
L'utilisateur a ouvert l'app pour l'événement et le regarde quand la notification arrive
Moment
4 / 7
E-commerce et marketplaces : une baisse de prix pendant la navigation
Ce que dit le message
De retour en stock dans votre taille
Pourquoi la bannière convient
Une bannière stylée en plein défilement s'intègre à la boutique au lieu d'interrompre
Moment
5 / 7
Fintech : une confirmation pendant une opération in-app
Ce que dit le message
Virement envoyé
Pourquoi la bannière convient
Une confirmation à vos couleurs paraît native au moment même où l'utilisateur l'attend
Moment
6 / 7
Jeux mobiles : un événement ou une récompense pendant une partie
Ce que dit le message
À vous de jouer: Le raid commence dans 5 min
Pourquoi la bannière convient
Avec des sessions longues, la plupart des notifications arrivent en jeu, et une bannière assortie à l'univers s'intègre à l'interface
Moment
7 / 7
Apps de créateurs et d'abonnement : une nouveauté ou une relance d'essai
Ce que dit le message
Nouveau chez un artiste que vous suivez
Pourquoi la bannière convient
Une app soigneusement conçue ne devrait pas laisser ce moment au système, et le tap mène directement au paywall

Quand une autre surface est plus adaptée

La bannière est l’échelon intermédiaire, lisible d’un coup d’œil, entre une simple alerte système et une prise de contrôle in-app en plein écran. Beaucoup de moments se situent d’un côté ou de l’autre.

  • Le moment arrive app fermée : un livreur à la porte, un changement de porte d’embarquement, une alerte de fraude. C’est le rôle d’une notification classique, d’un niveau d’interruption ou d’une Live Activity.
  • L’état est continu plutôt qu’instantané : une commande en cours, une course en route, un score en direct. C’est le rôle d’une Live Activity.
  • Le message nécessite un plein écran : une offre, un formulaire, un paywall. C’est le rôle d’un message in-app, plus riche et composé en no-code.
  • Vous voulez changer qui reçoit le message ou ce qu’il dit. Ce module change son apparence ; la portée relève des notifications push mobiles.
La bannière porte votre style. Les mots restent à écrire

50 notifications push dont vous pouvez vous inspirer, avec le texte et le visuel derrière chacune.

Voir les exemples

Couverture plateformes et technique

Ce module est propre à iOS. Android gère le comportement au premier plan via les canaux de notification, que le SDK Pushwoosh crée à partir du payload push au lieu que votre app les enregistre dans le code, et le web n’a pas de surface comparable. La dernière colonne indique ce qui dessine réellement la bannière, car l’essentiel se passe dans votre app et non sur le serveur.

FonctionnalitéiOSAndroidWebFourni par
Bannière personnalisée au premier planiOS 13.0+, SDK Pushwoosh 6.10.0+––Le module PushwooshForegroundPush dans votre app
Matériau Liquid GlassiOS 26 avec Swift 5.13+––Le matériau d'Apple, activé avec useLiquidView
Repli en bannière pleineiOS antérieur à 26, Swift 5.13+––Une vue standard dessinée par le SDK
Repli en bannière floutéeTout iOS, Swift antérieur à 5.13––Une vue à effet de flou dessinée par le SDK
Titre, message, image, GIFOui––Le payload push, inchangé
Couleurs, dégradés et polices de marqueOui––Propriétés d'apparence statiques du module
Retour haptique, animations d'entrée et de sortie, duréeOui––foregroundNotificationWith au lancement de l'app
Gestion du tap et deep linkOui––PWForegroundPushDelegate.didTapForegroundPush
Configuration no-code de l'apparence–––Non disponible aujourd'hui, le style se définit dans le code de l'app
La surface in-session comparable ailleursMessages in-app, Live ActivitiesMessages in-appMessages in-appProduits distincts, composés en no-code dans le Control Panel
Fonctionnalité
1 / 10
Bannière personnalisée au premier plan
iOS
iOS 13.0+, SDK Pushwoosh 6.10.0+
Android
–
Web
–
Fourni par
Le module PushwooshForegroundPush dans votre app
Fonctionnalité
2 / 10
Matériau Liquid Glass
iOS
iOS 26 avec Swift 5.13+
Android
–
Web
–
Fourni par
Le matériau d'Apple, activé avec useLiquidView
Fonctionnalité
3 / 10
Repli en bannière pleine
iOS
iOS antérieur à 26, Swift 5.13+
Android
–
Web
–
Fourni par
Une vue standard dessinée par le SDK
Fonctionnalité
4 / 10
Repli en bannière floutée
iOS
Tout iOS, Swift antérieur à 5.13
Android
–
Web
–
Fourni par
Une vue à effet de flou dessinée par le SDK
Fonctionnalité
5 / 10
Titre, message, image, GIF
iOS
Oui
Android
–
Web
–
Fourni par
Le payload push, inchangé
Fonctionnalité
6 / 10
Couleurs, dégradés et polices de marque
iOS
Oui
Android
–
Web
–
Fourni par
Propriétés d'apparence statiques du module
Fonctionnalité
7 / 10
Retour haptique, animations d'entrée et de sortie, durée
iOS
Oui
Android
–
Web
–
Fourni par
foregroundNotificationWith au lancement de l'app
Fonctionnalité
8 / 10
Gestion du tap et deep link
iOS
Oui
Android
–
Web
–
Fourni par
PWForegroundPushDelegate.didTapForegroundPush
Fonctionnalité
9 / 10
Configuration no-code de l'apparence
iOS
–
Android
–
Web
–
Fourni par
Non disponible aujourd'hui, le style se définit dans le code de l'app
Fonctionnalité
10 / 10
La surface in-session comparable ailleurs
iOS
Messages in-app, Live Activities
Android
Messages in-app
Web
Messages in-app
Fourni par
Produits distincts, composés en no-code dans le Control Panel

Sécurité et hébergement

Pushwoosh fonctionne sur son propre matériel aux États-Unis et en Allemagne, dans le cadre du RGPD.

ISO 27001:2022 CertifiedISO 27001 CertifiedGDPR CompliantData Privacy FrameworkHIPAA CompliantSOC 2 Type 2 CertifiedOWASP Compliant

Comment ça marche

Cette fonctionnalité demande du temps de développement, et nous le disons clairement. Il n’existe pas d’éditeur dans le Control Panel pour l’apparence au premier plan : un développeur la branche une fois dans l’app, et tout le reste correspond aux envois que vous faites déjà.

  1. Ajoutez le module et confiez le premier plan à votre app (développeur)

    Ajoutez PushwooshForegroundPush à côté de PushwooshFramework, PushwooshCore, PushwooshBridge et PushwooshLiveActivities, puis réglez Pushwoosh_SHOW_ALERT sur false dans Info.plist. iOS cesse alors d'afficher sa propre alerte, car la bannière la remplace au lieu de s'y ajouter.

  2. Configurez l'apparence une fois (développeur)

    Appelez foregroundNotificationWith(style:duration:vibration:disappearedPushAnimation:) dans didFinishLaunchingWithOptions et définissez les propriétés d'apparence pour les couleurs, dégradés et polices. Affichez chaque message avec showForegroundPush(userInfo:) depuis onMessageReceived, et gérez les taps dans didTapForegroundPush.

  3. Envoyez exactement comme aujourd'hui (no-code)

    Même audience, même Customer Journey, même payload, que la campagne parte du Control Panel ou de l'API Messages. La bannière est simplement le rendu de cette notification lorsqu'elle trouve l'app ouverte.

Limites à connaître

Une couche de finition à la fenêtre étroite. Voici ses limites.

  • Premier plan uniquement. La bannière s’affiche lorsque l’app est ouverte : sa portée correspond exactement à la part de vos envois qui arrive sur un écran ouvert.
  • iOS uniquement. Le comportement au premier plan sur Android passe par les canaux de notification, un mécanisme distinct auquel ce module ne touche pas.
  • Elle remplace l’alerte native au premier plan. Pushwoosh_SHOW_ALERT doit être sur false : la bannière système et celle-ci n’apparaissent jamais ensemble.
  • Configuration dans le code. Le style se définit dans le code de l’app, et toute modification passe par une nouvelle version de l’app plutôt que par une campagne.
  • Une seule mise en page aujourd’hui. style1 est le seul style intégré, et la personnalisation se limite aux couleurs, dégradés, polices, animations et à la durée.
  • Liquid Glass nécessite iOS 26 et Swift 5.13+. En dessous, la même configuration affiche une bannière pleine ou floutée : le rendu phare n’atteint que la part de votre audience sous iOS 26.
  • Elle ne laisse aucune trace côté serveur. Livraisons et ouvertures remontent comme d’habitude, et le rendu se fait côté client : mesurez-le avec un A/B test en session sur le taux de tap plutôt qu’en le cherchant dans un rapport.