Repository navigation
Demander les rappels au premier Programmer et déclarer les notifications (E-18, E-08) #495
Description
Contexte
Epic : #14
Maquette : E-18 · validée le 2026-09-28
Ecrans › E-18 (Rappels, premier « Programmer » ; Texte agrandi et lecteur d'écran) · Ecrans › E-08 (Votre sortie, ligne des rappels) · E-18 · E-08 · E-06 · D-060 · D-061
#188 configure le premier lancement (PR #494), mais il ne livre pas la partie des rappels de E-18 (découverte de CODE, 2026-10-15). Pour demander l'autorisation des notifications, il faut le module natif expo-notifications (avec le droit aps-environment sur iOS et un nouveau build) et déclarer android.permission.POST_NOTIFICATIONS sur Android 13 et plus (découverte pendant #189). Ce module est celui qui reçoit les push dans #44, et c'est #44 qui l'installe. Ce ticket est donc bloqué par #44.
Planches : recevoir un rappel · autorisation des notifications · rappels désactivés (E-08) · texte agrandi, recevoir un rappel · texte agrandi, rappels désactivés. Tokens prêts : mappings.firstLaunch.reminderPermission, states.notificationsOff.
Comportement attendu
- Premier « Programmer » (E-18) : tant que le téléphone n'a jamais posé la question, la sheet de programmation (E-06) se ferme, puis « Recevoir un rappel ? » s'ouvre sur la fiche, avec une poignée : cloche pleine
blue-inkdans un disqueblue-softde 64 px ; « Nous vous prévenons la veille à 18:00, puis une heure avant le départ. » ; « Activer les rappels » (bouton bleu, 52 px) ouvre la fenêtre du système ; « Plus tard » (texte, 48 px), le glissement ou le voile ferment la sheet. Le toast « Sortie programmée » vient ensuite. La sheet ne revient pas d'elle-même. - Votre sortie (E-08) : quand les rappels sont refusés, remis à plus tard ou absents, la ligne affiche « Rappels désactivés » (cloche barrée
bell-slashenmuted) et « Activer » enblue-ink. « Activer » ouvre la fenêtre du système si elle n'a jamais été montrée, sinon les réglages de Widoo dans le téléphone. Au retour, la ligne des rappels revient. - État réel des notifications (D-061) : l'app lit l'autorisation du système (
getPermissionsAsync) pour Votre sortie et pour Réglages › Notifications (E-19).readPhoneNotifications(apps/mobile/src/settings/phoneNotifications.ts) est remplacé. - Accessibilité : au plus grand texte, « Recevoir un rappel ? » passe sur deux lignes et ses boutons prennent toute la largeur. La sheet est un dialogue, et le geste d'échappement vaut « Plus tard ». Les toasts sont annoncés sans déplacer le focus.
Critères d'acceptation
- Au premier « Programmer » sur un téléphone neuf, la sheet de E-06 se ferme puis « Recevoir un rappel ? » s'ouvre ; aux « Programmer » suivants, elle ne s'ouvre plus (iOS et Android, captures dans la PR)
- « Activer les rappels » ouvre la fenêtre du système ; Android 13 et plus la montre, ce qui suppose
POST_NOTIFICATIONSdéclarée - Après un refus ou « Plus tard », Votre sortie affiche « Rappels désactivés » et « Activer » ; « Activer » ouvre la fenêtre du système ou les réglages du téléphone, et la ligne des rappels revient au retour si l'autorisation est donnée
- Réglages › Notifications et Votre sortie lisent l'état réel du système, sur iOS comme sur Android
- Texte à 150 % et lecteur d'écran conformes à E-18 (deux lignes, boutons pleine largeur, échappement = « Plus tard »), mentionnés dans la PR
- Test de la règle « montrée une seule fois » (état gardé sur l'appareil)
Notes techniques
- Bloqué par Envoyer les rappels push des parcours programmés (veille 18:00 et H-1) #44, qui ajoute
expo-notifications, le droitaps-environment,POST_NOTIFICATIONSet l'enregistrement des jetons (POST /me/devices). Si Envoyer les rappels push des parcours programmés (veille 18:00 et H-1) #44 ne pose pas le module côté mobile, ce ticket le pose, et le blocage se lève. - Nouveau build natif à prévoir pour la recette.
Activity