Missing Compliance i TestFlight: slik fikser du det for godt
Av Mehdi Azizi
Publisert , 9 min
Missing Compliance betyr at Apple venter på krypteringserklæringen din. Lås opp builden i App Store Connect, og sett nøkkelen så du slipper å se den igjen.
Missing Compliance er ikke en feil: det er en build som venter på svaret ditt om kryptering. Så lenge du ikke har svart, er builden blokkert for testerne dine. For denne builden svarer du på spørsmålene i TestFlight-fanen i App Store Connect. For de neste setter du nøkkelen ITSAppUsesNonExemptEncryption i Info.plist, eller ios.config.usesNonExemptEncryption i app.json med Expo, og statusen kommer ikke tilbake.
iOS-appene mine er laget med Expo. I app.json for Solys er nøkkelen satt til false, to ganger: i ios.config og i ios.infoPlist. Denne guiden følger Apples sider om build-statuser og om eksportsamsvar for beta-builds, lest på nytt 6. november 2026.
Hva Missing Compliance betyr
Apples liste over build-statuser definerer det i én setning: dokumentasjonen for eksportsamsvar mangler, og det forventes en handling fra deg. Apple viser den i gult, fargen for en pågående prosess som avhenger av deg eller av Apple, og beskrivelsen presiserer at det forventes en handling fra deg.
Hvorfor spør Apple? Siden om eksportregler for kryptering forklarer det: når du sender en build til TestFlight eller App Store, sender du den til en server i USA. Hvis appen din distribueres utenfor USA og Canada, faller den inn under amerikansk eksportlovgivning, uansett hvilket land firmaet ditt er i. Og så snart en app bruker, inneholder eller bygger inn kryptering, regner Apple det som eksport av krypteringsprogramvare.
Resultatet: for hver nye versjon stiller App Store Connect deg spørsmålene om samsvar, med mindre Info.plist allerede svarer på dem. Det er derfor en første Expo-build nesten alltid havner i Missing Compliance.
Lås opp builden som venter
Stegene kommer fra Apples side om eksportsamsvar for beta-builds. Du trenger rollen Account Holder, Admin eller App Manager.
- Under Apps åpner du appen din, og så fanen TestFlight.
- I sidefeltet, under Builds, velger du plattform.
- I kolonnen Build klikker du på ikonet eller nummeret til builden det gjelder.
- Klikk på Provide Export Compliance Information, og svar på spørsmålene.
- Hvis Apple ber om dokumentasjon, klikker du på Go to App Encryption Page for å sende den. Ellers klikker du på Save.
Apple beskriver også snarveien: ved siden av builden åpner lenken Manage de samme spørsmålene, og Choose File lar deg legge ved dokumentasjon som allerede er godkjent. Når det er lagret, går builden til Ready to Submit, eller rett til Testing hvis den skal til en intern gruppe. Ready to Test kommer først etter beta-gjennomgangen for eksterne testere.
Er lenken Manage ikke klikkbar? Sjekk først rollen din i teamet: Apple forbeholder svaret rollene Account Holder, Admin og App Manager, en Developer- eller Marketing-konto kan ikke svare. Apple dokumenterer ingen annen årsak. Hvis builden nettopp er sendt, venter du på e-posten om at behandlingen er ferdig, beskrevet i guiden om build-nummer og versjon, og laster siden på nytt.
Aldri svar igjen: nøkkelen i prosjektet ditt
Apple sier det på siden om beta-builds: du kan angi i Info.plist at appen din ikke bruker kryptering, eller at den er unntatt, og da slipper du å svare ved hver innsending. Nøkkelen heter ITSAppUsesNonExemptEncryption. Xcode viser den som App Uses Non-Exempt Encryption.
| Verktøyet ditt | Fil | Hvor | Verdi |
|---|---|---|---|
| Expo (EAS Build) | app.json | expo.ios.config | false |
| Expo, annen vei | app.json | expo.ios.infoPlist | false |
| Ren React Native | Info.plist | App Uses Non-Exempt Encryption | NO |
| Xcode, Swift | Info.plist | App Uses Non-Exempt Encryption | NO |
Med Expo heter nøkkelen usesNonExemptEncryption, og konfigurasjonsreferansen presiserer at den skriver Apple-nøkkelen inn i Info.plist for builden, og at ios.config bare brukes til builden: den vises ikke i produksjonsmanifestet.
{
"expo": {
"ios": {
"config": {
"usesNonExemptEncryption": false
}
}
}
}
Med Expo godtar ios.infoPlist også nøkkelen under Apple-navnet, med samme verdi: det er den andre linjen i app.json for Solys. I et native prosjekt holder samme erklæring med én linje i Info.plist: nøkkelen App Uses Non-Exempt Encryption, som er navnet Xcode viser, med verdien NO. Verdien er en boolsk verdi, ikke en streng.
Nøkkelen gjelder fra neste build. Builden som allerede er sendt, blir stående i Missing Compliance til du har svart i App Store Connect: de to handlingene erstatter ikke hverandre, de utfyller hverandre.
false eller true: slik bestemmer du deg
Apple definerer verdien NO slik: appen din, inkludert tredjepartsbiblioteker, bruker ingen kryptering, eller bare kryptering som er unntatt fra dokumentasjonskravene. Ellers er det YES.
Det som vanligvis er unntatt, ifølge siden om eksportregler: kryptering innebygd i systemet, som HTTPS-tilkoblinger via URLSession. Det som ikke er det: proprietær kryptering, som du har skrevet eller bygget inn. Oversikten over eksportsamsvar legger til en viktig påminnelse: det er du som har ansvaret for tolkningen, og for konsekvensene, hvis du feilaktig påberoper deg et unntak.
For en Expo-app som kaller et API over HTTPS, lagrer preferanser og selger et abonnement, er false det vanlige svaret. For en app som selv krypterer meldinger, filer eller et hvelv, er svaret true, og Apple forventer dokumentasjon.
Ikke sett
falsepå refleks. Gå gjennom avhengighetene dine: et bibliotek for ende-til-ende-kryptering eller en hjemmelaget kryptert lagring flytter deg over på dokumentasjonssiden.
Hvis appen din bruker kryptering som ikke er unntatt
Siden om krypteringsdokumentasjon beskriver prosessen. Under App Information, ved siden av App Encryption Documentation, åpner legg til-knappen spørsmålene, så Choose File for dokumentet, så Save. Apple ber deg fylle ut appbeskrivelsen og sette tilgjengeligheten først, slik at de kan vurdere om dokumentasjonen er tilstrekkelig. De sikter mot omtrent to virkedager når saken er komplett.
Når dokumentasjonen er godkjent, gir Apple deg en verdi som skal inn i nøkkelen ITSEncryptionExportComplianceCode i Info.plist. Med den slipper du spørsmålene ved hver innsending. Under gjennomgangen viser builden Waiting for Export Compliance Review eller In Compliance Review: ingen handling forventes fra deg.
To punkter Apple påpeker, det ene på siden om eksportregler, det andre i oversikten over samsvar:
- Selv med unntatt kryptering kan det kreves en årlig selvklassifiseringsrapport til amerikanske myndigheter. Det kreves ikke hvis du bruker kryptering som ikke er unntatt og har gitt dokumentasjonen til Apple.
- Frankrike kontrollerer også import og eksport av krypteringsapper. Apples oversikt nevner sikker lagring, sikker kommunikasjon og antivirus som berørte områder, med unntak for bank- og helseapper, og viser til ANSSI.
Hva som skjer videre i TestFlight
Den opplåste builden følger det vanlige livsløpet til en TestFlight-build, beskrevet i guiden TestFlight for å teste iPhone-appen din: interne testere med en gang, eksterne testere etter beta-gjennomgangen, og utløp etter 90 dager, ifølge listen over build-statuser. De andre mulige stoppene for en Expo-innsending, som et build-nummer som allerede er brukt eller en avvist fil, finner du i EAS-innsendingsfeil mot App Store Connect, og hele kjeden i publiser en Expo-app på App Store med EAS.
iOS & Android Kit inneholder startkoden min for Expo, med denne nøkkelen allerede satt, og løypa fra første build til App Store-siden. Vil du vite hva som fortsatt blokkerer publiseringen din, svarer den gratis diagnosen deg med noen få spørsmål og sender deg sjekklisten min mot avvisninger fra Apple. Alle stegene finner du i publiser en app på App Store.
Ofte stilte spørsmål
Hva betyr Missing Compliance i TestFlight?
Builden venter på erklæringen din om eksportsamsvar, altså svaret ditt om bruk av kryptering. Apple regner den blant statusene som krever en handling fra deg. Builden går ikke ut til testerne før du har svart.
Hvorfor er lenken Manage under Missing Compliance ikke klikkbar?
Sjekk rollen din: Apple forbeholder svaret rollene Account Holder, Admin og App Manager. Apple dokumenterer ingen annen årsak. Hvis builden nettopp har kommet, laster du siden på nytt etter e-posten om at behandlingen er ferdig.
Appen min bruker bare HTTPS, må jeg svare ja på kryptering?
Apple oppgir at kryptering innebygd i systemet, som HTTPS-tilkoblinger via URLSession, vanligvis er unntatt fra dokumentasjonskravene. Da settes nøkkelen ITSAppUsesNonExemptEncryption til NO, forutsatt at ingen tredjepartsbiblioteker legger til proprietær kryptering.
Må jeg svare på krypteringsspørsmålene for hver build?
Ja, så lenge Info.plist ikke inneholder nøkkelen ITSAppUsesNonExemptEncryption. Med den stiller ikke App Store Connect spørsmålene lenger. Med Expo setter du den i app.json via ios.config.usesNonExemptEncryption.
Hvor oppgir jeg kryptering i app.json med Expo?
I app.json, under expo.ios.config, med "usesNonExemptEncryption": false hvis appen din ikke bruker kryptering som ikke er unntatt. EAS Build skriver nøkkelen inn i Info.plist for builden. Den gjelder fra neste build, ikke for den som allerede er sendt.
Blokkerer Missing Compliance også innsending til App Store?
Spørsmålene om eksportsamsvar stilles for hver nye versjon, beta eller App Store. En build som ikke har svart på dem, kan ikke distribueres. Nøkkelen i Info.plist løser begge tilfellene på én gang.
Må jeg levere en årlig selvklassifiseringsrapport?
Apple påpeker at bruk av unntatt kryptering likevel kan kreve en årlig selvklassifiseringsrapport til amerikanske myndigheter, og viser til den offisielle prosedyren. Hvis appen din bruker kryptering som ikke er unntatt og du har gitt dokumentasjonen til Apple, trengs ikke denne rapporten.

