Certificat push d'Apple: .p8 o .p12 amb Expo
Per Mehdi Azizi
Publicat el , 8 min
Apple ofereix una clau .p8 sense caducitat per a totes les apps o un certificat .p12 anual. Amb Expo, EAS gestiona la clau per tu.
El certificat push d'Apple autoritza un servidor a enviar notificacions a la teva app a través d'APNs, el servei de notificacions d'Apple. N'hi ha de dues formes: un certificat .p12, vàlid un any i lligat a una sola app, o una clau .p8, que no caduca i serveix per a totes les apps del teu compte. Amb Expo, no et cal el certificat: EAS et proposa crear una clau .p8 al primer build, i el servei push d'Expo la fa servir per tu.
La guia sobre el certificat de desenvolupador i el provisioning profile parla de la clau push en poques línies. Aquí anem fins al final: l'elecció entre els dos formats, els entorns sandbox i producció, la renovació, i les avaries que tallen les notificacions a TestFlight.
Publico les meves apps amb Expo i EAS. Solys i TradaZen declaren el plugin expo-notifications a la seva configuració: és el que prepara l'app per rebre notificacions.
Per què Apple demana un certificat o una clau
Una notificació push surt d'un servidor, el teu o el d'Expo, que la passa a APNs, que la lliura a l'iPhone. Per tant, APNs ha de verificar que aquest servidor té dret a escriure a la teva app. Apple ofereix dues maneres de demostrar-ho.
- La connexió per token, amb una clau .p8. Segons Apple, és més ràpida, es pot fer servir des de diversos servidors, i una mateixa clau cobreix totes les apps del teu equip o una part. El teu servidor signa amb ella un token, que s'ha de refer com a mínim cada hora.
- La connexió per certificat, amb un fitxer .p12. Apple precisa que aquest certificat està lligat a una sola app i és vàlid un any. Diverses apps, diversos certificats.
La pàgina d'Apple sobre les caducitats ho recorda: la clau de signatura dels tokens APNs no caduca mai.
La taula .p8 / .p12
| Criteri | Clau .p8 | Certificat .p12 |
|---|---|---|
| Durada | Sense caducitat | Un any |
| Abast | Totes les teves apps | Una sola app |
| Entorn | Triat en crear-la | Sandbox i producció |
| Renovació | Cap, excepte revocació | Cada any |
| Descàrrega | Una sola vegada | Exportació des del Mac |
| Nombre | Dues per entorn | Un per app |
| Ús amb Expo | Creada i gestionada per EAS | Absent de la doc d'Expo |
Tres aclariments. El fitxer .p8 només es pot descarregar una vegada: Apple no el guarda al teu compte. El .p12, en canvi, s'exporta des del clauer del Mac que ha creat el certificat. I el límit de dues claus per entorn s'aplica a les claus d'equip. Per a les claus limitades a certes apps, Apple en permet fins a 200 per entorn.
La pàgina d'Expo sobre les credencials només parla de la clau push, i en compta dues per compte com a màxim, sense distingir entorns ni claus per app. Per a una app Expo, la clau .p8 és la bona elecció.
Sandbox i producció: dos entorns
APNs té dos servidors: desenvolupament, també anomenat sandbox, i producció. Apple reserva el primer per a les proves i el segon per a les apps publicades. L'app sap quin ha de fer servir gràcies a l'entitlement aps-environment. Segons Apple, el seu valor segueix el perfil de signatura: development amb un perfil de desenvolupament, production amb un perfil de distribució i per a TestFlight.
Per tant, un build de TestFlight parla amb producció, exactament com l'App Store.
Pel costat d'Expo, dos detalls. La documentació d'expo-notifications indica que l'entitlement sempre s'escriu com a development al projecte, i després passa a production a l'arxiu d'un build de release. I en crear-se, el token d'Expo queda vinculat a l'entorn de l'app, detectat automàticament: no has de triar res en enviar.
Si crees la clau tu mateix, Apple et demana l'entorn i l'abast: tot l'equip o certes apps. La seva documentació per a desenvolupadors descriu ara claus d'equip limitades a sandbox o a producció, i les claus antigues vàlides a tot arreu continuen acceptades. L'ajuda del compte, en canvi, encara afirma que la clau serveix per als dos entorns. Apple es contradiu: queda't amb l'entorn que triïs en crear-la. Una clau reservada a sandbox no servirà ni per a TestFlight ni per a l'App Store.
Com gestiona Expo la clau push
Segons la guia de configuració d'Expo, actualitzada el 28 de juliol de 2026, el teu primer build de desenvolupament et proposa configurar les notificacions push i generar una clau APNs. Respon que sí a totes dues. Sense EAS Build, executa eas credentials. Necessites un compte d'Apple Developer de pagament.
Després:
- EAS emmagatzema la clau i l'associa a la teva app. Segons Expo, una clau serveix per a tantes apps com vulguis, i pujar-ne una de nova no canvia els tokens Expo Push dels teus usuaris.
- El teu servidor no crida APNs. Envia al servei push d'Expo, que ho transmet a APNs. Expo et demana que llegeixis els rebuts uns 15 minuts després de l'enviament: és allà on apareixen els errors.
- El plugin afegeix l'entitlement. Declara
expo-notificationsaplugins:
{
"expo": {
"plugins": ["expo-notifications"]
}
}
Dues trampes. Les FAQ d'Expo diuen que Expo Go ja no gestiona les notificacions push des del SDK 53, mentre que la pàgina d'expo-notifications només ho diu per a Android. En tots dos casos, Expo recomana un build de desenvolupament: prova amb aquest. I esborrar la clau amb eas credentials la treu dels servidors d'Expo, no del teu compte d'Apple. Per alliberar una plaça, revoca-la al portal d'Apple. Com qualsevol secret, el fitxer .p8 no ha d'acabar mai al teu repositori: la regla és la mateixa que per a les claus API d'una app Expo.
Renovar: què caduca de debò
La clau .p8 no s'ha de renovar. Només s'atura si la revoques. Si creus que està compromesa, Apple recomana crear una clau nova, passar-hi, i només després revocar l'antiga. Per substituir la clau amb Expo, les FAQ donen els passos: eas credentials, iOS, el teu perfil de build, i després treure la clau push i generar-ne una de nova.
El certificat .p12 caduca cada any. Apple demana actualitzar-lo abans del venciment i vigilar-ne la data al clauer. Un cop caducat o revocat, ja no pots enviar notificacions a la teva app. Apple no descriu cap renovació com a tal: crees un certificat nou des de l'identificador de l'app, l'instal·les al servidor abans del venciment, i després treus l'antic. La millor renovació continua sent passar a la clau.
Gestiones iPhones amb Intune o una altra eina de gestió de flota? No és el mateix certificat. El certificat push de gestió de dispositius es crea a l'Apple Push Certificates Portal i es renova cada any. Apple recomana apuntar el compte d'Apple utilitzat: servirà per a la renovació.
Les avaries típiques i com corregir-les
Funciona en desenvolupament, però no a TestFlight
- Envies al token equivocat. El build de TestFlight es registra a producció i obté un token nou. Un token del teu build de desenvolupament no funciona: Apple respon
BadDeviceTokenquan el token no correspon a l'entorn. Agafa el token des de la mateixa app de TestFlight. - L'app de producció no té credencials push. És el diagnòstic de les FAQ d'Expo. Comprova la pàgina de credencials del projecte a expo.dev, o
eas credentials. - La teva clau està limitada a sandbox. Substitueix-la per una clau vàlida a producció.
- L'iPhone no obté cap token. Si has instal·lat el build de TestFlight per sobre d'un build d'Xcode, Expo suggereix reiniciar el dispositiu.
«No valid aps-environment entitlement string found»
Segons les FAQ d'Expo, aquest error indica que no hi ha cap clau push configurada per al teu projecte iOS. Comprova la pàgina de credencials i torna a llançar un build: EAS et proposarà llavors generar la clau. Comprova també que expo-notifications és a plugins.
ITMS-90078: Missing Push Notification Entitlement
Apple envia aquest correu després de l'enviament: sembla que la teva app es registra a APNs, però la seva signatura no conté l'entitlement aps-environment. La nota d'Expo sobre el SDK 51 ho explica. Des d'aquest SDK, l'entitlement només s'afegeix si expo-notifications està instal·lat. L'avís ve de dos controls d'Apple. El primer compara les capacitats del teu identificador d'app amb els entitlements de l'app. El segon detecta al binari un mètode de registre a les notificacions, que el codi d'Expo conté a totes les apps.
És un avís, no un rebuig, precisa Expo. Si fas servir notificacions, afegeix el plugin i torna a fer un build: EAS sincronitza les capacitats de l'identificador d'app a cada build. Si no, treu la capacitat Push Notifications del teu identificador al portal d'Apple. L'avís pot persistir, sense conseqüències.
InvalidCredentials o totes les apps mudes de cop
InvalidCredentials en un rebut vol dir que les teves credencials push ja no són vàlides, sovint perquè la clau s'ha revocat. Totes les apps que la feien servir callen alhora. La solució d'Expo: eas credentials, i després una clau nova. Si el rebut menciona InvalidProviderToken, Expo recomana tornar a fer un build regenerant la clau push i el perfil.
Abans d'activar les notificacions
Per provar les notificacions al teu iPhone abans del llançament, segueix TestFlight per provar la teva app. Si envies notificacions silencioses per despertar l'app, rellegeix la guideline 2.5.4 sobre els modes en segon pla. Tota la cadena, sense Mac, és a publicar una app iOS sense Mac, i els passos del llançament a la pàgina publicar una aplicació a l'App Store.
Abans del teu primer enviament, fes el diagnòstic gratuït: et diu què bloqueja el teu projecte i t'envia la meva checklist antirebuig d'Apple. Per construir l'app, connectar les subscripcions i publicar-la, l'iOS & Android Kit segueix el recorregut en quatre etapes amb el codi de partida de les meves apps, al teu ritme.
Preguntes freqüents
El certificat push d'Apple caduca?
El certificat .p12 caduca al cap d'un any, i les teves notificacions s'aturen si no el substitueixes. La clau .p8 no caduca mai: només s'atura si la revoques. És la raó principal per preferir la clau.
Cal un certificat push per app?
Amb un certificat .p12, sí: cada certificat està lligat a una sola app. Una clau .p8 serveix per a totes les apps del teu compte. Per tant, amb Expo una sola clau pot cobrir tot el teu catàleg.
Com es renova un certificat push d'Apple?
Crea un certificat nou des de l'identificador de la teva app, amb una nova sol·licitud de signatura, instal·la'l al servidor i després treu l'antic. Fes-ho abans del venciment. El més senzill continua sent passar a una clau .p8, que no es renova.
He perdut el meu fitxer .p8, què faig?
Apple només permet descarregar-lo una vegada. Si EAS ha creat la clau, Expo la guarda i les teves notificacions continuen. Si no, crea una clau nova, afegeix-la amb eas credentials i després revoca l'antiga al portal d'Apple. Els tokens Expo Push dels teus usuaris no canvien.
Cal tornar a fer un build després de canviar de clau push?
En general, no. La clau serveix al servidor que envia, no a l'app instal·lada, i Expo indica que una clau nova no canvia els tokens. Excepció: si els rebuts indiquen InvalidProviderToken, Expo recomana tornar a fer un build amb una clau nova i un perfil nou.

