Apple push-sertifikaatti: .p8 vai .p12 Expolla
Kirjoittaja: Mehdi Azizi
Julkaistu , 8 min
Apple tarjoaa push-ilmoituksiin .p8-avaimen, joka ei vanhene, tai vuoden voimassa olevan .p12-sertifikaatin. Expossa EAS hoitaa avaimen.
Applen push-sertifikaatti antaa palvelimelle luvan lähettää ilmoituksia sovellukseesi APNs:n eli Applen ilmoituspalvelun kautta. Sitä on kahta muotoa: .p12-sertifikaatti, joka on voimassa vuoden ja sidottu yhteen sovellukseen, tai .p8-avain, joka ei vanhene ja käy kaikkiin tilisi sovelluksiin. Expon kanssa et tarvitse sertifikaattia: EAS tarjoutuu luomaan .p8-avaimen ensimmäisessä buildissa, ja Expon push-palvelu käyttää sitä puolestasi.
Opas kehittäjäsertifikaatista ja provisioning profilesta mainitsee push-avaimen muutamalla rivillä. Tässä mennään loppuun asti: valinta kahden muodon välillä, sandbox- ja tuotantoympäristöt, uusiminen ja viat, jotka katkaisevat ilmoitukset TestFlightissa.
Julkaisen sovellukseni Expolla ja EAS:llä. Solys ja TradaZen määrittelevät konfiguraatiossaan expo-notifications-pluginin: se valmistelee sovelluksen vastaanottamaan ilmoituksia.
Miksi Apple vaatii sertifikaatin tai avaimen
Push-ilmoitus lähtee palvelimelta, omaltasi tai Expon, joka antaa sen APNs:lle, joka toimittaa sen iPhoneen. APNs:n täytyy siis tarkistaa, että palvelimella on oikeus kirjoittaa sovelluksellesi. Apple tarjoaa kaksi tapaa todistaa se.
- Token-pohjainen yhteys .p8-avaimella. Applen mukaan se on nopeampi, sitä voi käyttää useilta palvelimilta, ja sama avain kattaa kaikki tiimisi sovellukset tai osan niistä. Palvelimesi allekirjoittaa sillä tokenin, joka pitää tehdä uudelleen vähintään tunnin välein.
- Sertifikaattipohjainen yhteys .p12-tiedostolla. Apple täsmentää, että sertifikaatti on sidottu yhteen sovellukseen ja voimassa vuoden. Useampi sovellus, useampi sertifikaatti.
Applen vanhenemissivu muistuttaa: APNs-tokenien allekirjoitusavain ei vanhene koskaan.
Taulukko .p8 / .p12
| Kriteeri | .p8-avain | .p12-sertifikaatti |
|---|---|---|
| Kesto | Ei vanhene | Vuosi |
| Kattavuus | Kaikki sovelluksesi | Yksi sovellus |
| Ympäristö | Valitaan luotaessa | Sandbox ja tuotanto |
| Uusiminen | Ei mitään, paitsi mitätöinti | Joka vuosi |
| Lataus | Vain kerran | Vienti Macilta |
| Määrä | Kaksi per ympäristö | Yksi per sovellus |
| Käyttö Expossa | EAS luo ja hallinnoi | Puuttuu Expon dokumentaatiosta |
Kolme tarkennusta. .p8-tiedoston voi ladata vain kerran: Apple ei säilytä sitä tililläsi. .p12 taas viedään sen Macin avainnipusta, jolla sertifikaatti luotiin. Ja kahden avaimen raja per ympäristö koskee tiimiavaimia. Tiettyihin sovelluksiin rajattuja avaimia Apple sallii jopa 200 per ympäristö.
Expon tunnistesivu puhuu vain push-avaimesta ja sallii enintään kaksi per tili erottelematta ympäristöjä tai sovelluskohtaisia avaimia. Expo-sovellukselle .p8-avain on oikea valinta.
Sandbox ja tuotanto: kaksi ympäristöä
APNs:llä on kaksi palvelinta: kehitys eli sandbox, ja tuotanto. Apple varaa ensimmäisen testaukseen ja toisen julkaistuille sovelluksille. Sovellus tietää kumpaa käyttää aps-environment-entitlementin ansiosta. Applen mukaan sen arvo seuraa allekirjoitusprofiilia: development kehitysprofiililla, production jakeluprofiililla ja TestFlightissa.
TestFlight-build puhuu siis tuotannolle, täsmälleen kuten App Store.
Expon puolella kaksi yksityiskohtaa. expo-notificationsin dokumentaatio kertoo, että entitlement kirjoitetaan projektiin aina arvolla development ja vaihdetaan arvoon production release-buildin arkistossa. Ja luotaessa Expo-token sidotaan sovelluksen ympäristöön, joka tunnistetaan automaattisesti: sinun ei tarvitse valita mitään lähettäessä.
Jos luot avaimen itse, Apple kysyy sen ympäristön ja kattavuuden: koko tiimi tai tietyt sovellukset. Sen kehittäjädokumentaatio kuvaa nykyään sandboxiin tai tuotantoon rajattuja tiimiavaimia, ja vanhat kaikkialla toimivat avaimet hyväksytään edelleen. Tilin ohjeet taas väittävät yhä, että avain käy molempiin ympäristöihin. Apple on ristiriidassa itsensä kanssa: muista ympäristö, jonka valitset luotaessa. Sandboxiin rajattu avain ei toimi TestFlightissa eikä App Storessa.
Miten Expo hallinnoi push-avainta
Expon asennusoppaan mukaan (päivitetty 28. heinäkuuta 2026) ensimmäinen kehitysbuildisi tarjoaa push-ilmoitusten määrittämistä ja APNs-avaimen luomista. Vastaa kumpaankin kyllä. Ilman EAS Buildia aja eas credentials. Tarvitset maksullisen Apple Developer -tilin.
Sen jälkeen:
- EAS tallentaa avaimen ja liittää sen sovellukseesi. Expon mukaan yksi avain käy niin moneen sovellukseen kuin haluat, eikä uuden lataaminen muuta käyttäjiesi Expo Push -tokeneita.
- Palvelimesi ei kutsu APNs:ää. Se lähettää Expon push-palveluun, joka välittää APNs:lle. Expo pyytää lukemaan kuittaukset noin 15 minuuttia lähetyksen jälkeen: niissä virheet näkyvät.
- Plugin lisää entitlementin. Määrittele
expo-notificationskohtaanplugins:
{
"expo": {
"plugins": ["expo-notifications"]
}
}
Kaksi sudenkuoppaa. Expon FAQ sanoo, ettei Expo Go tue push-ilmoituksia SDK 53:sta lähtien, kun taas expo-notificationsin sivu koskee vain Androidia. Kummassakin tapauksessa Expo suosittelee kehitysbuildia: testaa sillä. Ja avaimen poistaminen eas credentials -komennolla poistaa sen Expon palvelimilta, ei Apple-tililtäsi. Vapauttaaksesi paikan mitätöi se Applen portaalissa. Kuten mikä tahansa salaisuus, .p8-tiedosto ei saa koskaan päätyä repoosi: sääntö on sama kuin Expo-sovelluksen API-avaimille.
Uusiminen: mikä oikeasti vanhenee
.p8-avaimessa ei ole mitään uusittavaa. Se lakkaa toimimasta vain, jos mitätöit sen. Jos epäilet sen vuotaneen, Apple neuvoo luomaan uuden avaimen, siirtymään siihen ja vasta sitten mitätöimään vanhan. Avaimen vaihtamiseen Expossa FAQ antaa ohjeet: eas credentials, iOS, build-profiilisi, sitten push-avaimen poisto ja uuden luonti.
.p12-sertifikaatti vanhenee joka vuosi. Apple pyytää päivittämään sen ennen eräpäivää ja seuraamaan päivämäärää avainnipussa. Kun se on vanhentunut tai mitätöity, et voi enää lähettää ilmoituksia sovellukseesi. Apple ei kuvaa erillistä uusimista: luot uuden sertifikaatin sovelluksen tunnisteesta, asennat sen palvelimellesi ennen eräpäivää ja poistat vanhan. Paras uusiminen on siirtyä avaimeen.
Hallinnoitko iPhoneja Intunella tai muulla laitehallintatyökalulla? Se ei ole sama sertifikaatti. Laitehallinnan push-sertifikaatti luodaan Apple Push Certificates Portalissa ja uusitaan joka vuosi. Apple neuvoo kirjaamaan ylös käytetyn Apple-tilin: sitä tarvitaan uusimiseen.
Tyypilliset viat ja korjaukset
Toimii kehityksessä, ei TestFlightissa
- Lähetät väärään tokeniin. TestFlight-build rekisteröityy tuotantoon ja saa uuden tokenin. Kehitysbuildin token ei toimi: Apple vastaa
BadDeviceToken, kun token ei vastaa ympäristöä. Hae token itse TestFlight-sovelluksesta. - Tuotantosovelluksella ei ole push-tunnisteita. Tämä on Expon FAQ:n diagnoosi. Tarkista projektin tunnistesivu expo.devissä tai
eas credentials. - Avaimesi on rajattu sandboxiin. Korvaa se tuotannossa toimivalla avaimella.
- iPhone ei saa tokenia. Jos asensit TestFlight-buildin Xcode-buildin päälle, Expo ehdottaa laitteen uudelleenkäynnistystä.
"No valid aps-environment entitlement string found"
Expon FAQ:n mukaan tämä virhe tarkoittaa, ettei iOS-projektillesi ole määritetty push-avainta. Tarkista tunnistesivu ja tee uusi build: EAS tarjoutuu silloin luomaan avaimen. Tarkista myös, että expo-notifications on kohdassa plugins.
ITMS-90078: Missing Push Notification Entitlement
Apple lähettää tämän sähköpostin lähetyksen jälkeen: sovelluksesi näyttää rekisteröityvän APNs:ään, mutta sen allekirjoituksessa ei ole aps-environment-entitlementtiä. Expon SDK 51 -muistio selittää sen. Tästä SDK:sta lähtien entitlement lisätään vain, jos expo-notifications on asennettu. Varoitus johtuu kahdesta Applen tarkistuksesta. Ensimmäinen vertaa sovellustunnisteesi ominaisuuksia sovelluksen entitlementteihin. Toinen löytää binääristä ilmoituksiin rekisteröitymisen metodin, joka on Expon koodissa kaikissa sovelluksissa.
Se on varoitus, ei hylkäys, Expo täsmentää. Jos käytät ilmoituksia, lisää plugin ja tee uusi build: EAS synkronoi sovellustunnisteen ominaisuudet jokaisessa buildissa. Muuten poista Push Notifications -ominaisuus tunnisteestasi Applen portaalissa. Varoitus voi jäädä näkyviin ilman seurauksia.
InvalidCredentials tai kaikki sovellukset hiljaa kerralla
InvalidCredentials kuittauksessa tarkoittaa, etteivät push-tunnisteesi ole enää voimassa, usein koska avain on mitätöity. Kaikki sitä käyttäneet sovellukset hiljenevät samaan aikaan. Expon korjaus: eas credentials ja uusi avain. Jos kuittauksessa mainitaan InvalidProviderToken, Expo neuvoo tekemään uuden buildin ja luomaan push-avaimen ja profiilin uudelleen.
Ennen kuin otat ilmoitukset käyttöön
Testataksesi ilmoituksia iPhonellasi ennen julkaisua seuraa ohjetta TestFlight sovelluksen testaamiseen. Jos lähetät hiljaisia ilmoituksia herättääksesi sovelluksen, lue uudelleen ohje 2.5.4 taustatiloista. Koko ketju ilman Macia on oppaassa iOS-sovelluksen julkaisu ilman Macia, ja julkaisun vaiheet sivulla sovelluksen julkaisu App Storeen.
Ennen ensimmäistä lähetystä tee ilmainen diagnoosi: se kertoo, mikä projektissasi jumittaa, ja lähettää sinulle tarkistuslistani Applen hylkäysten välttämiseen. Sovelluksen rakentamiseen, tilausten kytkemiseen ja julkaisuun iOS & Android Kit kulkee neljän vaiheen polun sovellusteni aloituskoodin kanssa, omaan tahtiisi.
Usein kysytyt kysymykset
Vanheneeko Applen push-sertifikaatti?
.p12-sertifikaatti vanhenee vuoden kuluttua, ja ilmoituksesi loppuvat, jos sitä ei korvata. .p8-avain ei vanhene koskaan: se lakkaa toimimasta vain, jos mitätöit sen. Se on tärkein syy suosia avainta.
Tarvitaanko push-sertifikaatti jokaiselle sovellukselle?
.p12-sertifikaatilla kyllä: jokainen sertifikaatti on sidottu yhteen sovellukseen. .p8-avain käy kaikkiin tilisi sovelluksiin. Expon kanssa yksi avain voi siis kattaa koko valikoimasi.
Miten Applen push-sertifikaatti uusitaan?
Luo uusi sertifikaatti sovelluksesi tunnisteesta uudella allekirjoituspyynnöllä, asenna se palvelimellesi ja poista vanha. Tee se ennen eräpäivää. Helpointa on siirtyä .p8-avaimeen, jota ei uusita.
Hukkasin .p8-tiedostoni, mitä teen?
Apple sallii sen lataamisen vain kerran. Jos EAS loi avaimen, Expo säilyttää sen ja ilmoituksesi jatkuvat. Muuten luo uusi avain, lisää se eas credentials -komennolla ja mitätöi vanha Applen portaalissa. Käyttäjiesi Expo Push -tokenit eivät muutu.
Pitääkö tehdä uusi build push-avaimen vaihdon jälkeen?
Yleensä ei. Avainta käyttää lähettävä palvelin, ei asennettu sovellus, ja Expon mukaan uusi avain ei muuta tokeneita. Poikkeus: jos kuittaukset ilmoittavat InvalidProviderToken, Expo neuvoo tekemään uuden buildin uudella avaimella ja uudella profiililla.

