Apple push-sertifikat: .p8 eller .p12 med Expo
Av Mehdi Azizi
Publisert , 8 min
For push-varsler tilbyr Apple en .p8-nøkkel som aldri utløper og gjelder alle appene dine, eller et årlig .p12-sertifikat. Med Expo håndterer EAS nøkkelen.
Apples push-sertifikat gir en server lov til å sende varsler til appen din via APNs, Apples varslingstjeneste. Det finnes i to former: et .p12-sertifikat som gjelder i ett år og er knyttet til én app, eller en .p8-nøkkel som ikke utløper og fungerer for alle appene på kontoen din. Med Expo trenger du ikke sertifikatet: EAS tilbyr å lage en .p8-nøkkel ved første build, og Expos push-tjeneste bruker den for deg.
Guiden om utviklersertifikatet og provisioning profile nevner push-nøkkelen på noen få linjer. Her går vi hele veien: valget mellom de to formatene, sandbox- og produksjonsmiljøene, fornyelse, og feilene som stopper varslene i TestFlight.
Jeg publiserer appene mine med Expo og EAS. Solys og TradaZen har pluginen expo-notifications i konfigurasjonen sin: det er den som gjør appen klar til å motta varsler.
Hvorfor Apple krever et sertifikat eller en nøkkel
Et push-varsel starter på en server, din eller Expos, som gir det videre til APNs, som leverer det til iPhonen. APNs må altså sjekke at serveren har lov til å skrive til appen din. Apple tilbyr to måter å bevise det på.
- Token-basert tilkobling, med en .p8-nøkkel. Ifølge Apple er den raskere, kan brukes fra flere servere, og én nøkkel dekker alle eller noen av appene til teamet ditt. Serveren din signerer et token med den, og det må lages på nytt minst én gang i timen.
- Sertifikatbasert tilkobling, med en .p12-fil. Apple presiserer at sertifikatet er knyttet til én app og gjelder i ett år. Flere apper, flere sertifikater.
Apples side om utløpsdatoer minner om det: signeringsnøkkelen for APNs-tokens utløper aldri.
Tabellen .p8 / .p12
| Kriterium | .p8-nøkkel | .p12-sertifikat |
|---|---|---|
| Varighet | Utløper ikke | Ett år |
| Omfang | Alle appene dine | Én app |
| Miljø | Velges ved opprettelse | Sandbox og produksjon |
| Fornyelse | Ingen, med mindre tilbakekalt | Hvert år |
| Nedlasting | Bare én gang | Eksport fra Macen |
| Antall | To per miljø | Ett per app |
| Bruk med Expo | Opprettet og styrt av EAS | Nevnes ikke i Expo-dokumentasjonen |
Tre presiseringer. .p8-filen kan bare lastes ned én gang: Apple lagrer den ikke på kontoen din. .p12-filen derimot eksporteres fra nøkkelringen på Macen som laget sertifikatet. Og grensen på to nøkler per miljø gjelder team-nøkler. For nøkler begrenset til bestemte apper tillater Apple opptil 200 per miljø.
Expos side om credentials nevner bare push-nøkkelen, og oppgir maks to per konto, uten å skille mellom miljøer eller nøkler per app. For en Expo-app er .p8-nøkkelen riktig valg.
Sandbox og produksjon: to miljøer
APNs har to servere: utvikling, også kalt sandbox, og produksjon. Apple bruker den første til testing og den andre til publiserte apper. Appen vet hvilken den skal bruke takket være entitlementet aps-environment. Ifølge Apple følger verdien signeringsprofilen: development med en utviklingsprofil, production med en distribusjonsprofil og for TestFlight.
Et TestFlight-build snakker altså med produksjon, akkurat som App Store.
På Expo-siden er det to detaljer. Dokumentasjonen for expo-notifications sier at entitlementet alltid skrives som development i prosjektet, og deretter endres til production i arkivet til et release-build. Og når Expo-tokenet opprettes, knyttes det til appens miljø, som oppdages automatisk: du trenger ikke velge noe når du sender.
Lager du nøkkelen selv, spør Apple om miljø og omfang: hele teamet eller bestemte apper. Utviklerdokumentasjonen beskriver nå team-nøkler begrenset til sandbox eller produksjon, mens de gamle nøklene som gjelder overalt fortsatt godtas. Kontohjelpen sier derimot fortsatt at nøkkelen fungerer i begge miljøene. Apple motsier seg selv: hold deg til miljøet du velger ved opprettelse. En nøkkel som bare gjelder sandbox, fungerer verken for TestFlight eller App Store.
Slik håndterer Expo push-nøkkelen
Ifølge Expos oppsettsguide, oppdatert 28. juli 2026, spør ditt første utviklings-build om du vil sette opp push-varsler og generere en APNs-nøkkel. Svar ja på begge. Uten EAS Build kjører du eas credentials. Du trenger en betalt Apple Developer-konto.
Deretter:
- EAS lagrer nøkkelen og kobler den til appen din. Ifølge Expo kan én nøkkel brukes til så mange apper du vil, og å laste opp en ny endrer ikke brukernes Expo Push-tokens.
- Serveren din kaller ikke APNs. Den sender til Expos push-tjeneste, som videresender til APNs. Expo ber deg lese kvitteringene omtrent 15 minutter etter sending: det er der feilene dukker opp.
- Pluginen legger til entitlementet. Legg
expo-notificationsinn iplugins:
{
"expo": {
"plugins": ["expo-notifications"]
}
}
To feller. Expos FAQ sier at Expo Go ikke lenger støtter push-varsler siden SDK 53, mens siden for expo-notifications bare gjelder Android. Uansett anbefaler Expo et utviklings-build: test med det. Og sletter du nøkkelen med eas credentials, fjernes den fra Expos servere, ikke fra Apple-kontoen din. For å frigjøre en plass må du tilbakekalle den i Apple-portalen. Som enhver hemmelighet skal .p8-filen aldri havne i repoet ditt: regelen er den samme som for API-nøkler i en Expo-app.
Fornyelse: hva som faktisk utløper
.p8-nøkkelen trenger ingen fornyelse. Den slutter bare å virke hvis du tilbakekaller den. Tror du den er kompromittert, anbefaler Apple å lage en ny nøkkel, bytte over til den, og først deretter tilbakekalle den gamle. For å bytte nøkkel med Expo gir FAQ-en fremgangsmåten: eas credentials, iOS, build-profilen din, så fjerne push-nøkkelen og generere en ny.
.p12-sertifikatet utløper hvert år. Apple ber deg oppdatere det før fristen og følge med på datoen i nøkkelringen. Når det har utløpt eller er tilbakekalt, kan du ikke lenger sende varsler til appen din. Apple beskriver ingen egen fornyelse: du lager et nytt sertifikat fra appens identifikator, installerer det på serveren før fristen, og fjerner så det gamle. Den beste fornyelsen er fortsatt å gå over til nøkkelen.
Administrerer du iPhoner med Intune eller et annet verktøy for enhetsadministrasjon? Det er ikke det samme sertifikatet. Push-sertifikatet for enhetsadministrasjon lages på Apple Push Certificates Portal og fornyes hvert år. Apple anbefaler å notere hvilken Apple-konto du brukte: du trenger den ved fornyelse.
Typiske feil og hvordan du fikser dem
Det virker i utvikling, men ikke i TestFlight
- Du sender til feil token. TestFlight-buildet registrerer seg i produksjon og får et nytt token. Et token fra utviklings-buildet ditt virker ikke: Apple svarer
BadDeviceTokennår tokenet ikke passer til miljøet. Hent tokenet fra selve TestFlight-appen. - Produksjonsappen mangler push-credentials. Det er diagnosen i Expos FAQ. Sjekk credentials-siden for prosjektet på expo.dev, eller
eas credentials. - Nøkkelen din er begrenset til sandbox. Bytt den ut med en nøkkel som gjelder i produksjon.
- iPhonen får ikke noe token. Har du installert TestFlight-buildet over et Xcode-build, foreslår Expo å starte enheten på nytt.
«No valid aps-environment entitlement string found»
Ifølge Expos FAQ betyr denne feilen at ingen push-nøkkel er satt opp for iOS-prosjektet ditt. Sjekk credentials-siden og kjør et nytt build: EAS tilbyr da å generere nøkkelen. Sjekk også at expo-notifications faktisk står i plugins.
ITMS-90078: Missing Push Notification Entitlement
Apple sender denne e-posten etter innsending: appen din ser ut til å registrere seg hos APNs, men signaturen mangler entitlementet aps-environment. Expos notat om SDK 51 forklarer det. Siden denne SDK-en legges entitlementet bare til hvis expo-notifications er installert. Advarselen kommer fra to kontroller hos Apple. Den første sammenligner kapabilitetene til app-identifikatoren med appens entitlements. Den andre finner en metode for varselregistrering i binærfilen, som Expos kode inneholder i alle apper.
Det er en advarsel, ikke en avvisning, presiserer Expo. Bruker du varsler, legger du til pluginen og bygger på nytt: EAS synkroniserer kapabilitetene til app-identifikatoren ved hvert build. Hvis ikke, fjerner du Push Notifications-kapabiliteten fra identifikatoren i Apple-portalen. Advarselen kan bli stående, uten konsekvenser.
InvalidCredentials, eller alle appene blir stille samtidig
InvalidCredentials i en kvittering betyr at push-credentials ikke lenger er gyldige, ofte fordi nøkkelen er tilbakekalt. Alle appene som brukte den, blir stille på en gang. Expos løsning: eas credentials, og så en ny nøkkel. Nevner kvitteringen InvalidProviderToken, anbefaler Expo å bygge på nytt og regenerere push-nøkkelen og profilen.
Før du slår på varsler
For å teste varsler på iPhonen din før lansering, følg TestFlight for å teste appen din. Sender du stille varsler for å vekke appen, les guideline 2.5.4 om bakgrunnsmoduser. Hele kjeden, uten Mac, finner du i publisere en iOS-app uten Mac, og stegene for lanseringen på siden publisere en app på App Store.
Før første innsending, ta den gratis diagnosen: den forteller deg hva som stopper prosjektet ditt og sender deg sjekklisten min mot avvisning fra Apple. For å bygge appen, koble på abonnementer og publisere den, følger iOS & Android Kit prosessen i fire steg med startkoden fra appene mine, i ditt eget tempo.
Ofte stilte spørsmål
Utløper Apples push-sertifikat?
.p12-sertifikatet utløper etter ett år, og varslene dine stopper hvis det ikke byttes ut. .p8-nøkkelen utløper aldri: den slutter bare å virke hvis du tilbakekaller den. Det er hovedgrunnen til å foretrekke nøkkelen.
Trenger jeg ett push-sertifikat per app?
Med et .p12-sertifikat, ja: hvert sertifikat er knyttet til én app. En .p8-nøkkel fungerer for alle appene på kontoen din. Med Expo kan altså én nøkkel dekke hele katalogen din.
Hvordan fornyer jeg et push-sertifikat fra Apple?
Lag et nytt sertifikat fra appens identifikator, med en ny signeringsforespørsel, installer det på serveren og fjern det gamle. Gjør det før fristen. Det enkleste er fortsatt å gå over til en .p8-nøkkel, som ikke trenger fornyelse.
Jeg har mistet .p8-filen, hva gjør jeg?
Apple lar deg bare laste den ned én gang. Hvis EAS laget nøkkelen, har Expo den, og varslene dine fortsetter. Ellers lager du en ny nøkkel, legger den til med eas credentials, og tilbakekaller den gamle i Apple-portalen. Brukernes Expo Push-tokens endres ikke.
Må jeg bygge på nytt etter å ha byttet push-nøkkel?
Som regel ikke. Nøkkelen brukes av serveren som sender, ikke av den installerte appen, og Expo sier at en ny nøkkel ikke endrer tokenene. Unntak: hvis kvitteringene melder InvalidProviderToken, anbefaler Expo å bygge på nytt med ny nøkkel og ny profil.

