EAS Submit iOS: Expo app közzététele az App Store-ban
Írta: Mehdi Azizi
Megjelent: , 8 p
Az EAS Submit elküldi az iOS buildet az App Store Connectbe, ahol megjelenik a TestFlightban. A felülvizsgálatra küldést az App Store Connectben kell elvégezned.
eas submit --platform ios elküldi az iOS buildedet az App Store Connectbe, ahol az Apple feldolgozása után megjelenik a TestFlightban. A parancs nem küldi be az appodat az Apple felülvizsgálatára: a build kiválasztása és a felülvizsgálatra küldés az App Store Connectben marad a te dolgod. Az automatizáláshoz kell neki az adatlapod azonosítója (ascAppId) és egy App Store Connect API-kulcs.
Az iOS appjaimat, köztük a Solyst, a TradaZent és a Nolerát, Expóval, EAS Builddel és EAS Submittal teszem közzé. Ez az útmutató az Expo iOS-küldésről szóló dokumentációját követi, amit 2026. október 25-én néztem át újra. Ha nincs Maced, a teljes folyamatot az iOS-app közzététele Mac nélkül cikkben találod. Itt a küldésre koncentrálunk.
Mi kell az első parancs előtt
Az Expo három előfeltételt sorol fel:
- Egy fizetős Apple Developer fiók. Az árat és a regisztrációt az Apple fejlesztői fiók cikkben találod.
- Egy bundle-azonosító az
ios.bundleIdentifiermezőben. Az Expo konfigurációs referenciája szerint te találod ki, de egyedinek kell lennie az App Store-ban. - Telepített EAS CLI, utána
eas loginaz Expo-fiókoddal.
Kell egy aláírt production build is. Az EAS Build készíti el az általa kezelt tanúsítvánnyal és profillal, ahogy az iOS tanúsítvány és provisioning profile cikk elmagyarázza.
Az App Store Connect adatlap: te vagy az EAS?
Az EAS Submit egy olyan appba küldi a binárist, aminek léteznie kell az App Store Connectben.
Létrehozhatod te magad. Az Apple súgója leírja a New App ablakot: platform, név, elsődleges nyelv, bundle-azonosító, SKU és felhasználói hozzáférés. Account Holder, Admin vagy App Manager szerepkör kell hozzá.
Az EAS is létrehozhatja az első küldéskor. Az Expo TestFlightról szóló oldala szerint az eas submit létrehozza az adatlapot, amikor az első buildedet küldöd. Az eas.json referenciája szerint ha kitöltöd az ascAppId mezőt, ez a lépés kimarad. A név az appName mezőből jön, ennek hiányában a konfigurációd name értékéből. Az elsődleges nyelv a language mezőből jön, alapértéke en-US. Ha az appod először franciául jelenik meg, töltsd ki a language mezőt az első küldés előtt.
Utána másold be az adatlap azonosítóját az ascAppId mezőbe. Az Expo megmondja, hol találod: nyisd meg az appodat az App Store Connectben, aztán App Information. Ez az Apple ID mező, a General Information alatt. Ez egy szám, nem a bundle-azonosítód.
Miért API-kulcs, és miért nem az Apple ID-d
Az EAS Submit az Apple ID-ddal vagy egy App Store Connect API-kulccsal csatlakozik az Apple-höz.
Az Apple ID elakad a kétfaktoros hitelesítésen, amit az Apple megkövetel minden App Store Connect-felhasználótól: egy embernek kell jóváhagynia a bejelentkezést. Az app-specifikus jelszó, amit az EXPO_APPLE_APP_SPECIFIC_PASSWORD változóban adsz át, megkerüli ezt a lépést, de az Expo kevésbé biztonságosnak tartja, mint az API-kulcsot, ami az alapértelmezett és ajánlott módszere. A kulccsal mindenféle interakció nélkül tudsz hitelesíteni, így automatizálhatod a küldést.
Két módon szerezheted meg:
- Hagyd, hogy az EAS kezelje. Futtasd az
eas credentials --platform iosparancsot, válaszd aproductionprofilt, jelentkezz be az Apple-fiókodba, majd válaszd az „App Store Connect: Manage your API Key” lehetőséget. - Hozd a saját kulcsodat. Az App Store Connectben: Users and Access, Integrations fül, App Store Connect API, Team Keys, majd Generate API Key. Admin fiók kell hozzá, és az Expo útmutatója Admin szerepkört ad a kulcsnak.
A második esetben jegyezd fel a Key ID-t, ami az aktív kulcsok listájában látszik, és az Issuer ID-t, ami az Integrations oldal tetején van. És ami a legfontosabb, őrizd meg a .p8 fájlt: csak egyszer töltheted le, és az Apple nem tart meg róla másolatot.
Az Apple szerint egy Admin kulcs felhasználókat hozhat létre és törölhet a fiókodban. Az Apple kéri, hogy soha ne tedd a kulcsot kódtárolóba.
A minimális eas.json, amit bemásolhatsz
Minden érték kitalált: cseréld le a sajátjaidra.
{
"cli": {
"appVersionSource": "remote"
},
"build": {
"production": {
"autoIncrement": true
}
},
"submit": {
"production": {
"ios": {
"ascAppId": "1234567890",
"appleTeamId": "ABCDE12345",
"ascApiKeyPath": "./keys/AuthKey_XXXXXXXXXX.p8",
"ascApiKeyIssuerId": "your-issuer-id",
"ascApiKeyId": "XXXXXXXXXX"
}
}
}
}
appVersionSourceésautoIncrement: az EAS szerverei tárolják a build számát, és minden production buildnél megnövelik. Az Expo ezt a távoli módot ajánlja az EAS CLI 12 óta.ascAppId: az adatlapod azonosítója. Nélküle a nem interaktív mód hibára fut.appleTeamId: az Apple Developer csapatod azonosítója.ascApiKeyPath,ascApiKeyIssuerId,ascApiKeyId: az API-kulcsod. Mindhárom mező elfogad környezeti változókat. Add hozzá akeysmappát a.gitignorefájlodhoz.
Az appleId mező csak akkor kell, ha az Apple ID-ddal jelentkezel be. Ha az EAS már kezeli a kulcsodat, a három ascApiKey mezőt is töröld. A három appomnál, amiket október 25-én néztem át, a production küldési profil csak az ascAppId mezőt tartalmazza, a Solysnál még az appleTeamId mezőt: a fájlban nincs kulcs.
A build, aztán a küldés indítása
eas build --platform ios --profile production
eas submit --platform ios
Más opció nélkül az eas submit megkér, hogy válaszd ki a küldendő buildet, és első futtatáskor elkéri az Apple ID-dat. Ha létezik production küldési profil, alapból azt használja. Az EAS CLI referenciája felsorolja azokat az opciókat, amelyekkel megúszod a választást:
| Opció | Mit csinál |
|---|---|
--latest | Elküldi a legutóbbi iOS buildet |
--id | Elküld egy adott EAS buildet |
--path | Elküld egy helyi .ipa fájlt |
--url | Elküld egy online archívumot |
--groups | Hozzáadja egy belső csoporthoz |
--what-to-test | Kitölti a „What to test” mezőt |
Ha mindent egyben akarsz, add hozzá az --auto-submit kapcsolót a build parancshoz. Az Expo automatikus küldésről szóló oldala szerint a kész build az EAS Submitba megy, a build profillal azonos nevű küldési profillal. Ha másikat akarsz: --auto-submit-with-profile=nom. A build a TestFlightba megy, nem felülvizsgálatra.
CI-ban add hozzá a --non-interactive kapcsolót és egy EXPO_TOKEN tokent. A parancs ilyenkor semmit sem kérdezhet tőled: kell neki az ascAppId a profilban és egy API-kulcs, vagy az, amit az EAS az apphoz kapcsolt, vagy a sajátod a három ascApiKey mezőben.
Mi történik a küldés után
1. Az Apple feldolgozza a buildet. Ezen át kell mennie, mielőtt megjelenik az App Store Connectben, és a végén az Apple küld egy e-mailt. Az Expo szerint általában 10-15 perc, mire látod a TestFlightban.
2. Exportmegfelelőség. A Missing Compliance státusz azt jelenti, hogy hiányzik a titkosításra vonatkozó nyilatkozatod. Az App Store Connect minden új verziónál felteszi ezeket a kérdéseket, kivéve ha az Info.plist már megválaszolja őket. Expóban a kulcs neve ios.config.usesNonExemptEncryption:
{
"expo": {
"ios": {
"config": {
"usesNonExemptEncryption": false
}
}
}
}
Az Apple szerint a false akkor jó, ha az appod, a könyvtárakat is beleértve, nem használ titkosítást, vagy csak mentesített titkosítást. A rendszer titkosítása, például a HTTPS az URLSessionön keresztül, általában ilyen. Csak akkor állíts false értéket, ha az appodra ez igaz: a nyilatkozat kötelez. Mint minden Info.plist-kulcs, ez is új buildet igényel.
3. TestFlight. Ready to Submit státusznál az Apple szerint a build mehet a belső tesztelőkhöz, átmehet a béta felülvizsgálaton a külsőkhöz, vagy mehet App Store felülvizsgálatra. A profil groups mezője hozzáadja a belső csoportjaidhoz. Minden mást a TestFlight az app teszteléséhez cikkben találsz.
A küldés nem egyenlő a felülvizsgálatra küldéssel
Az Expo leírja: egy TestFlight build nem jelenik meg automatikusan az App Store-ban. Az EAS Submit nem tölti ki sem az adatlapodat, sem a képernyőképeidet. Négy lépés marad az App Store Connectben, amiket az Apple felülvizsgálatra küldésről szóló súgója ír le:
- Töltsd ki a verzió kötelező metaadatait.
- Válaszd ki a buildet a verzió Build szekciójában.
- Kattints az „Add for Review” gombra. A verzió Ready for Review státuszba kerül, de még semmi nem ment felülvizsgálatra.
- Kattints a „Submit for Review” gombra. A státusz In Review lesz, amikor a felülvizsgálat elindul.
Gyakori hibák és a javításuk
| Megjelenő hiba | Ok | Javítás |
|---|---|---|
| ITMS-90189 | A build szám már foglalt | autoIncrement |
| ITMS-90062 ou 90186 | A verzió már lezárva | Növeld a version értéket |
| „Set ascAppId” | Hiányzik az ascAppId CI-ban | Add hozzá az ascAppId mezőt |
| „API Keys cannot” | Nincs kapcsolt kulcs | eas credentials |
| ITMS-90683 | Hiányzó engedélykérő szöveg | ios.infoPlist |
| ITMS-91053 | Hiányos manifeszt | ios.privacyManifests |
| ITMS-90725 | Túl régi iOS SDK | Frissítsd az Expo SDK-t |
| Missing Compliance | Nem deklarált titkosítás | usesNonExemptEncryption |
Az Expo szerint a már használt build szám gyakori oka a küldés elutasításának: mindent megtalálsz a build szám és verzió cikkben. Három hibának saját útmutatója van: ITMS-90683 Expóval, ITMS-91053 Expóval és ITMS-90725.
Az idézőjeles két üzenet az EAS-től jön, és az EAS konfigurációjában javítható. A Missing Compliance úgy is megoldható, hogy megválaszolod a kérdéseket az App Store Connectben. Az összes többi sornál a javítás a binárist érinti: készíts új buildet, és küldd el újra. Egy távoli frissítés nem változtat sem az Info.plisten, sem a manifeszten, sem a számokon.
Küldd el az első appodat próbálgatás nélkül
A parancs csak egy lépés. Az iOS Kit 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ő megjelenésedre készülsz, csináld meg az ingyenes diagnózist: 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 alkalmazás közzététele az App Store-ban oldal minden lépést lefed.
Gyakori kérdések
Hogyan teszek közzé egy Expo appot az App Store-ban?
Indíts egy production buildet az EAS Builddel, aztán küldd el az eas submit --platform ios paranccsal. Az Apple feldolgozása után megjelenik a TestFlightban. Az App Store Connectben töltsd ki az adatlapot, válaszd ki ezt a buildet a verzióban, majd kattints az „Add for Review” és a „Submit for Review” gombra.
Az EAS Submit felülvizsgálatra küldi az appomat az Apple-nél?
Nem. Az EAS Submit elküldi a binárist az App Store Connectbe, és a build megjelenik a TestFlightban. A felülvizsgálatra küldést kézzel kell elvégezned az App Store Connectben, miután kitöltötted az adatlapot és kiválasztottad a buildet.
Hol találom az appom ascAppId-ját?
Az App Store Connectben nyisd meg az appodat, aztán App Information. Ez az Apple ID mező, a General Information alatt. Ez egy szám, ne keverd össze a bundle-azonosítóddal.
Kell Apple ID az eas submit használatához?
Első futtatáskor a parancs elkéri. Utána, ha az ascAppId benne van a profilban és van App Store Connect API-kulcsod, interakció nélkül is futhat, akár CI-ban is. Az API-kulcs az Expo alapértelmezett és ajánlott módszere.
Mennyi idő, mire látom a buildet a TestFlightban?
Az Expo szerint általában 10-15 perc a feldolgozás az Apple-nél, ami a végén küld egy e-mailt. Ha a build Missing Compliance státuszban marad, válaszold meg a titkosítással kapcsolatos kérdéseket, aztán deklaráld a konfigurációdban a következő buildekhez.