- domain-packs/ios-app/: komplett referanse-pakke (8 komponenter) — pack.json med components-map, conventions.md, 4 patterns/, gotchas.md, checklist.md splittet i 3 (App Store-submission + security-privacy/MASVS 2.1 + accessibility/WCAG 2.2 AA), 3 scaffold/-maler (PrivacyInfo.xcprivacy-plist, NSUsageDescription-inventar, ASC-metadata), eksempel-feature-brief i Voyage strict-mode-format, glossary.md. Hver teknisk påstand verifisert mot Apple Developer / W3C WAI / OWASP MAS. - domain-packs/claude-code-plugin/: stub — pack.json + conventions.md + gotchas.md + checklist.md + glossary.md ferdige (ekstrahert fra ktg-privat-konvensjoner); patterns/scaffold/examples er stubs. - docs/domain-pack-spec.md: § D2/D3/D4/D7 + restrisiko oppdatert — pack.json components-felt, core/supplementary låst til manifestet, checklist-splitt-konvensjon, snapshot-materialiserings-mekanikk presisert, iOS-versjons-korreksjon (iOS 26, ikke "iOS 18/19"), D7 → "forfattet i S6". - prototype-run/friksjon.md: #9 (Akashic-briefen refererer "iOS 19" som ikke finnes — rettes i S7) + S6-prosessnotater (checklist-splitt bekreftet nødvendig, components-gap fylt, verifiserings-asymmetri ios-app vs claude-code-plugin notert). - CLAUDE.md: peker til domain-packs/ under § Status. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
58 lines
4.9 KiB
Markdown
58 lines
4.9 KiB
Markdown
<!-- domain-pack: ios-app · component: checklists · core -->
|
||
<!-- verified 2026-05-12 against Apple App Store Connect / Review Guidelines / Upcoming Requirements. -->
|
||
|
||
# iOS-app — sjekklister (index + App Store-submission)
|
||
|
||
Fase-exit-kriterier. **Dette er komponenten som bærer det fase 5 ellers ville gjenoppfunnet** (friksjon #7). En `[skip]`-merket linje må begrunnes i `00-context/pack-overrides.md`.
|
||
|
||
**Sub-sjekklister (lastes uavhengig):**
|
||
- `checklist-security-privacy.md` — OWASP MASVS 2.1 (8 kontroll-grupper) + `PrivacyInfo.xcprivacy`-mal + App Privacy Details "nutrition label".
|
||
- `checklist-accessibility.md` — WCAG 2.2 AA inkl. de 4 nye 2.2-AA-kriteriene.
|
||
|
||
---
|
||
|
||
## A. App Store Connect — metadata før innsending
|
||
|
||
- [ ] App-navn, undertittel, beskrivelse, nøkkelord, support-URL satt.
|
||
- [ ] **Skjermbilder** i påkrevd basestørrelse: 1320×2868 px (6,9″ iPhone) + 2064×2752 px (13″ iPad hvis universal). Flat PNG/JPG, RGB, **ingen alfakanal**. Apple skalerer ned for mindre enheter. ([App Store Connect — Screenshot specifications](https://developer.apple.com/help/app-store-connect/reference/app-information/screenshot-specifications/))
|
||
- [ ] **Alders-rating:** revidert spørreskjema (4+/9+/12+/13+/16+/18+) fullført. ([Apple — Age rating update](https://developer.apple.com/news/?id=ks775ehf))
|
||
- [ ] **Eksport-compliance:** krypteringsbruk besvart (`ITSAppUsesNonExemptEncryption` i Info.plist *eller* svar i App Store Connect). Standard-HTTPS via system-API regnes normalt som unntatt — men spørsmålet **må** besvares.
|
||
- [ ] **Content rights:** erklæring om appen inneholder/viser tredjeparts-innhold du har rett til.
|
||
- [ ] **App Privacy Details** ("nutrition label") utfylt og stemmer med faktisk databehandling — inkl. alle SDK-er. Se `checklist-security-privacy.md` § App Privacy Details.
|
||
- [ ] **`PrivacyInfo.xcprivacy`** i bygget, korrekt utfylt (påkrevd siden 2024-05-01). Mal: `scaffold/PrivacyInfo.xcprivacy`. Se `checklist-security-privacy.md`.
|
||
- [ ] Bygget med **påkrevd SDK** (iOS 26-SDK / Xcode 26+, krav siden 2026-04-28).
|
||
- [ ] Versjon + build-nummer økt; release-notater skrevet.
|
||
|
||
## B. Info.plist & entitlements
|
||
|
||
- [ ] **`NSUsageDescription` for hver beskyttet ressurs appen bruker** (location, kamera, mikrofon, foto, kontakter, kalender, Bluetooth, Face ID, …). Inventar-mal: `scaffold/NSUsageDescription-inventory.md`. (Notifikasjoner: ingen nøkkel — men forklar i onboarding.)
|
||
- [ ] Capabilities matcher faktisk bruk (App Groups, Push, Live Activities `NSSupportsLiveActivities`, …) — ingen ubrukte.
|
||
- [ ] `NSAppTransportSecurity`: ingen `NSAllowsArbitraryLoads` uten begrunnelse; per-domene-unntak dokumentert.
|
||
- [ ] Hvis tracking: `NSUserTrackingUsageDescription` + ATT-prompt implementert.
|
||
|
||
## C. App Store Review Guidelines — vanlige avvisnings-triggere
|
||
|
||
- [ ] **4.2 Minimum functionality** — appen gjør noe meningsfullt nativt; ikke ren web-wrapper, ikke for tynn.
|
||
- [ ] **1.2 / 2.3 Metadata** — skjermbilder viser faktisk UI; beskrivelse stemmer; ingen villedende påstander.
|
||
- [ ] **2.1 Completeness** — ingen krasj, ingen ødelagte lenker, ingen placeholder-innhold; alle URL-er i metadata fungerer.
|
||
- [ ] **5.1.1 Data collection** — purpose-strings dekker all permission-bruk; ber ikke om mer data enn nødvendig.
|
||
- [ ] **5.1.2 Data use & sharing** — tredjeparts-deling (inkl. ekstern AI) deklarert i App Privacy Details.
|
||
- [ ] **3.1.1 In-App Purchase** — digitale varer som låses opp etter installasjon går via IAP (engangs paid-up-front-app er greit).
|
||
- [ ] **4.0 Design** — ikke copycat / generisk template.
|
||
- [ ] Demo-konto / instruksjoner i "App Review Information" hvis appen krever login eller spesielt oppsett.
|
||
[Kilde: [App Store Review Guidelines](https://developer.apple.com/app-store/review/guidelines/)]
|
||
|
||
## D. Region-spesifikke krav (hvis du distribuerer der)
|
||
|
||
- [ ] **EU — DSA trader-status:** verifisert kontaktinfo i App Store Connect (DSA art. 30–31). Uten det fjernes appen fra EU App Store. ([Apple — DSA requirement](https://developer.apple.com/news/upcoming-requirements/?id=02172025a))
|
||
- [ ] **Kina — ICP-filing:** ICP-filing-nummer fra MIIT i App Store Connect. Krever kinesisk juridisk enhet + Kina-hostet server.
|
||
- [ ] **Sør-Korea — GRAC:** spill må ha GRAC-rating; loot-box-sannsynlighet opplyst (Game Industry Promotion Act). Apple mapper globale ratinger automatisk.
|
||
- [ ] Andre regioner: sjekk om appens innhold/funksjon utløser lokale krav.
|
||
|
||
## E. Pre-submission røyktest
|
||
|
||
- [ ] Ren install på fysisk enhet (ikke bare simulator); permission-flows fungerer og degraderer nådig ved nektelse.
|
||
- [ ] Onboarding forklarer hver permission *før* prompten.
|
||
- [ ] Widget / Live Activity / Lock Screen-features fungerer eller er trygt fraværende.
|
||
- [ ] Dark mode, Dynamic Type (største størrelse), VoiceOver — grunnleggende gjennomgang. Detaljer: `checklist-accessibility.md`.
|
||
- [ ] `checklist-security-privacy.md` gjennomgått; `checklist-accessibility.md` gjennomgått.
|