diff --git a/APPSTORE.md b/APPSTORE.md index 8c62b82..74e179a 100644 --- a/APPSTORE.md +++ b/APPSTORE.md @@ -13,7 +13,9 @@ The two 2026-08-11 blockers are RESOLVED by P0 (live chain): on Apple's network see real data. - ~~Always-location risk~~ → **Always is requested only when the user enables Alerts** (ProximityMonitor escalates WhenInUse → Always on alert opt-in). - Onboarding requests WhenInUse only. + Onboarding requests WhenInUse only. FuelBoard does **not** declare the + persistent real-time background location mode; optional alerts use + CoreLocation region monitoring/significant-change behaviour instead. ## StoreKit sandbox: verified working configuration and caveats @@ -188,19 +190,23 @@ correct app/team association, and a matching Sandbox Apple Account. > Prices are downloaded from the internet up to twice a day; the app filters > 5/10/15-mile radii on-device and works offline from a bundled snapshot. > Location is used to (a) rank stations by distance and (b) power the -> optional Alerts feature: when the user enables alerts, the app geofences -> the cheapest station in their radius and sends a notification when they -> approach it. Always-location is requested only when the user enables -> alerts. The app also provides a home-screen widget showing the current -> cheapest station nearby, and a price-history Trends chart for starred -> stations. All data is UK-wide (Fuel Finder covers England, Scotland, Wales -> and Northern Ireland); users outside the UK see an empty state explaining -> this. +> optional Alerts feature: when the user enables alerts, the app registers +> CoreLocation regions around the cheapest station in their radius and sends +> a notification when they approach it. FuelBoard does not use persistent +> real-time background location tracking; it relies on iOS region monitoring +> and significant-change behaviour for optional alerts. Always-location is +> requested only when the user enables alerts. The app also provides a +> home-screen widget showing the current cheapest station nearby, and a +> price-history Trends chart for starred stations. All data is UK-wide (Fuel +> Finder covers England, Scotland, Wales and Northern Ireland); users outside +> the UK see an empty state explaining this. ## Review risks (know before submitting) -- **Always-location (5.1.1)** — the #1 question. The feature is visible - (Alerts tab) and opt-in; the review notes above say so explicitly. +- **Always-location (5.1.1 / 2.5.4)** — the feature is visible (Alerts tab) + and opt-in; the app does not declare persistent background location mode, + and the review notes describe region monitoring/significant-change rather + than continuous tracking. - **Reviewer outside the UK** — empty radius; mitigated by the empty-state task above + review notes. - **"Cheapest" claims (2.3.1)** — mitigated by the OGL/footnote task. diff --git a/Config/App-Info.plist b/Config/App-Info.plist index 298ecd0..a97954b 100644 --- a/Config/App-Info.plist +++ b/Config/App-Info.plist @@ -48,7 +48,6 @@ UIBackgroundModes fetch - location UILaunchScreen diff --git a/SECURITY.md b/SECURITY.md index a8b445d..c715e87 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -62,8 +62,10 @@ the govuk-API switch (BACKLOG P0). Findings below are ordered by severity. ### 6. Privacy / permissions — review for App Store - `NSLocationWhenInUseUsageDescription` + `NSLocationAlwaysAndWhenInUseUsageDescription` - both present with clear copy; `UIBackgroundModes: location` justified by the - alert feature (geofenced cheapest-station notifications). + both present with clear copy. The app deliberately does not include the + `location` value in `UIBackgroundModes`; optional alerts use CoreLocation + region monitoring/significant-change behaviour rather than persistent + real-time background tracking. - Location is the only sensitive permission requested. No contacts, photos, camera, mic. - No third-party SDKs → no SDK privacy manifests required.