# Pattern: lokale notifikasjoner (UNUserNotificationCenter) **Når:** appen må varsle brukeren om hendelser den selv vet om (tidsvinduer, påminnelser, milepæler) — uten server, uten push. ## Form - **Autorisasjon ved kjøretid:** `UNUserNotificationCenter.shared().requestAuthorization(options: [.alert, .sound, .badge])`. **Ingen Info.plist-nøkkel kreves** for standard lokale notifikasjoner. ([Apple — UNUserNotificationCenter](https://developer.apple.com/documentation/usernotifications/unusernotificationcenter)) - **Be om autorisasjon i kontekst** — ikke ved første launch. Forklar hvorfor på en onboarding-skjerm *før* prompten (App Store Review forventer dette; GDPR-vennlig). - **Planlegging:** `UNNotificationRequest` med `UNCalendarNotificationTrigger` (klokkeslett) eller `UNTimeIntervalNotificationTrigger`. iOS-grense: ~64 ventende lokale notifikasjoner per app — planlegg rullerende, ikke alt på en gang. - **Re-planlegg ved app-foreground** hvis tidene avhenger av tilstand som endrer seg (f.eks. lokasjons-avledede tider — se `patterns/current-location-regeneration.md`): fjern utdaterte (`removePendingNotificationRequests`) og planlegg nye. ## Interruption levels & Focus - `UNNotificationInterruptionLevel`: `.passive`, `.active` (default), `.timeSensitive`, `.critical`. - **Focus mode respekterer nivåene:** `.timeSensitive` kan bryte gjennom de fleste Focus-filtre — krever entitlement (`com.apple.developer.usernotifications.time-sensitive`). `.critical` omgår mute/DND — krever Apple-godkjent entitlement, gis sjelden. For en vanlig app: `.active` eller `.timeSensitive` (med entitlement) hvis varselet er reelt tidskritisk. - Ingen App Store-entitlement kreves for å *planlegge* standard lokale notifikasjoner — kun for time-sensitive/critical-nivåene. ## Handling av tap - `UNUserNotificationCenterDelegate` — `didReceive response` for å reagere på trykk (deep-link til riktig skjerm), `willPresent` for visning mens appen er i forgrunnen. - Hvis et trykk skal endre tilstand ("marker gjort"): bruk `UNNotificationAction` for in-notification-handling der mulig, ellers åpne appen til riktig kontekst. ## Fallgruver - **Ikke** anta autorisasjon — sjekk `getNotificationSettings` og degrader nådig (in-app-klokke/varsler) hvis nektet. - **Ikke** spam — én varsel per hendelse, av/på per kategori. - **Ikke** glem å re-planlegge når underliggende data endres; gamle notifikasjoner som fyrer på feil tid er en synlig bug. ## App-brief-signal "Påminn brukeren", "varsel når X", "respekterer Focus mode", "av/på per varseltype".