# Pattern: current-location-basert beregning med regenerering & fallback **Når:** appen beregner noe som avhenger av hvor brukeren er *nå* (soltider, tidssoner, lokale data) og må holde det oppdatert når brukeren flytter seg — uten å lagre lokasjonshistorikk. ## Form - **Be om "When In Use"**, ikke "Always", med mindre bakgrunns-oppdatering er strengt nødvendig. Nøkkel: `NSLocationWhenInUseUsageDescription` (Always: `NSLocationAlwaysAndWhenInUseUsageDescription`). Forklar hvorfor på onboarding *før* prompten. - **Hent posisjon ved app-foreground** (`scenePhase == .active`): én `requestLocation()` (engangs) eller kort `startUpdatingLocation()` til en god fix, så stopp. Ikke kontinuerlig sporing. - **Regenerer avledede verdier** ved hver fix der posisjonen har endret seg vesentlig (terskel, f.eks. >tens of km, eller tidssone-bytte): re-kjør beregningen, re-planlegg avhengige lokale notifikasjoner (se `patterns/local-notifications.md`), oppdater widget-timeline. - **Cache siste kjente posisjon** (kun den ene verdien, ikke en logg) for bruk når en fersk fix ikke er tilgjengelig. ## Fallback-stige (når GPS mangler / permission nektet) 1. **Siste kjente posisjon** (cachet) — bruk den, vis at den er stale. 2. **Manuell input** — la brukeren sette/velge sted (by, eller kart-pin) hvis appen er meningsløs uten posisjon. 3. **Degradert modus** — vis hva som er mulig uten posisjon (generisk innhold), med tydelig CTA for å gi tilgang / sette sted. 4. **Aldri krasj, aldri tom skjerm** uten forklaring. En app som bare viser "Location required" og ikke noe annet risikerer Guideline 4.2 / dårlig review. ## Personvern - Posisjon brukes til beregning og forkastes — ikke lagret som historikk, ikke sendt noe sted. Reflekter dette i App Privacy Details (Location → App Functionality, *ikke* linket til identitet, ingen tracking). - Ingen `PrivacyInfo.xcprivacy`-required-reason for Core Location i seg selv, men *vær konsekvent* med nutrition-label-erklæringen. ## Fallgruver - **Ikke** be om "Always" for noe "When In Use" dekker — review-friksjon + brukermistillit. - **Ikke** poll lokasjon i bakgrunnen "for sikkerhets skyld" — batteridrenering, og synlig i Settings → Privacy. - **Ikke** anta at en fix kommer raskt — ha en timeout og fallback-sti. - **Husk** tidssone: en lokasjonsendring kan også endre tidssonen; beregninger som bruker lokal tid må re-deriveres. ## App-brief-signal "Lokasjons-bevisst", "current location", "regenererer ved app-foreground", "fallback ved nektet permission", "soltider / lokale tider".