Créer un APK gratuit

Notifications

AppMint Push - Notifiez vos utilisateurs

Envoyez des notifications à tous ceux qui ont installé votre application, directement depuis AppMint sur votre propre projet Firebase : programmation, modification après envoi, annulation, liens profonds

1Comment ça marche#

AppMint Push envoie des notifications à tous ceux qui ont installé votre application, depuis AppMint : envoi immédiat, programmation, modification après envoi, annulation, liens profonds.

Chaque message peut être conçu : 8 modèles, votre propre couleur, jusqu'à 3 boutons qui ouvrent chacun leur propre page, des choix de son et de fenêtre contextuelle, et une bannière, une carte, une feuille ou un plein écran natifs dans l'application lorsqu'elle est ouverte. Un aperçu en direct l'affiche exactement comme sur les téléphones de vos utilisateurs.

Il fonctionne sur VOTRE PROPRE projet Firebase : vos utilisateurs, votre projet, aucune limite partagée, et rien de vous n'est hébergé par AppMint. Firebase Cloud Messaging est gratuit, sans limite de messages.

Il vous faut deux fichiers de ce projet : google-services.json (pour la compilation) et une clé de compte de service (pour l'envoi). Les prochaines étapes obtiennent les deux. Fonctionne avec tous les modes de compilation : site web, ZIP, HTML et IA.

AppMint Push et OneSignal sont des alternatives : activer l'un désactive l'autre.

2Créer un projet Firebase#

Allez sur Firebase Console et cliquez sur « Add project » (ou ouvrez un projet existant). Un projet Firebase gratuit suffit : aucune facturation n'est nécessaire pour les notifications.

Un projet peut contenir plusieurs de vos applications.

3Ajouter votre application et télécharger google-services.json#

Dans votre projet Firebase :

  • Cliquez sur « Add app » et choisissez Android
  • Saisissez le nom du package EXACTEMENT comme défini dans l'assistant AppMint (par exemple com.yourname.yourapp) : une différence signifie que les notifications n'arrivent jamais, et AppMint refuse la compilation pour cela
  • Cliquez sur « Register app » et téléchargez google-services.json
  • Vous pouvez ignorer les étapes restantes du SDK : AppMint s'en charge

4L'activer et importer le fichier#

Dans la carte Notifications push de l'assistant de compilation :

  • Activez « AppMint Push »
  • Touchez « Importer google-services.json » et choisissez le fichier de l'étape précédente

L'assistant vérifie que le fichier contient le nom de votre package. Compilez ensuite votre APK normalement : pendant la compilation, votre application est enregistrée pour le push auprès de votre projet.

Les utilisateurs installent simplement l'application et l'ouvrent une fois. Sur Android 13+, on leur demande d'autoriser les notifications après le chargement du premier écran.

Les modèles, les boutons et les styles dans l'application nécessitent une application compilée avec cette version d'AppMint ou une plus récente. Une ancienne version reçoit toujours chaque message : elle l'affiche dans le style simple habituel.

5Importer votre clé de compte de service (une seule fois)#

AppMint envoie via votre projet, il lui faut donc une clé de celui-ci : le même fichier que demande OneSignal.

Dans Firebase Console :

  • ⚙ Paramètres du projet → onglet « Comptes de service »
  • Cliquez sur « Generate new private key » et confirmez : un fichier JSON se télécharge

Dans AppMint : Home > Notifications → choisissez votre application → « Importer la clé » → choisissez ce JSON.

AppMint vérifie la clé avec un envoi de test vers votre projet avant de la stocker (chiffrée) : une coche verte signifie donc que le prochain envoi partira vraiment. Un import par application ; recompiler l'application n'en nécessite pas un nouveau, sauf si vous changez de projet Firebase.

⚠️ Importez ici la clé de COMPTE DE SERVICE, pas google-services.json : l'écran vous prévient si vous les confondez. Pour révoquer l'accès plus tard, supprimez la clé dans Firebase Console.

6Envoyer votre première notification#

Dans Home > Notifications :

  • Choisissez votre application
  • Écrivez un titre (le message, l'image et le lien sont facultatifs)
  • Consultez la carte Aperçu en direct
  • Touchez « Envoyer la notification »

Chaque téléphone sur lequel votre application est installée le reçoit.

Pour l'image, touchez la zone Image : « Choisir sur l'appareil » (jusqu'à 2 Mo, PNG, JPEG ou WebP) ou « Coller un lien d'image » (https://). Une image choisie n'est importée que lorsque vous appuyez sur Envoyer : vous pouvez la choisir, la remplacer ou la retirer autant de fois que vous voulez avant.

7Choisir un modèle#

Conception → Modèle définit la mise en page de la notification. Le texte passe toujours en premier : une image ne recouvre jamais le message :

  • Automatique : carte d'image quand le message a une image, sinon Standard
  • Standard : titre et message complet ; une image devient une petite vignette à côté
  • Carte d'image : l'image SOUS le titre et le message lisibles
  • Bannière : une carte remplie de votre couleur, avec un badge facultatif
  • Promo : un badge comme « 50 % OFF » et un bouton coloré (votre premier bouton)
  • Liste : jusqu'à 6 lignes courtes, par exemple plusieurs mises à jour de commande
  • Compte à rebours : un minuteur en direct qui décompte jusqu'à une date et une heure de votre choix, puis quitte la barre de notifications de lui-même
  • Progression : une barre de progression ; modifiez et renvoyez avec une nouvelle valeur et la barre avance sur chaque téléphone sans vibrer de nouveau
  • Minimal : titre et une ligne, sans son ni fenêtre contextuelle

Les tailles du texte et des images s'adaptent à la taille de police de chaque utilisateur, rien n'est donc coupé sur les téléphones à grand texte.

8Choisir une couleur#

Conception → Couleur teinte l'icône, la bannière, les boutons et le compte à rebours de la notification. Choisissez l'une des 9 couleurs prêtes à l'emploi, ou « + » pour n'importe quel #RRGGBB.

Chaque couleur prête à l'emploi se lit bien sur les téléphones clairs comme sombres. Une couleur personnalisée est vérifiée sur les deux : si elle est trop pâle ou trop sombre, la note sous les couleurs l'indique, et « Corriger le contraste » dans la zone de couleur personnalisée la rapproche de la nuance la plus proche qui fonctionne tout en gardant sa teinte. Le texte sur un bouton ou une bannière colorés est automatiquement noir ou blanc.

Utilisez les tuiles « Téléphone clair » / « Téléphone sombre » de l'aperçu en direct pour voir les deux.

9Ajouter des boutons#

Conception → Boutons : « + Ajouter un bouton » (jusqu'à 3). Chacun a un libellé (jusqu'à 24 caractères) et son propre lien, par exemple « Suivre la commande » → #/orders/1042 et « Aide » → #/support. Laissez le lien d'un bouton vide pour ouvrir le lien principal.

Les boutons s'affichent sous la notification dans la barre et dans la présentation dans l'application. Dans le modèle Promo, le premier bouton devient le grand bouton coloré de la carte.

10Lorsque l'application est ouverte#

Conception → « Lorsque l'application est ouverte » décide de ce que voit un utilisateur lorsque le message arrive pendant qu'il utilise votre application :

  • Conception propre à l'application (par défaut) : le code de votre application l'affiche (voir Boîte de réception dans l'application ci-dessous)
  • Bannière du haut : glisse depuis le haut et se masque d'elle-même après quelques secondes
  • Carte centrée : une carte sur l'application assombrie avec l'image, le texte et les boutons
  • Feuille du bas : la même carte qui monte depuis le bas
  • Plein écran : une grande image avec les boutons en bas

La présentation suit le thème clair ou sombre du téléphone, et Retour ou un appui à l'extérieur la ferme. Lorsqu'elle est affichée, le même message n'est pas aussi placé dans la barre de notifications : l'utilisateur le regarde déjà.

Avec « Dans l'application uniquement » (Livraison → Afficher comme), un message qui arrive pendant que l'application est fermée s'affiche à la prochaine ouverture.

11Son, fenêtre contextuelle et horaire#

Conception → Comportement :

  • Son : désactivé pour une notification silencieuse
  • Afficher en fenêtre contextuelle : désactivé pour éviter d'apparaître par-dessus ce que fait l'utilisateur (elle arrive tout de même dans la barre de notifications)
  • Fermeture automatique : retire la notification de la barre après 30 secondes jusqu'à 3 jours (Android 8 et plus récent)

Options avancées :

  • Image d'icône / d'avatar : une image ronde à côté du texte (lien https://)
  • Clé de regroupement : les messages qui la partagent sont regroupés sous un même titre
  • Clé de remplacement : un message plus récent avec la même clé REMPLACE l'ancien sur le téléphone et dans la boîte de réception, par exemple un score en direct

Les utilisateurs peuvent aussi régler le son par type dans les paramètres de notification d'Android pour votre application.

Votre propre son : dans l'assistant, Intégrer → Notifications push → Son de notification (MP3, OGG, WAV, M4A, AAC, FLAC ou Opus, jusqu'à 1 Mo et 30 secondes). Il est joué pour chaque message envoyé avec le son activé. Les applications installées l'obtiennent avec la mise à jour qui le contient ; chaque utilisateur peut toujours le changer dans les paramètres de notification d'Android.

12Tester, enregistrer et réutiliser#

  • Aperçu en direct : tuiles Réduit, Développé et Dans l'application, sur un téléphone clair ou sombre, dessinées par le même code que celui des téléphones de vos utilisateurs
  • « Tester sur ce téléphone » : affiche le message sur VOTRE téléphone uniquement, comme une vraie notification ou comme présentation dans l'application sur l'écran Notifications. Rien n'est envoyé aux utilisateurs
  • Modèles enregistrés (icône de livre en haut) : « Enregistrer le message actuel comme modèle » conserve le texte, le lien, l'image et tous les choix de conception sur ce téléphone ; « Utiliser » le recharge en un appui
  • Dans l'historique, « Dupliquer comme nouveau message » crée un nouveau message à partir de n'importe quel message précédent

13Programmer pour plus tard#

Dans la carte Livraison, touchez « Programmer » sous Quand, puis choisissez une date et une heure. La notification part automatiquement à ce moment-là.

Tant qu'elle n'est pas partie, vous pouvez la modifier ou l'annuler depuis la liste Historique ci-dessous.

14Corriger une erreur après l'envoi#

Touchez n'importe quelle notification dans l'historique :

  • « Modifier et renvoyer » : le recharge dans l'éditeur avec toute sa conception ; « Mettre à jour et renvoyer » le remplace ensuite SUR PLACE sur chaque appareil
  • « Annuler » : le retire de chaque téléphone où il n'a pas encore été ouvert, y compris une présentation dans l'application encore à l'écran
  • « Supprimer » : comme annuler, et l'efface de votre historique

⚠️ Une notification que l'utilisateur a déjà ouverte ou fermée ne peut pas être reprise.

15Ouvrir une page précise#

Le champ Lien facultatif contrôle ce qu'ouvre un appui (chaque bouton peut avoir le sien) :

  • Une adresse https:// complète (idéal pour les applications de site web)
  • Une route dans l'application comme #/offers

Le code de votre application peut aussi le lire à tout moment :

const link = window.WebToApk?.getLaunchUrl?.();
window.addEventListener('appmint:deep-link',
  e => goTo(e.detail.url));

16Boîte de réception dans l'application (facultatif)#

Chaque push est aussi stocké dans l'application installée (les 50 derniers), pour que votre application puisse afficher son propre écran de notifications avec des pastilles de non-lu. Cela fonctionne dans TOUS les modes de compilation, y compris les applications de site web (URL), où vous ajoutez simplement ces quelques lignes à votre propre site.

Lorsque l'enveloppe a déjà affiché un message à l'écran (un style sous « Lorsque l'application est ouverte »), l'événement indique presented: true : ne dessinez alors pas une seconde bannière. Une application qui dessine toutes ses propres bannières peut désactiver celles de l'enveloppe avec setPushPresentation('none').

Fermer se fait par un GLISSEMENT, pas par une minuscule ✕, et c'est réversible : associez-le à un bref Annuler :

const B = window.WebToApk;
const inbox = JSON.parse(B?.getPushInbox?.() ?? "[]");
// [{id,title,body,imageUrl,link,receivedAt,read,
//   template?,accent?,buttons?,badge?,inapp?...}]
const unread = inbox.filter(m => !m.read).length;

// live arrival while the app is open
window.addEventListener('appmint:push', e => {
  const d = e.detail;
  if (d.type === 'received' && !d.presented) showBanner(d.message);
  refreshInbox();   // fires for 'revoked' too
});

B?.markPushRead?.(id);        // "" = mark all read
B?.dismissPushMessage?.(id);  // swipe away
B?.restorePushMessage?.(id);  // ...Undo
B?.setPushPresentation?.('none'); // app draws its own

17Si rien n'arrive sur votre téléphone de test#

Presque toujours une limite du TÉLÉPHONE DE TEST, pas de votre application ni de vos utilisateurs.

Android autorise environ 100 enregistrements push par téléphone. Chaque installation NEUVE d'une application qui utilise les notifications en consomme un : installer build après build pendant les tests peut tous les épuiser, et ce téléphone cesse alors de recevoir pour les applications nouvellement installées.

Libérer des emplacements (c'est ce qui fonctionne réellement) :

  • Désinstallez les applications de test dont vous n'avez plus besoin : Android libère l'emplacement que chacune occupait
  • Ou effacez les données d'une application de test : Paramètres > Applications > [cette application] > Stockage > Effacer les données ; cela libère son emplacement sans désinstaller
  • Sur un émulateur, l'effacer réinitialise tous les emplacements d'un coup

Redémarrer le téléphone n'aide PAS : ces enregistrements sont stockés de façon permanente, c'est pourquoi ils survivent à un redémarrage. Vider le cache de Google Play Services ne les libère pas non plus.

Évitez cela pendant les tests :

  • Gardez UN SEUL nom de package pendant vos itérations : chaque nom de package différent prend son propre emplacement
  • Installez le nouvel APK PAR-DESSUS l'ancien au lieu de désinstaller d'abord : une mise à jour conserve l'enregistrement existant, une réinstallation en consomme un nouveau
  • Testez sur un téléphone de rechange ou un émulateur ; effacer un émulateur réinitialise ses emplacements instantanément
  • Supprimez les applications de test dont vous avez terminé

Vérifiez aussi les bases : l'application a été ouverte au moins une fois après l'installation, et les notifications sont autorisées dans les paramètres Android. L'application se réabonne à chaque lancement, elle récupère donc d'elle-même dès que des emplacements se libèrent : aucune recompilation nécessaire.

18Limites et bonnes pratiques#

  • Aucune limite au nombre de notifications envoyées : Firebase Cloud Messaging est gratuit
  • Titre jusqu'à 120 caractères, message jusqu'à 1000 ; les liens d'image et d'icône doivent commencer par https://
  • Jusqu'à 3 boutons (libellés de 24 caractères) et jusqu'à 6 lignes de liste
  • Avec l'offre gratuite, une courte publicité est diffusée avant chaque envoi
  • Applications de test : supprimez-les avec l'icône de corbeille à côté du sélecteur d'application ; cela supprime l'historique et la clé stockée dans AppMint uniquement, votre projet Firebase reste intact, et une recompilation ajoute à nouveau l'application
  • Recompiler avec un NOUVEAU google-services.json du MÊME projet ne change rien : votre clé reste, les installations existantes continuent de recevoir
  • ⚠️ Passer l'application à un AUTRE projet Firebase est une rupture nette. Recompilez avec le nouveau google-services.json, importez la clé du nouveau projet (AppMint supprime l'ancienne, car elle ne pourrait jamais envoyer pour le nouveau projet), et sachez que les téléphones qui exécutent encore l'ANCIENNE version cessent de recevoir jusqu'à ce que leurs utilisateurs mettent à jour. Les notifications atteignent un projet, et ces installations écoutent toujours l'ancien
  • Envoyez avec modération : les utilisateurs désinstallent les applications qui les spamment

19Choisir qui le reçoit#

Sous « Qui le reçoit », un message va à Tout le monde (par défaut) ou aux téléphones que vous choisissez :

  • Pays, langues, versions d'Android et versions de l'application
  • Activité : a ouvert l'application ces N derniers jours, ou ne l'a pas ouverte depuis N jours
  • Uniquement les téléphones où les notifications sont activées
  • Identifiants d'utilisateur et balises que la page de votre application définit (étape suivante)

Avant l'envoi, l'écran indique combien de téléphones votre choix atteint.

Autres façons d'envoyer :

  • Heure locale de chaque téléphone (sous Quand) : par exemple 09:00 sur l'horloge de chaque téléphone, fuseau horaire par fuseau horaire
  • Test A/B : écrivez une version B ; chaque version est envoyée à une part de test de l'audience, et après l'attente que vous définissez, celle qui a le plus d'ouvertures (ou d'appuis) est envoyée à tous les autres
  • Limite quotidienne par téléphone : le nombre maximal de messages qu'un téléphone reçoit de cette application par jour ; les messages au-delà sont ignorés pour ce téléphone et affichés comme « ignoré (limite quotidienne) »

L'historique indique, pour chaque message, à combien de téléphones il est allé, combien ont échoué et combien ont été ignorés.

⚠️ Le choix des destinataires, l'heure locale, les tests A/B, les automatisations et la limite quotidienne ne concernent que les téléphones exécutant une application compilée à partir du 30 sept. 2026 (ils s'enregistrent d'eux-mêmes). Les téléphones avec d'anciennes versions reçoivent toujours les envois « Tout le monde » : recompilez et publiez une mise à jour pour les atteindre aussi de cette façon.

20Cibler les utilisateurs connectés et les balises#

La page de votre application indique à AppMint Push qui est connecté et ce qu'il faut savoir sur cette installation. Vous pouvez ensuite envoyer à un utilisateur, ou à tous ceux qui ont une balise comme plan = pro.

  • setPushUser : après la connexion, avec VOTRE PROPRE identifiant de compte (l'identifiant de la base de données, jamais une adresse e-mail ni un numéro de téléphone). Lettres, chiffres et _ @ . : + - (jusqu'à 128). Appelez-le avec "" à la déconnexion, sinon le téléphone continue de recevoir les messages de cet utilisateur
  • setPushTag / setPushTags : un nom de balise (lettres, chiffres et _, jusqu'à 32) et une valeur (jusqu'à 128). "" supprime une balise ; jusqu'à 50 par installation
  • getPushUser / getPushTags : relisent ce que contient ce téléphone

Les identifiants et les balises appartiennent à l'installation, pas au compte : effacez aussi les balises propres à l'utilisateur à la déconnexion. Le téléphone signale un changement quelques secondes plus tard (au prochain lancement s'il est hors ligne). Un même utilisateur connecté sur deux téléphones est joint sur les deux.

const B = window.WebToApk;

// after sign-in: your own account id
B?.setPushUser?.(user.id);
B?.setPushTag?.('plan', user.isPro ? 'pro' : 'free');
B?.setPushTags?.(JSON.stringify({ city: 'pune', level: '12' }));

// on sign-out
B?.setPushUser?.('');
B?.setPushTag?.('plan', '');

// read back
const who = B?.getPushUser?.() ?? '';
const tags = JSON.parse(B?.getPushTags?.() ?? '{}');

21Automatisations#

Des messages qui partent tout seuls. Dans Automatisations, touchez « + Nouveau » et choisissez-en un :

  • Bienvenue : N minutes après une nouvelle installation (de 0 minute à 30 jours). Chaque téléphone le reçoit une fois
  • Reconquête : lorsqu'une personne n'a pas ouvert l'application depuis N jours (1 à 180). Une fois par absence : un téléphone qui revient puis s'éloigne à nouveau le reçoit de nouveau
  • Balise : N minutes après que la page de votre application définit une balise, éventuellement pour une seule valeur. Il n'est envoyé que si la balise est toujours définie à l'échéance

Panier abandonné : définissez une balise quand des articles entrent dans le panier et retirez-la au paiement. Une automatisation « cart » avec un délai de 60 minutes ne rappelle alors que les personnes parties sans acheter. Définir de nouveau la même valeur ne relance pas le compte à rebours ; une fois la balise retirée, la définir à nouveau peut déclencher un nouvel envoi.

Les automatisations comptent dans la limite quotidienne par téléphone et ne concernent que les téléphones avec des versions compilées à partir du 30 sept. 2026.

const B = window.WebToApk;

// items added to the cart
B?.setPushTag?.('cart', 'open');

// checkout finished, or the cart emptied: no reminder
B?.setPushTag?.('cart', '');

22Joindre les utilisateurs aux notifications désactivées#

Un téléphone où les notifications sont désactivées n'affiche jamais de notification dans la barre, mais votre message parvient quand même à l'application, et un message dans l'application apparaît à la prochaine ouverture. Utilisez cela pour demander à l'utilisateur de réactiver les notifications :

  • Qui le reçoit → Choisir qui → activez « Notifications désactivées »
  • Afficher comme → Dans l'application uniquement (une bannière du haut ou une carte centrée sous Conception)
  • Conception → Boutons → « + bouton “Activer les notifications” ». Son lien est appmint://notifications/enable : un appui affiche la demande d'autorisation, ou ouvre les paramètres de notification de l'application lorsque la demande ne peut plus être affichée

Lorsque l'application a des téléphones aux notifications désactivées, le centre d'envoi affiche « Joindre les N téléphones aux notifications désactivées » sous la clé Firebase : un appui règle les trois. Dès qu'un utilisateur active les notifications, son téléphone quitte cette audience.

Le bouton nécessite une application compilée avec cette version d'AppMint ou une plus récente ; les anciennes versions traitent le lien comme un lien ordinaire. appmint://notifications/settings ouvre directement l'écran des paramètres.

// Your page can offer the same thing itself:
const r = await window.AppMint?.enableNotifications?.();
// r = { state: 'granted' | 'prompt' | 'blocked' | 'unavailable',
//       changed, openedSettings }

// and hear a push button's result too:
window.addEventListener('appmint:notifications', e => {
  if (e.detail.state === 'granted') hideNotifBanner();
});

23Messages dans l'application#

Les messages dans l'application sont des campagnes que vous créez dans le centre d'envoi : Notifications push → « Messages dans l'application » → « + Nouveau ». L'application les télécharge et les affiche elle-même, sans push, lorsque le déclencheur choisi se produit :

  • Ouvertures de l'application : la N-ième ouverture de l'application
  • Une page ou une route (/checkout, #/cart, /product/*)
  • Temps dans l'application : N secondes dans l'application
  • Un événement suivi par votre page (étape suivante)
  • Une balise push
  • Notifications désactivées : associez-le à un bouton « Activer les notifications »
  • Mise à jour de l'application : la première ouverture après une mise à jour

Affichez-le comme bannière, fenêtre modale, feuille ou plein écran. Chaque message a une fréquence (une fois par installation par défaut), une audience facultative et une heure de début et de fin facultatives. Il nécessite AppMint Push dans la compilation.

24Dire à l'application ce qui s'est passé#

La part de votre page est minime : signalez les moments importants avec trackEvent. Un message dont le déclencheur est « Lorsqu'un événement se produit » avec le même nom s'affiche alors immédiatement (ou après l'attente choisie). Noms : lettres, chiffres et _ . : - (jusqu'à 64). Les événements ne sont ni comptés ni stockés nulle part ; ils décident seulement si un message s'affiche.

Les messages de route suivent d'eux-mêmes les vrais changements d'URL (chargements de page, pushState, routes #hash). Une vue que l'adresse n'indique pas (un onglet, une étape d'assistant) peut être signalée comme route avec l'événement appmint:route.

if (window.AppMint && AppMint.trackEvent) AppMint.trackEvent('checkout_done', { total: 42 });

// raw bridge: props as a JSON string ('' for none)
WebToApk.trackEvent('level:3', '');

// a view the address does not show, reported as a route
window.dispatchEvent(new CustomEvent('appmint:route', { detail: { path: '/cart' } }));

25Dessiner les messages vous-même (facultatif)#

Chaque message déclenche appmint:inapp avec { type: 'shown' | 'clicked' | 'dismissed', id, name } (et appelle window.onAppMintInApp(detail) si vous la définissez).

Pour dessiner vous-même les messages, appelez WebToApk.setInAppPresentation('none') : l'application ne dessine alors plus rien et l'événement « shown » contient presented: false et le message (titre, corps, image, boutons). setInAppPresentation('auto') rend le dessin à l'application. WebToApk.getInAppCampaigns() liste ce que cette installation contient ([{id, name}]).

Tout cela nécessite AppMint Push dans la compilation ; dans toute autre compilation, les méthodes répondent false / « [] ».

window.addEventListener('appmint:inapp', e => {
  // e.detail = { type: 'shown' | 'clicked' | 'dismissed', id, name, presented?, message? }
  if (e.detail.type === 'shown' && e.detail.presented === false) drawMyBanner(e.detail.message);
});

WebToApk.setInAppPresentation('none');   // 'auto' gives drawing back to the app
const held = JSON.parse(WebToApk.getInAppCampaigns() || '[]');   // [{id, name}]

26Partir d'un modèle#

« + Nouveau » ouvre une galerie de messages prêts à l'emploi, chacun avec un aperçu en direct que vous pouvez rechercher ou filtrer par mise en page : Bienvenue, Notez-nous, Activer les notifications, Nouveautés, Vente flash (avec compte à rebours en direct), Promo de saison, Nouvelle fonctionnalité, Mise à jour disponible, Panier abandonné, Reconquête, Sondage par étoiles, Score NPS, Inviter des amis, Offre d'abonnement, Série, Astuce, Explication d'autorisation, Maintenance (reste jusqu'à fermeture), Mise à jour des conditions (sans bouton de fermeture) et Suivez-nous. Un modèle remplit la mise en page, l'emoji ou l'image, le texte, les boutons, le déclencheur et la fréquence : modifiez ce que vous voulez avant d'enregistrer. « Message vierge » démarre vide.

Sondage par étoiles, Notez-nous et NPS posent une question : une rangée de 1 à 5 étoiles ou un score de 0 à 10. Le premier bouton attend une réponse ; la réponse est signalée une seule fois, à la fermeture du message, comme un événement « answered » appmint:inapp { value, question }, et le centre d'envoi affiche la moyenne d'étoiles ou le score NPS avec la répartition.

Les liens des boutons peuvent aussi être appmint://review (la fenêtre d'avis de Google Play), share:text (la feuille de partage), copy:text (le presse-papiers), route:/page et event:name. Le texte peut utiliser {app}, {store}, {name}, {streak} et {tag:key}, remplis sur chaque téléphone ; {name|friend} donne un mot de remplacement quand il n'y a pas de valeur. Un message dont un espace réservé n'a pas de valeur n'est pas affiché. Nécessite une application compilée avec cette version ou une plus récente.

window.addEventListener('appmint:inapp', e => {
  const d = e.detail;
  if (d.type === 'answered') {
    // d.question: 'stars' (1-5) or 'nps' (0-10); d.template e.g. 'survey_stars'
    if (d.question === 'nps' && d.value <= 6) openFeedbackForm();
  }
  if (d.type === 'clicked' && d.link === 'event:allow') askForLocation();
});

// {streak} and {tag:key} come from push tags
WebToApk.setPushTag('streak', '7');

Cette page est générée à partir du guide d'intégration inclus dans l'application elle-même ; elle reflète donc exactement la version actuelle. Lire en Markdown.

Vérifié par rapport au guide publié le 22/10/2026.