EAS Submit iOS: Expo-sovellus App Storeen
Kirjoittaja: Mehdi Azizi
Julkaistu , 8 min
EAS Submit lähettää iOS-buildisi App Store Connectiin ja TestFlightiin. Arviointiin lähetät itse App Store Connectissa. Mukana eas.json ja yleiset virheet.
eas submit --platform ios lähettää iOS-buildisi App Store Connectiin, jossa se näkyy TestFlightissa, kun Apple on käsitellyt sen. Komento ei lähetä sovellustasi Applen arviointiin: buildin valinta ja arviointiin lähettäminen tehdään edelleen App Store Connectissa. Automatisointiin se tarvitsee sovellussivusi numeron (ascAppId) ja App Store Connect -API-avaimen.
Julkaisen iOS-sovellukseni, muun muassa Solysin, TradaZenin ja Noleran, Expolla, EAS Buildilla ja EAS Submitilla. Tämä opas noudattaa Expon dokumentaatiota iOS-lähetyksestä, jonka tarkistin 25. lokakuuta 2026. Jos sinulla ei ole Macia, koko polku on oppaassa iOS-sovelluksen julkaisu ilman Macia. Tässä keskitytään lähetykseen.
Mitä tarvitset ennen ensimmäistä komentoa
Expo listaa kolme edellytystä:
- Maksullinen Apple Developer -tili. Hinta ja rekisteröityminen löytyvät oppaasta Applen kehittäjätili.
- Bundle-tunniste kentässä
ios.bundleIdentifier. Expon konfiguraatioreferenssin mukaan keksit sen itse, mutta sen täytyy olla App Storessa yksilöllinen. - EAS CLI asennettuna, ja sen jälkeen
eas loginExpo-tililläsi.
Tarvitset myös allekirjoitetun tuotantobuildin. EAS Build tekee sen sertifikaatilla ja profiililla, joita se hallinnoi puolestasi, kuten oppaassa iOS-sertifikaatti ja provisioning profile kerrotaan.
App Store Connectin sovellussivu: sinä vai EAS?
EAS Submit lähettää binäärin sovellukselle, jonka täytyy olla olemassa App Store Connectissa.
Voit luoda sen itse. Applen ohje kuvaa New App -ikkunan: alusta, nimi, ensisijainen kieli, bundle-tunniste, SKU ja käyttäjien pääsy. Tarvitset roolin Account Holder, Admin tai App Manager.
EAS voi myös luoda sen ensimmäisellä lähetyksellä. Expon TestFlight-sivun mukaan eas submit luo sovellussivun, kun lähetät ensimmäisen buildisi. eas.json-referenssin mukaan ascAppId:n täyttäminen ohittaa tämän vaiheen. Nimi tulee kentästä appName tai, jos sitä ei ole, konfiguraatiosi name-kentästä. Ensisijainen kieli tulee kentästä language, jonka oletusarvo on en-US. Jos sovelluksesi julkaistaan ensin ranskaksi, täytä language ennen tätä ensimmäistä lähetystä.
Kopioi sen jälkeen sovellussivun numero kenttään ascAppId. Expo kertoo, mistä sen löytää: avaa sovelluksesi App Store Connectissa ja sitten App Information. Se on Apple ID -kenttä kohdassa General Information. Se on numero, ei bundle-tunnisteesi.
Miksi API-avain eikä Apple ID
EAS Submit kirjautuu Applelle joko Apple ID:lläsi tai App Store Connect -API-avaimella.
Apple ID kompastuu kaksivaiheiseen tunnistautumiseen, jota Apple vaatii kaikilta App Store Connectin käyttäjiltä: kirjautuminen pitää vahvistaa ihmisen toimesta. Sovelluskohtainen salasana, joka annetaan muuttujassa EXPO_APPLE_APP_SPECIFIC_PASSWORD, ohittaa tämän vaiheen, mutta Expo pitää sitä vähemmän turvallisena kuin API-avainta, joka on sen oletus ja suositeltu tapa. Avaimella tunnistautuminen onnistuu ilman mitään vuorovaikutusta, joten lähetyksen voi automatisoida.
Kaksi tapaa saada avain:
- Anna EAS:n hoitaa se. Aja
eas credentials --platform ios, valitse profiiliproduction, kirjaudu Apple-tilillesi ja valitse ”App Store Connect: Manage your API Key”. - Tuo oma avaimesi. App Store Connectissa: Users and Access, välilehti Integrations, App Store Connect API, Team Keys ja sitten Generate API Key. Tarvitset Admin-tilin, ja Expon ohje antaa avaimelle Admin-roolin.
Jälkimmäisessä tapauksessa ota talteen Key ID, joka näkyy aktiivisten avainten listassa, ja Issuer ID, joka on Integrations-sivun yläosassa. Säilytä ennen kaikkea .p8-tiedosto: voit ladata sen vain kerran, eikä Apple säilytä siitä kopiota.
Applen mukaan Admin-avain voi luoda ja poistaa tilisi käyttäjiä. Apple kehottaa olemaan koskaan tallentamatta avainta koodivarastoon.
Minimaalinen eas.json kopioitavaksi
Kaikki arvot ovat keksittyjä: vaihda tilalle omasi.
{
"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"
}
}
}
}
appVersionSourcejaautoIncrement: EAS:n palvelimet säilyttävät build-numeron ja kasvattavat sitä jokaisella tuotantobuildilla. Expo suosittelee tätä etätilaa EAS CLI 12:sta lähtien.ascAppId: sovellussivusi numero. Ilman sitä ei-interaktiivinen tila epäonnistuu.appleTeamId: Apple Developer -tiimisi tunniste.ascApiKeyPath,ascApiKeyIssuerId,ascApiKeyId: API-avaimesi. Kaikki kolme kenttää hyväksyvät ympäristömuuttujia. Lisääkeys-kansio.gitignore-tiedostoosi.
Kenttää appleId tarvitaan vain, jos kirjaudut Apple ID:lläsi. Jos EAS hallinnoi jo avaintasi, poista myös kolme ascApiKey-kenttää. Kolmessa sovelluksessani, jotka tarkistin 25. lokakuuta, tuotannon lähetysprofiilissa on vain ascAppId, ja Solysissa lisäksi appleTeamId: tiedostossa ei ole yhtään avainta.
Käynnistä build ja sitten lähetys
eas build --platform ios --profile production
eas submit --platform ios
Ilman muita valitsimia eas submit pyytää sinua valitsemaan lähetettävän buildin ja kysyy ensimmäisellä kerralla Apple ID:täsi. Lähetysprofiili production valitaan oletuksena, jos se on olemassa. EAS CLI -referenssi listaa valitsimet, joilla valinnan voi ohittaa:
| Valitsin | Mitä se tekee |
|---|---|
--latest | Lähettää viimeisimmän iOS-buildin |
--id | Lähettää tietyn EAS-buildin |
--path | Lähettää paikallisen .ipa-tiedoston |
--url | Lähettää verkossa olevan arkiston |
--groups | Lisää sisäiseen ryhmään |
--what-to-test | Täyttää kentän ”What to test” |
Jos haluat ketjuttaa kaiken, lisää build-komentoon --auto-submit. Expon automaattisen lähetyksen sivun mukaan valmis build lähtee EAS Submitiin build-profiilin kanssa samannimisellä lähetysprofiililla. Toisen valitset näin: --auto-submit-with-profile=nimi. Build menee TestFlightiin, ei arviointiin.
Jatkuvassa integraatiossa lisää --non-interactive ja EXPO_TOKEN-tunnus. Komento ei silloin voi kysyä sinulta mitään: se tarvitsee profiiliin ascAppId:n ja API-avaimen, joko sen, jonka EAS on liittänyt sovellukseen, tai omasi kolmessa ascApiKey-kentässä.
Mitä lähetyksen jälkeen tapahtuu
1. Apple käsittelee buildin. Sen täytyy käydä läpi tämä käsittely ennen kuin se näkyy App Store Connectissa, ja Apple lähettää sinulle sähköpostin, kun se on valmis. Expon mukaan buildin näkemiseen TestFlightissa menee yleensä 10-15 minuuttia.
2. Vientivaatimustenmukaisuus. Tila Missing Compliance tarkoittaa, että salausta koskeva ilmoituksesi puuttuu. App Store Connect esittää nämä kysymykset jokaisesta uudesta versiosta, ellei Info.plist jo vastaa niihin. Expossa avain on ios.config.usesNonExemptEncryption:
{
"expo": {
"ios": {
"config": {
"usesNonExemptEncryption": false
}
}
}
}
Applen mukaan false sopii, jos sovelluksesi kirjastoineen ei käytä lainkaan salausta tai käyttää vain vapautettua salausta. Järjestelmän salaus, kuten URLSessionin HTTPS, on yleensä vapautettu. Ilmoita false vain, jos se pitää paikkansa sovelluksesi kohdalla: ilmoitus sitoo sinua. Kuten mikä tahansa Info.plistin avain, se vaatii uuden buildin.
3. TestFlight. Tilassa Ready to Submit build voi Applen mukaan mennä sisäisille testaajille, läpäistä beta-arvioinnin ulkoisia testaajia varten tai lähteä App Store -arviointiin. Profiilin groups-kenttä lisää sen sisäisiin ryhmiisi. Kaikki muu on oppaassa TestFlight sovelluksen testaamiseen.
Lähetys ei ole arviointiin lähettämistä
Expo sanoo sen suoraan: TestFlight-buildia ei julkaista App Storessa automaattisesti. EAS Submit ei täytä sovellussivuasi eikä kuvakaappauksiasi. App Store Connectissa on jäljellä neljä toimenpidettä, jotka kuvataan Applen ohjeessa arviointiin lähettämisestä:
- Täytä version pakolliset metatiedot.
- Valitse build version Build-osiossa.
- Klikkaa ”Add for Review”. Versio siirtyy tilaan Ready for Review, mutta mitään ei ole vielä lähetetty arviointiin.
- Klikkaa ”Submit for Review”. Tila muuttuu muotoon In Review, kun arviointi alkaa.
Yleiset virheet ja niiden korjaus
| Näytetty virhe | Syy | Korjaus |
|---|---|---|
| ITMS-90189 | Build-numero jo käytössä | autoIncrement |
| ITMS-90062 tai 90186 | Versio jo suljettu | Nosta version |
| ”Set ascAppId” | ascAppId puuttuu CI:ssä | Lisää ascAppId |
| ”API Keys cannot” | Avainta ei ole liitetty | eas credentials |
| ITMS-90683 | Käyttötarkoitusteksti puuttuu | ios.infoPlist |
| ITMS-91053 | Puutteellinen manifesti | ios.privacyManifests |
| ITMS-90725 | Liian vanha iOS SDK | Nosta Expo SDK:ta |
| Missing Compliance | Salausta ei ilmoitettu | usesNonExemptEncryption |
Expon mukaan jo käytetty build-numero on yleinen syy lähetyksen hylkäämiseen: kaikki siitä on oppaassa build-numero ja versio. Kolmella virheellä on oma oppaansa: ITMS-90683 Expolla, ITMS-91053 Expolla ja ITMS-90725.
Lainausmerkeissä olevat kaksi viestiä tulevat EAS:ltä ja korjataan sen konfiguraatiossa. Missing Compliance ratkeaa myös vastaamalla kysymyksiin App Store Connectissa. Kaikilla muilla riveillä korjaus koskee binääriä: tee uusi build ja lähetä se uudelleen. Etäpäivitys ei muuta Info.plistiä, manifestia eikä numeroita.
Lähetä ensimmäinen sovelluksesi ilman arvailua
Komento on vain yksi vaihe. iOS Kit lähtee liikkeelle sovellusteni aloituskoodista tilauksineen ja etenee neljässä vaiheessa App Storeen asti, omaan tahtiisi.
Jos valmistelet ensimmäistä julkaisuasi, tee ilmainen diagnoosi: se kertoo, mikä sinua oikeasti jarruttaa, ja lähettää sinulle tarkistuslistani Applen hylkäysten välttämiseen. Sovellussivua, kuvakaappauksia ja hyväksyntää varten sivu sovelluksen julkaisu App Storessa käy läpi jokaisen vaiheen.
Usein kysytyt kysymykset
Miten Expo-sovellus julkaistaan App Storessa?
Tee tuotantobuild EAS Buildilla ja lähetä se komennolla eas submit --platform ios. Kun Apple on käsitellyt sen, se näkyy TestFlightissa. Täytä sitten App Store Connectissa sovellussivu, valitse tämä build versioon ja klikkaa ”Add for Review” ja ”Submit for Review”.
Lähettääkö EAS Submit sovellukseni Applen arviointiin?
Ei. EAS Submit lähettää binäärin App Store Connectiin, ja build päätyy TestFlightiin. Arviointiin lähetetään käsin App Store Connectissa, kun sovellussivu on täytetty ja build valittu.
Mistä löydän sovellukseni ascAppId:n?
Avaa sovelluksesi App Store Connectissa ja sitten App Information. Se on Apple ID -kenttä kohdassa General Information. Se on numero, jota ei pidä sekoittaa bundle-tunnisteeseesi.
Tarvitaanko eas submitin käyttöön Apple ID?
Ensimmäisellä kerralla komento kysyy sitä. Sen jälkeen, kun profiilissa on ascAppId ja käytössä on App Store Connect -API-avain, se voi toimia ilman vuorovaikutusta, myös jatkuvassa integraatiossa. API-avain on Expon oletus ja suosittelema tapa.
Kauanko kestää, ennen kuin build näkyy TestFlightissa?
Expon mukaan Applen käsittely kestää yleensä 10-15 minuuttia, ja Apple lähettää sinulle sähköpostin, kun se on valmis. Jos build jää tilaan Missing Compliance, vastaa salausta koskeviin kysymyksiin ja ilmoita asia konfiguraatiossasi seuraavia buildeja varten.