# eas submit iOS hibák: gyakori üzenetek és javításuk

> Elakadt az eas submit? Az EAS és az App Store Connect valódi hibaüzenetei, okuk és javításuk: ascAppId, API-kulcs, Apple-szerződés, ITMS-kódok.

Eredeti oldal: [eas submit iOS hibák: gyakori üzenetek és javításuk](https://devoria.fr/hu/blog/eas-submit-ios-hibak-javitas)
Szerző: [Mehdi Azizi](https://devoria.fr/hu/mehdi-azizi)
Megjelenés: 2026-11-04
A tartalom utolsó frissítése: 2026-11-04


Ha az `eas submit --platform ios` elhasal, az üzenet szinte mindig megmondja, hol keresd a hibát. **Vagy hiányos az EAS-konfigurációd, vagy az Apple-fiókod blokkol, vagy az Apple elutasítja a binárist.** Az első két eset pár perc alatt javítható, új build nélkül. A harmadikat egy ITMS-kódról ismered fel, és szinte mindig új buildet igényel.

Az iOS-appjaimat, köztük a Solyst, a TradaZent és a Nolerát, Expóval és EAS-szel adom ki. Az itt idézett üzeneteket az EAS CLI forráskódjából másoltam ki, [az Expo hivatalos GitHub-repójából](https://github.com/expo/eas-cli), 2026. november 3-i állapot szerint. Az Expo régi fóruma már a Discordra irányít át, így a kód marad a legmegbízhatóbb forrás. A teljes folyamathoz, az `eas.json` fájltól a review-ra küldésig, előbb olvasd el ezt: [EAS Submit iOS: Expo-app kiadása az App Store-ba](https://devoria.fr/hu/blog/eas-submit-ios-expo-app-store-kozzetetel). Itt javítunk.

## Mit csinál az eas submit, és mi kell hozzá

[Az Expo dokumentációja](https://docs.expo.dev/deploy/submit-to-app-stores/) szerint a parancs feltölti az `.ipa` fájlodat az App Store Connectbe. A build az Apple feldolgozása után jelenik meg a TestFlightban, általában 10-15 perc alatt. **Nem küldi review-ra az appodat:** ezt az App Store Connectben kell megtenned.

[Az Expo iOS-feltöltésről szóló oldala](https://docs.expo.dev/submit/ios/) három előfeltételt sorol fel:

- **fizetős Apple Developer-fiók**, ez minden App Store-feltöltéshez kötelező;
- **a bundle azonosító** az `ios.bundleIdentifier` mezőben;
- **telepített EAS CLI**, bejelentkezve az Expo-fiókodba.

Interakció nélküli küldéshez ugyanez az oldal két további beállítást ír elő:

- **`ascAppId`** az `eas.json` `submit` profiljában, ez az App Store Connect-adatlapod száma;
- **egy App Store Connect API-kulcs**, amelyet az EAS kezel, vagy te adsz meg. A létrehozását, a szerepkörét és a visszavonását itt részletezem: [App Store Connect API-kulcs (.p8)](https://devoria.fr/hu/blog/app-store-connect-api-kulcs-p8-letrehozas-hasznalat).

A minimális profil pár sorból áll. Az érték kitalált:

```json
{
  "submit": {
    "production": {
      "ios": {
        "ascAppId": "1234567890"
      }
    }
  }
}
```

Ha az EAS már tárolja az API-kulcsodat, ez a profil elég. A legtöbb appomnál így van.

## Az üzenet olvasása: három hibacsalád

Mielőtt a javítást keresnéd, nézd meg, hol áll meg a parancs. Ezt a táblázatot használom minden hibánál.

| A hiba időpontja                              | Család              | Új build kell? |
| --------------------------------------------- | ------------------- | -------------- |
| Bármilyen feltöltés előtt                     | EAS-konfiguráció    | Nem            |
| Kapcsolódás az Apple-höz, adatlap létrehozása | Apple-fiók          | Nem            |
| Feltöltés után, ITMS-90xxx kód                | Elutasított bináris | Szinte mindig  |

A részleteket a beküldés oldalán látod, az Expo dashboardján. [Az Expo azt javasolja](https://docs.expo.dev/deploy/submit-to-app-stores/), hogy ott olvasd el a naplókat, és keresd a „Build Annotations” buborékot, amely a gyakori hibaokokat jelzi. A terminálban a `--verbose` kapcsoló mindig megjeleníti az EAS Submit naplóit, [az EAS CLI referenciája](https://docs.expo.dev/eas/cli/) szerint.

## EAS-konfigurációs hibák

### „Set ascAppId in the submit profile (eas.json) or re-run this command in interactive mode.”

A parancsot `--non-interactive` kapcsolóval futtattad, például CI-ban, és a profilodban nincs `ascAppId`. [Az EAS CLI kódja](https://github.com/expo/eas-cli/blob/main/packages/eas-cli/src/submit/ios/IosSubmitCommand.ts) ilyenkor leáll: se kérdezni nem tud, se létrehozni helyetted az adatlapot.

**Javítás: másold be az adatlapod számát az `ascAppId` mezőbe.** [Az Expo megmutatja, hol találod](https://github.com/expo/fyi/blob/main/asc-app-id.md): az App Store Connectben nyisd meg az appodat, majd az App Information részt. Ez az Apple ID mező a General Information alatt, egy nagyjából tízjegyű szám. Nem az Apple e-mail-címed, és nem is a bundle azonosítód.

A Nolerán `ascAppId` nélkül a parancs Apple Developer-munkamenetet kért, ami lejár. Amióta a szám benne van az `eas.json`-ban, a feltöltés semmit nem kér.

> Az `ascAppId`-t a build előtt add hozzá, ne utána. Az SDK 57-ig [az Expo által számolt ujjlenyomat](https://github.com/expo/expo/blob/main/packages/@expo/fingerprint/src/sourcer/Expo.ts) mindig tartalmazza az `eas.json`-t. A Vigién, ahol a runtime verzió a `fingerprint` szabályt követi, a szám build utáni hozzáadása megváltoztatta az ujjlenyomatot: egy utána kiadott frissítés soha nem jutott volna el a telepített buildre. Az SDK 58 óta az ujjlenyomat alapértelmezett presetje, a `balanced`, figyelmen kívül hagyja az `eas.json`-t, [az Expo changelogja](https://github.com/expo/expo/blob/main/packages/@expo/fingerprint/CHANGELOG.md) szerint.

### „App Store Connect API Keys cannot be set up in --non-interactive mode.”

A profilodban nincs kulcs, és az EAS-nek sincs az appodhoz rendelt kulcsa. [Az Expo leírja](https://docs.expo.dev/submit/ios/): nem interaktív módban a parancs nem tud kulcsot kérni tőled, ezért ezzel az üzenettel elhasal.

Két lehetséges javítás:

- **Hagyd, hogy az EAS hozza létre és tárolja a kulcsot.** Futtasd egyszer az `eas credentials --platform ios` parancsot interaktív módban a gépeden, és hagyd, hogy beállítson egy App Store Connect API-kulcsot az appodhoz.
- **Add meg a saját kulcsodat** az `ascApiKeyPath`, `ascApiKeyIssuerId` és `ascApiKeyId` mezőkben. [Az eas.json referenciája](https://docs.expo.dev/eas/json/) szerint ez a három mező környezeti változót is elfogad, például `$ASC_API_KEY_PATH`.

A legutóbbi appomnál a `--auto-submit` kapcsoló Apple-azonosítót kért, hogy létrehozza a feltöltési kulcsát. Beírtam a saját kulcsom három mezőjét a munkapéldányom profiljába, amit soha nem commitoltam. Aztán a kész buildet `--id` és `--non-interactive` kapcsolókkal küldtem fel.

### „EXPO_APPLE_APP_SPECIFIC_PASSWORD must be in the format xxxx-xxxx-xxxx-xxxx, where x is a lowercase letter.”

A változóban nem alkalmazásspecifikus jelszó van, gyakran maga az Apple-jelszavad. [Az EAS CLI](https://github.com/expo/eas-cli/blob/main/packages/eas-cli/src/submit/ios/IosSubmitCommand.ts) minden feltöltés előtt ellenőrzi ezt a formátumot.

[Az Apple súgója](https://support.apple.com/en-us/102654) szerint alkalmazásspecifikus jelszót az account.apple.com oldalon, az App-Specific Passwords résznél generálhatsz, bekapcsolt kétlépcsős hitelesítéssel. Amint megváltoztatod az Apple-fiókod jelszavát, visszavonódik. **Az Expo ezt a módszert [kevésbé biztonságosnak tartja az API-kulcsnál](https://github.com/expo/fyi/blob/main/apple-app-specific-password.md), ami az alapértelmezett és ajánlott módszere.**

## Apple-fiókhibák

### „… agree to the latest Program License Agreement in your developer account.”

A teljes üzenet így kezdődik: „You currently don't have access to this membership resource”. Az Apple nyers válaszában ez is szerepelhet: „Unable to process request - PLA Update available”. Az EAS újabb feltöltési lépései inkább ezt írják ki: „A required Apple agreement is missing or has expired”.

Az ok ugyanaz: az Apple frissített egy szerződést, és senki nem fogadta el. **Szerződést csak a fiók tulajdonosa, az Account Holder fogadhat el**, [az Apple szerepkör-táblázata](https://developer.apple.com/help/account/access/roles/) szerint. [Az EAS kódja](https://github.com/expo/eas-cli/blob/main/packages/build-tools/src/steps/utils/ios/AscApiClient.ts) arra kéri, hogy menjen az App Store Connect Business oldalára, majd, ha az Apple felajánlja, a developer.apple.com-os fiókjába. Utána futtasd újra a parancsot. A fizetős appok szerződésének saját útmutatója van: [Paid Apps Agreement az App Store Connectben](https://devoria.fr/hu/blog/paid-apps-agreement-statuszok-w-8ben-elso-kifizetes).

### „App Store Connect rejected the API authentication credentials.”

Az Apple 401-es hibával, `NOT_AUTHORIZED` válasszal felelt. [Az EAS](https://github.com/expo/eas-cli/blob/main/packages/build-tools/src/steps/utils/ios/AscApiClient.ts) három okot említ: a kulcs már nem aktív, a kulcs egy másik App Store Connect-fiókhoz tartozik, vagy hibás a Key ID, a kulcs tartalma vagy az Issuer ID.

Ellenőrizd a két azonosítót az App Store Connectben, a Users and Access menü Integrations fülén. [Az Apple](https://developer.apple.com/documentation/appstoreconnectapi/generating-tokens-for-api-requests) szerint az Issuer ID az oldal tetején látszik, a Key ID az aktív kulcsok listájában. **Egy visszavont kulcs soha nem aktiválható újra.** [Az Apple](https://developer.apple.com/documentation/appstoreconnectapi/revoking-api-keys) 30 napig mutatja a Revoked alatt: újat kell generálnod.

### „App Store Connect app for application identifier … was not found.”

Az `ascAppId` által megjelölt adatlap nem található a kulcsoddal. [Az EAS](https://github.com/expo/eas-cli/blob/main/packages/build-tools/src/steps/utils/ios/AscApiUtils.ts) arra kér, ellenőrizd ezt a számot, és azt, hogy a kulcs valóban hozzáfér-e az apphoz a megfelelő fiókban. Még néhány, a kulccsal látható appot is kilistáz. Az Apple saját feltöltőeszközeivel ugyanez a probléma „No suitable application records were found” formában jelenik meg.

Három ok szokott előfordulni, ebből kettőt [ebben az Apple-fórumszálban](https://developer.apple.com/forums/thread/106806) találtak:

- **Az adatlap nem létezik.** Hozd létre az App Store Connectben, vagy töröld az `ascAppId`-t, hogy a parancs hozza létre.
- **A szám egy másik fiókból származik.** Egy másik csapat vagy másik projekt `ascAppId`-ját másoltad be.
- **A felhasználónak nincs hozzáférése az apphoz.** Egy App Manager vagy Developer bizonyos appokra korlátozható. Egy csapatkulcs viszont [a fiók összes appjához hozzáfér](https://developer.apple.com/documentation/appstoreconnectapi/creating-api-keys-for-app-store-connect-api).

### „… is not available to team” vagy „… is not available to provider”

Ez az üzenet akkor jelenik meg, amikor az EAS hozza létre helyetted az adatlapot, mert nincs `ascAppId`. A bundle azonosítót már egy másik csapat lefoglalta. [Az EAS arra kér](https://github.com/expo/eas-cli/blob/main/packages/eas-cli/src/credentials/ios/appstore/ensureAppExists.ts), hogy változtasd meg az appod konfigurációjában, majd futtasd újra.

### „App name "…" is already taken. Using generated name "…"”

Ez nem hiba. Ha a név már foglalt az App Store-ban, az EAS hat véletlen karaktert fűz hozzá, és újrapróbálja, legfeljebb ötször. Az adatlapot később átnevezheted az App Store Connectben. Ha el akarod kerülni, add meg az `appName` és a `language` mezőt a profilban az első feltöltés előtt: `language` nélkül [az elsődleges nyelv `en-US`](https://docs.expo.dev/eas/json/).

## Bináris hibák: az ITMS-kódok

Feltöltés után az Apple feldolgozza a buildet. Ha elutasítja, a napló egy vagy több ITMS-kódot ír ki. Ezeket ismeri fel és fordítja le [az EAS feltöltési lépése](https://github.com/expo/eas-cli/blob/main/packages/build-tools/src/steps/functions/uploadToAsc.ts):

| ITMS-kód                   | Mit utasít el az Apple                 | Javítás                 |
| -------------------------- | -------------------------------------- | ----------------------- |
| 90189                      | Már foglalt buildszám                  | `autoIncrement`         |
| 90062, 90186, 90478        | Lezárt vagy már túllépett verzió       | Emeld a `version`-t     |
| 90683                      | Hiányzó engedélykérő szöveg            | `ios.infoPlist`         |
| 90725                      | Túl régi iOS SDK                       | iOS image vagy Expo SDK |
| 90054, 90055               | A bundle eltér a megcélzott adatlaptól | Javítsd az `ascAppId`-t |
| 90022, 90023, 90391, 90713 | Hiányzó vagy rosszul deklarált ikonok  | Nézd át az ikonokat     |
| 90771                      | Hiányzó háttérfeladat-azonosítók       | `ios.infoPlist`         |

Három pontosítás ezekből az üzenetekből:

- **A buildszám verziónként egyedi.** A 90189-re az EAS az `"autoIncrement": true` beállítást javasolja az `eas.json`-ban. Minden részlet itt: [buildszám és verzió](https://devoria.fr/hu/blog/app-store-connect-build-number-verzio-buildszam).
- **A 90725-re** az EAS azt javasolja, válassz újabb iOS image-et az `eas.json`-ban, és ha kell, válts egy támogatott Expo SDK-ra.
- **A 90771-nél** az Info.plist deklarálja a `processing` háttérmódot, de a `BGTaskSchedulerPermittedIdentifiers` kulcsot nem.

A 90054 és 90055 kivételével, ahol elég a jó adatlapot vagy egy másik buildet megcélozni, **a javítás a binárist érinti: készíts új buildet, majd küldd fel újra.** Két kódnak saját útmutatója van: [ITMS-90683 Expóval](https://devoria.fr/hu/blog/itms-90683-missing-purpose-string-expo) és [ITMS-90725](https://devoria.fr/hu/blog/itms-90725-sdk-version-issue-javitasa-expo).

2026 szeptemberének végén a Solys egyik buildjét ITMS-90683 miatt utasították el leadáskor. Egy konfigurációs takarítás során kivettem egy fotókra vonatkozó engedélykérő szöveget. A Solys nem használ fotókat, de a projekt egyik könyvtára meghívja az iOS Photos API-ját. **Az Apple a binárist elemzi, nem a tényleges használatot:** azóta soha nem törlöm ezeket a szövegeket.

A Missing Compliance státusz viszont nem feltöltési hiba. A titkosításra vonatkozó nyilatkozatod hiányzik, ezt [az EAS-es kiadási útmutató](https://devoria.fr/hu/blog/eas-submit-ios-expo-app-store-kozzetetel) magyarázza el.

## Az ellenőrzőlistám minden feltöltés előtt

- Az `ascAppId` a `submit` profilban van, a build előtt hozzáadva.
- Az API-kulcsot az EAS kezeli, vagy a három mezője egy repón kívül tárolt `.p8` fájlra mutat.
- Az Account Holder elfogadta a legfrissebb szerződéseket az App Store Connectben.
- Az `autoIncrement` be van kapcsolva, `"appVersionSource": "remote"` mellett, amit [az Expo ajánl](https://docs.expo.dev/build-reference/app-versions/) az EAS CLI 12 óta.
- A `version` nagyobb, mint a legutóbbi jóváhagyott verzió.
- A binárisban lévő minden érzékeny API-nak megvan az engedélykérő szövege.
- Új appnál az `appName` és a `language` ki van töltve az első feltöltés előtt.

## Az első appod feltöltése elakadás nélkül

A parancs csak egy lépés. Az [iOS & Android Kit](https://devoria.fr/hu/kits/ios) az appjaim kiinduló kódjából indul, előfizetésekkel együtt, és négy lépésben visz el az App Store-ig, a saját tempódban.

Ha az első kiadásodra készülsz, [csináld meg az ingyenes diagnózist](https://devoria.fr/hu/diagnostic): megmondja, mi akaszt meg valójában, és elküldi az Apple-elutasítás elleni ellenőrzőlistámat. Az adatlaphoz, a képernyőképekhez és a jóváhagyáshoz az [app kiadása az App Store-ban](https://devoria.fr/hu/expertise/alkalmazas-kozzetetele-app-store) oldal minden lépést végigvesz.

## Gyakori kérdések

### Miért csak CI-ban hasal el az eas submit?

`--non-interactive` módban a parancs semmit nem kérdezhet tőled. Kell neki az `ascAppId` a profilban és egy, az apphoz már hozzárendelt API-kulcs, vagy a kulcs három mezője az `eas.json`-ban. A gépeden ezeket megkérdezte volna.

### Kell új build egy eas submit hiba után?

Csak ha az Apple ITMS-kóddal elutasítja a binárist. Kivétel: az ITMS-90054 és 90055 esetén a build rossz adatlapot célzott, elég a jóra újraküldeni. A konfigurációs és fiókhibák az `eas.json`-ban, az App Store Connectben vagy az Apple-fiókodban javíthatók. Utána ugyanazt a buildet küldöd fel újra, például `--latest` vagy `--id` kapcsolóval.

### Hol látom egy EAS Submit feltöltés naplóit?

A beküldés oldalán, az Expo dashboardján. Az Expo azt javasolja, hogy ott olvasd el a naplókat és a „Build Annotations” buborékot. A terminálban add hozzá a `--verbose` kapcsolót, hogy mindig megjelenjenek a naplók.

### Használható az eas submit ingyenes Apple-fiókkal?

Nem. Az Expo fizetős Apple Developer-fiókot ír elő az App Store-ba való feltöltéshez. Az ingyenes fiókkal a saját iPhone-odon tesztelhetsz, de az App Store Connectet nem használhatod.

### Milyen szerepkört adjak az API-kulcsnak az eas submithez?

Az Expo útmutatója Admin szerepkört ad a kulcsnak. Az Apple szerepkör-táblázata szerint buildet az App Manager és a Developer szerepkör is feltölthet. Az Expo-buildjeim App Manager szerepkörű csapatkulccsal futnak. Csapatkulcsot csak az Account Holder és az Adminok generálhatnak.

### Mit jelent az „Increment Build Number” az EAS-ben?

Az Apple ITMS-90189 kóddal utasította el a buildet: ez a buildszám már létezik ehhez a verzióhoz. Kapcsold be az `"autoIncrement": true` beállítást az `eas.json`-ban, vagy emeld az `ios.buildNumber` értékét, majd készíts új buildet.


## A projekted

[Review Kit](https://devoria.fr/hu/kits/app-review): Az App Store review checklistem, a javított Apple-elutasításaim, a Google Play checklist és három Claude Code skill. 17 990 Ft.

[iOS & Android Kit](https://devoria.fr/hu/kits/ios): Készítsd el iPhone- és Android-appodat Claude Code-dal: az appjaim kezdőkódja, az út a store-okig és az összes kit. 35 990 Ft.

[Diagnózis: mi választ el az iPhone-appodtól](https://devoria.fr/hu/diagnostic): 7 kérdés, 60 másodperc: megtudod, mi akadályoz valójában abban, hogy kiadd az iPhone-appodat, megkapod a 4 lépéses utadat és a hozzád illő kitet.
