Push Notifications
Feature Detail
Description
Push Notifications delivers real-time alerts to peer mentors and coordinators via Firebase Cloud Messaging, covering assignment dispatches, event reminders, and coordinator follow-up prompts. A dedicated notification inbox screen lets users view, acknowledge, and act on incoming messages directly from the mobile app's bottom navigation tab. All notification interactions are WCAG 2.2 AA compliant, with semantic labels, sufficient contrast ratios, and accessible touch targets across all supported devices and assistive technologies.
Sources & reasoning
Notifications is a named bottom-nav tab (line 290), establishing it as a first-class MVP surface. HLF follow-up dissatisfaction data (line 116) confirms urgency. Blueprint marks push-notifications [MVP]. First phase ordinal = MVP.
-
docs/source/likeperson.md · line 290Bottom nav with 5 tabs: Home, Contacts, Add (modal launcher for Activity and Event wizards), Work, Notifications
-
docs/source/likeperson.md · line 116Oppfølging av likepersoner: 40 % var ikke fornøyd med oppfølgingen i spørreundersøkelse. Scenariobaserte push-meldinger og kalendersynkronisering.
Analysis
Timely push notifications are essential for operational continuity across all organizations: peer mentors must respond promptly to new assignments and events, and coordinators rely on real-time alerts to manage oversight. HLF survey data revealed 40% of peer mentors were dissatisfied with follow-up quality, and proactive push messages directly address this gap. For all four organizations, automated push alerts reduce coordinator manual effort, increase activity completion rates, and improve the quality of data flowing into Bufdir reports by prompting timely registration.
Implementation uses Firebase Cloud Messaging via the FirebaseMessagingClient infrastructure component, integrated through Flutter's firebase_messaging package. PushNotificationService manages FCM token registration, platform permission requests, and foreground/background message routing. NotificationRepository persists inbox state to the local Drift database for offline access. Deep-link payloads map notification types to specific screens. WCAG 2.2 AA compliance requires accessible semantic labels on all inbox UI elements, visible focus indicators, and keyboard-navigable interactions throughout the notification inbox screen.
Quality Assurance
Peer Mentor (primary) · Coordinator (same flow, receives follow-up prompts instead of assignment dispatches)Peer Mentor
Quick UAT
- Logg inn i mobilappen som Likeperson. Bekreft at varslingsfanen (klokkeikon) er synlig i bunnavigasjonen.
- Trykk på varslingsfanen. Bekreft at innboksen vises med en liste over mottatte pushvarsler, inkludert avsender, tidsstempel og kort forhåndsvisning av meldingstekst.
- Trykk på et ulest varsel (markert som ulest). Bekreft at varslingsdetaljsiden åpnes og viser full meldingstekst, avsender og tidsstempel.
- Trykk på handlingsknappen i varselet (f.eks. «Se oppdrag» for et oppdragsvarsel). Bekreft at appen navigerer til riktig skjerm (f.eks. oppdragsinboksen).
- Gå tilbake til varslingsfanen. Bekreft at det leste varselet nå vises uten ulest-markering, og at den ulestetellerens badge i bunnavigasjonen er redusert.
Quick UAT — Accessibility
-
Logg inn i mobilappen som Likeperson. Bekreft at varslingsfanen (klokkeikon) er synlig i bunnavigasjonen.
- Screen reader TalkBack annonserer bunnavigasjonselementene i rekkefølge; varslingsfanen annonseres som 'Varsler, fane' med ulestantall hvis > 0 (f.eks. 'Varsler, 3 uleste, fane').
- Keyboard / focus Fanen nås via sveip-fokus i bunnavigasjonen; Enter / dobbelttrykk aktiverer.
- Focus visibility Synlig fokusring rundt aktiv fane-indikator.
- Touch target Hvert bunnavigasjonselement ≥ 44×44 CSS px.
- Contrast Klokkeikon og badge-tekst oppfyller 4.5:1 mot bakgrunn; badge ikke avhengig av farge alene (viser tall).
-
Trykk på varslingsfanen. Bekreft at innboksen vises med en liste over mottatte pushvarsler, inkludert avsender, tidsstempel og kort forhåndsvisning av meldingstekst.
- Screen reader Sideoverskrift 'Varsler' annonseres; hvert listeelement annonseres med avsender, tidsstempel og forhåndsvisningstekst. Uleste elementer annonseres med 'ulest'.
- Keyboard / focus Piltaster / sveip navigerer mellom varslingsrader; Tab hopper til neste interaktive element.
- Focus visibility Synlig fokusring rundt hver varslingsrad.
- Zoom Liste- og forhåndsvisningstekst forblir lesbar og ikke avskåret ved 200 % tekstforstørrelse.
- Contrast Forhåndsvisningstekst og tidsstempel oppfyller 4.5:1; ulest-indikator (f.eks. blå prikk) ikke avhengig av farge alene.
-
Trykk på et ulest varsel (markert som ulest). Bekreft at varslingsdetaljsiden åpnes og viser full meldingstekst, avsender og tidsstempel.
- Screen reader TalkBack annonserer detaljsideoverskriften og leser full meldingstekst uten avskjæring.
- Keyboard / focus Enter / dobbelttrykk på rad åpner detaljen; Tilbake-knapp (ikke sveip) tilgjengelig og fokuserbar.
- Focus visibility Fokus flyttes til detaljsideoverskriften ved åpning; tilbakeknapp har synlig fokusring.
- Touch target Tilbakeknapp ≥ 44×44 CSS px.
- Zoom Full meldingstekst forblir lesbar og ruller vertikalt ved 200 %.
-
Trykk på handlingsknappen i varselet (f.eks. «Se oppdrag» for et oppdragsvarsel). Bekreft at appen navigerer til riktig skjerm (f.eks. oppdragsinboksen).
- Screen reader Handlingsknappen annonseres med sin etikett og rolle ('knapp'); destinasjonsskjermens overskrift annonseres ved ankomst.
- Keyboard / focus Handlingsknappen nås med Tab fra meldingsteksten; Enter aktiverer.
- Focus visibility Synlig fokusring på handlingsknappen; fokus flyttes til destinasjonsskjermens overskrift etter navigasjon.
- Touch target Handlingsknapp ≥ 44×44 CSS px.
-
Gå tilbake til varslingsfanen. Bekreft at det leste varselet nå vises uten ulest-markering, og at den ulestetellerens badge i bunnavigasjonen er redusert.
- Screen reader Oppdatert badge-antall i bunnavigasjonen annonseres automatisk (f.eks. 'Varsler, 2 uleste, fane' → 'Varsler, fane' når ingen uleste gjenstår).
- Live region 'Varsel markert som lest.' annonseres som polite live region.
- Contrast Lest-tilstand skiller seg fra ulest ved mer enn bare farge (f.eks. fjernet prikk og endret typografisk vekt).
Role Boundaries
3 role(s) must NOT access this feature-
Organization Administrator
Organisasjonsadministratorer logger kun inn i Admin Web Portal og har ikke tilgang til mobilappens varslingsfane; deep-link til varslingsinnboksen returnerer 403.
-
Global Administrator
Global Administrator har ingen mobiltilgang; innlogging i mobilappen omdirigeres til admin-portalen. Varslingsfanen finnes ikke i admin-portalens navigasjon.
-
Prospective Organization Representative
Prospective Organization Representative har ingen brukerkonto i den operative plattformen; alle API-kall returnerer 401.
Expected End State
Varselet er markert som lest i databasen, ulest-badge-telleren i bunnavigasjonen er oppdatert, og brukeren har blitt navigert til relevant handlingsskjerm (f.eks. oppdragsinboksen eller arrangementssiden) direkte fra varselet.
Components (22)
Shared Components
These components are reused across multiple features
User Stories
No user stories have been generated for this feature yet.