# TestFlight Missing Compliance: näin korjaat sen pysyvästi

> Missing Compliance tarkoittaa, että Apple odottaa salausilmoitustasi. Vapauta build App Store Connectissa ja lisää avain, niin tila ei palaa.

Alkuperäinen sivu: [TestFlight Missing Compliance: näin korjaat sen pysyvästi](https://devoria.fr/fi/blog/testflight-missing-compliance-korjaus)
Kirjoittaja: [Mehdi Azizi](https://devoria.fr/fi/mehdi-azizi)
Julkaistu: 2026-11-06
Sisältö tarkistettu viimeksi: 2026-11-06


**Missing Compliance ei ole virhe: se on build, joka odottaa vastaustasi salauksesta.** Niin kauan kuin et ole vastannut, build on jumissa eivätkä testaajasi saa sitä. Tämän buildin kohdalla vastaat kysymyksiin App Store Connectin TestFlight-välilehdellä. Seuraavia varten lisäät Info.plist-tiedostoon avaimen ITSAppUsesNonExemptEncryption, tai Expolla app.json-tiedostoon `ios.config.usesNonExemptEncryption`, eikä tila enää palaa.

Teen iOS-appini Expolla. Solysin app.json-tiedostossa avaimen arvo on `false`, ja se on asetettu kahteen kertaan: `ios.config`-kohtaan ja `ios.infoPlist`-kohtaan. Tämä opas perustuu Applen sivuihin [buildien tiloista](https://developer.apple.com/help/app-store-connect/reference/app-uploads/app-build-statuses/) ja [beta-buildien vientivalvontatiedoista](https://developer.apple.com/help/app-store-connect/test-a-beta-version/provide-export-compliance-information-for-beta-builds/), jotka luin uudelleen 6. marraskuuta 2026.

## Mitä Missing Compliance tarkoittaa

Applen buildien tilaluettelo määrittelee sen yhdellä lauseella: vientivalvonnan dokumentaatio puuttuu, ja sinulta odotetaan toimenpidettä. Apple näyttää tilan keltaisena, eli se on käynnissä oleva prosessi, joka riippuu sinusta tai Applesta, ja kuvauksessa sanotaan erikseen, että sinulta odotetaan toimenpidettä.

Miksi Apple kysyy tätä? [Salauksen vientisääntöjä käsittelevä sivu](https://developer.apple.com/documentation/security/complying-with-encryption-export-regulations) selittää sen: kun lähetät buildin TestFlightiin tai App Storeen, lähetät sen palvelimelle Yhdysvaltoihin. Jos appiasi jaetaan Yhdysvaltojen ja Kanadan ulkopuolella, siihen sovelletaan Yhdysvaltojen vientilainsäädäntöä riippumatta siitä, missä maassa yrityksesi on. Ja heti kun app käyttää, sisältää tai integroi salausta, Apple katsoo sen olevan salausohjelmiston vientiä.

**Lopputulos: App Store Connect esittää vientivalvontakysymykset jokaisen uuden version kohdalla, ellei Info.plist jo vastaa niihin.** Siksi ensimmäinen Expo-build päätyy lähes aina tilaan Missing Compliance.

## Odottavan buildin vapauttaminen

Vaiheet tulevat Applen beta-buildien vientivalvontasivulta. Tarvitset roolin Account Holder, Admin tai App Manager.

1. Avaa Apps-kohdasta appisi ja sitten TestFlight-välilehti.
2. Valitse sivupalkista Builds-kohdan alta alusta.
3. Klikkaa Build-sarakkeessa kyseisen buildin kuvaketta tai numeroa.
4. Klikkaa Provide Export Compliance Information ja vastaa kysymyksiin.
5. Jos Apple pyytää dokumentaatiota, lähetä se klikkaamalla Go to App Encryption Page. Muuten klikkaa Save.

Apple kuvaa myös oikotien: buildin vieressä oleva Manage-linkki avaa samat kysymykset, ja Choose File -painikkeella voit liittää jo hyväksytyn dokumentaation. Kun tallennat, build siirtyy tilaan Ready to Submit, tai suoraan tilaan Testing, jos se menee sisäiselle ryhmälle. Ready to Test tulee vasta ulkoisten testaajien beta-tarkastuksen jälkeen.

**Eikö Manage-linkkiä voi klikata?** Tarkista ensin roolisi tiimissä: Apple sallii vastaamisen vain rooleille Account Holder, Admin ja App Manager, eikä Developer- tai Marketing-tili voi vastata. Apple ei dokumentoi muuta syytä. Jos build lähetettiin juuri, odota käsittelyn valmistumisesta kertovaa sähköpostia (siitä lisää oppaassa [build-numerosta ja versiosta](https://devoria.fr/fi/blog/app-store-connect-build-number-versio-buildinumero)) ja lataa sivu uudelleen.

## Älä vastaa enää koskaan: avain projektiisi

Apple sanoo sen beta-buildien sivulla: voit ilmoittaa Info.plist-tiedostossa, että appisi ei käytä salausta tai että se on vapautettu, eikä sinun tarvitse enää vastata jokaisen lähetyksen yhteydessä. Avaimen nimi on [ITSAppUsesNonExemptEncryption](https://developer.apple.com/documentation/bundleresources/information-property-list/itsappusesnonexemptencryption). Xcode näyttää sen nimellä App Uses Non-Exempt Encryption.

| Työkalusi           | Tiedosto     | Missä                          | Arvo  |
| ------------------- | ------------ | ------------------------------ | ----- |
| Expo (EAS Build)    | `app.json`   | `expo.ios.config`              | false |
| Expo, toinen tapa   | `app.json`   | `expo.ios.infoPlist`           | false |
| Pelkkä React Native | `Info.plist` | App Uses Non-Exempt Encryption | NO    |
| Xcode, Swift        | `Info.plist` | App Uses Non-Exempt Encryption | NO    |

Expossa avaimen nimi on `usesNonExemptEncryption`, ja [konfiguraatioviite](https://docs.expo.dev/versions/latest/config/app/) kertoo, että se kirjoittaa Applen avaimen buildin Info.plist-tiedostoon ja että `ios.config` on vain buildia varten: se ei näy tuotantomanifestissa.

```json
{
  "expo": {
    "ios": {
      "config": {
        "usesNonExemptEncryption": false
      }
    }
  }
}
```

Expossa `ios.infoPlist` hyväksyy avaimen myös Applen nimellä ja samalla arvolla: se on Solysin app.json-tiedoston toinen rivi. Natiiviprojektissa sama ilmoitus vie yhden rivin Info.plist-tiedostossa: avain App Uses Non-Exempt Encryption (nimi, jonka Xcode näyttää) arvolla NO. Arvo on boolean, ei merkkijono.

**Avain tulee voimaan seuraavasta buildista.** Jo lähetetty build pysyy tilassa Missing Compliance, kunnes vastaat App Store Connectissa: nämä kaksi toimenpidettä eivät korvaa toisiaan, vaan täydentävät toisiaan.

## false vai true: miten päätät

Apple määrittelee arvon NO näin: appisi, kolmannen osapuolen kirjastot mukaan lukien, ei käytä lainkaan salausta tai käyttää vain salausta, joka on vapautettu dokumentaatiovaatimuksista. Muuten arvo on YES.

Vientisääntöjen sivun mukaan yleensä vapautettua on käyttöjärjestelmään sisäänrakennettu salaus, kuten HTTPS-yhteydet URLSessionin kautta. Vapautettua ei ole oma salaus, jonka olet kirjoittanut tai upottanut. [Vientivalvonnan yleiskatsaus](https://developer.apple.com/help/app-store-connect/manage-app-information/overview-of-export-compliance/) lisää tärkeän muistutuksen: tulkinta on sinun vastuullasi, samoin sen seuraukset, jos vetoat vapautukseen virheellisesti.

Expo-appille, joka kutsuu API:a HTTPS:llä, tallentaa asetuksia ja myy tilausta, `false` on tavallinen vastaus. Appille, joka itse salaa viestejä, tiedostoja tai holvin, vastaus on `true`, ja Apple odottaa dokumentaatiota.

> Älä laita `false` refleksinä. Käy riippuvuutesi läpi: päästä päähän -salauksen kirjasto tai itse tehty salattu tallennus siirtää sinut dokumentaation puolelle.

## Jos appisi käyttää salausta, jota ei ole vapautettu

[Salausdokumentaation sivu](https://developer.apple.com/help/app-store-connect/manage-app-information/determine-and-upload-app-encryption-documentation/) kuvaa prosessin. App Information -kohdassa App Encryption Documentation -kohdan vieressä oleva lisäyspainike avaa kysymykset, sitten Choose File dokumentille ja lopuksi Save. Apple pyytää, että olet täyttänyt appin kuvauksen ja määrittänyt sen saatavuuden ensin, jotta se voi arvioida, riittääkö dokumentaatio. Tavoitteena on noin kaksi arkipäivää, kun hakemus on täydellinen.

Kun dokumentaatio on hyväksytty, Apple antaa arvon, joka lisätään Info.plist-tiedoston avaimeen `ITSEncryptionExportComplianceCode`. Sen kanssa kysymyksiä ei enää tule jokaisen lähetyksen yhteydessä. Tarkastuksen aikana buildisi näyttää tilan Waiting for Export Compliance Review tai In Compliance Review: sinulta ei odoteta mitään.

Kaksi Applen mainitsemaa asiaa, toinen vientisääntöjen sivulla ja toinen vientivalvonnan yleiskatsauksessa:

- **Vapautettukin salaus voi edellyttää vuosittaista itseluokitteluraporttia Yhdysvaltojen hallitukselle.** Sitä ei vaadita, jos käytät salausta, jota ei ole vapautettu, ja olet toimittanut dokumentaation Applelle.
- **Myös Ranska valvoo salaussovellusten tuontia ja vientiä.** Applen yleiskatsaus mainitsee koskeviksi alueiksi turvallisen tallennuksen, turvallisen viestinnän ja virustorjunnan, vapautuksina pankki- ja terveyssovellukset, ja ohjaa Ranskan ANSSI:n puoleen.

## Mitä TestFlightissa tapahtuu seuraavaksi

Vapautettu build kulkee TestFlight-buildin tavallisen elinkaaren, joka on kuvattu oppaassa [TestFlight iPhone-appin testaamiseen](https://devoria.fr/fi/blog/testflight-testaa-iphone-sovellus-ennen-lahetysta): sisäiset testaajat heti, ulkoiset testaajat beta-tarkastuksen jälkeen, ja vanheneminen 90 päivän kuluttua buildien tilaluettelon mukaan. Expo-lähetyksen muut mahdolliset pysähdyskohdat, kuten jo käytetty build-numero tai hylätty tiedosto, löytyvät artikkelista [EAS-lähetyksen virheet App Store Connectiin](https://devoria.fr/fi/blog/eas-submit-ios-virheet-korjaus), ja koko ketju artikkelista [Expo-appin julkaiseminen App Storessa EAS:llä](https://devoria.fr/fi/blog/eas-submit-ios-expo-sovellus-app-store).

[iOS & Android Kit](https://devoria.fr/fi/kits/ios) sisältää Expo-aloituskoodini, jossa tämä avain on valmiina, sekä polun ensimmäisestä buildista App Store -sivuun asti. Jos haluat tietää, mikä vielä estää julkaisusi, [ilmainen diagnoosi](https://devoria.fr/fi/diagnostic) vastaa muutamalla kysymyksellä ja lähettää sinulle tarkistuslistani Applen hylkäysten välttämiseen. Kaikki vaiheet löytyvät sivulta [sovelluksen julkaiseminen App Storessa](https://devoria.fr/fi/expertise/julkaise-sovellus-app-storeen).

## Usein kysytyt kysymykset

### Mitä Missing Compliance tarkoittaa TestFlightissa?

Build odottaa vientivalvontailmoitustasi eli vastaustasi salauksen käytöstä. Apple luokittelee sen tiloihin, jotka vaativat sinulta toimenpidettä. Build ei mene testaajille ennen kuin olet vastannut.

### Miksi Missing Compliancen Manage-linkkiä ei voi klikata?

Tarkista roolisi: Apple sallii vastaamisen vain rooleille Account Holder, Admin ja App Manager. Apple ei dokumentoi muuta syytä. Jos build saapui juuri, lataa sivu uudelleen käsittelyn valmistumisesta kertovan sähköpostin jälkeen.

### Appini käyttää vain HTTPS:ää, pitääkö minun vastata salauskysymykseen kyllä?

Applen mukaan käyttöjärjestelmään sisäänrakennettu salaus, kuten HTTPS-yhteydet URLSessionin kautta, on yleensä vapautettu dokumentaatiovaatimuksista. Silloin avaimen ITSAppUsesNonExemptEncryption arvo on NO, kunhan mikään kolmannen osapuolen kirjasto ei lisää omaa salausta.

### Pitääkö salauskysymyksiin vastata jokaisen buildin kohdalla?

Kyllä, niin kauan kuin Info.plist ei sisällä avainta ITSAppUsesNonExemptEncryption. Sen kanssa App Store Connect ei enää esitä kysymyksiä. Expossa se määritetään app.json-tiedostossa kohdassa `ios.config.usesNonExemptEncryption`.

### Missä salaus ilmoitetaan Expon app.json-tiedostossa?

app.json-tiedostossa kohdassa `expo.ios.config` arvolla `"usesNonExemptEncryption": false`, jos appisi ei käytä salausta, jota ei ole vapautettu. EAS Build kirjoittaa avaimen buildin Info.plist-tiedostoon. Se tulee voimaan seuraavasta buildista, ei jo lähetetystä.

### Estääkö Missing Compliance myös App Store -lähetyksen?

Vientivalvontakysymykset esitetään jokaisesta uudesta versiosta, oli se beta tai App Store. Buildia, joka ei ole vastannut niihin, ei voi jakaa. Info.plist-tiedoston avain hoitaa molemmat tapaukset kerralla.

### Pitääkö minun tehdä vuosittainen itseluokitteluraportti?

Apple huomauttaa, että vapautetunkin salauksen käyttö voi silti edellyttää vuosittaista itseluokitteluraporttia Yhdysvaltojen hallitukselle, ja ohjaa viralliseen menettelyyn. Jos appisi käyttää salausta, jota ei ole vapautettu, ja olet toimittanut dokumentaation Applelle, raporttia ei tarvita.


## Projektisi

[Review Kit](https://devoria.fr/fi/kits/app-review): App Store -tarkastuksen tarkistuslistani, korjatut Applen hylkäykseni, Google Playn lista ja kolme Claude Code -skilliä. 49 €.

[iOS & Android Kit](https://devoria.fr/fi/kits/ios): Tee iPhone- ja Android-sovelluksesi Claude Codella: sovellusteni pohjakoodi, polku kauppoihin asti ja kaikki kitit. 99 €.

[Diagnoosi: mikä erottaa sinut omasta iPhone-sovelluksestasi](https://devoria.fr/fi/diagnostic): 7 kysymystä, 60 sekuntia: tiedät, mikä oikeasti estää sinua julkaisemasta iPhone-sovellustasi, saat 4 vaiheen polkusi ja sinulle sopivan kitin.
