Apple push certifikat: .p8 ali .p12 z Expo
Avtor: Mehdi Azizi
Objavljeno , 8 min
Za push obvestila Apple ponuja ključ .p8 brez izteka, veljaven za vse tvoje aplikacije, ali letni certifikat .p12. Z Expo ključ upravlja EAS.
Applov push certifikat strežniku dovoli, da tvoji aplikaciji pošilja obvestila prek APNs, Applove storitve za obvestila. Obstaja v dveh oblikah: certifikat .p12, ki velja eno leto in je vezan na eno samo aplikacijo, ali ključ .p8, ki ne poteče in služi vsem aplikacijam tvojega računa. Z Expo certifikata ne potrebuješ: EAS ti ob prvem buildu predlaga, da ustvariš ključ .p8, Expova push storitev pa ga uporablja namesto tebe.
Vodič o razvijalskem certifikatu in provisioning profilu push ključ omeni v nekaj vrsticah. Tukaj gremo do konca: izbira med formatoma, okolji sandbox in production, obnavljanje in okvare, ki v TestFlightu ugasnejo obvestila.
Svoje aplikacije objavljam z Expo in EAS. Solys in TradaZen v konfiguraciji navajata plugin expo-notifications: prav on pripravi aplikacijo na prejemanje obvestil.
Zakaj Apple zahteva certifikat ali ključ
Push obvestilo odide s strežnika, tvojega ali Expovega, ki ga preda APNs, ta pa ga dostavi na iPhone. APNs mora torej preveriti, da ima strežnik pravico pisati tvoji aplikaciji. Apple ponuja dva načina, kako to dokazati.
- Povezava z žetonom, s ključem .p8. Po Applovih besedah je hitrejša, uporabna z več strežnikov, en ključ pa pokrije vse aplikacije tvoje ekipe ali del njih. Tvoj strežnik z njim podpiše žeton, ki ga je treba obnoviti vsaj vsako uro.
- Povezava s certifikatom, z datoteko .p12. Apple pojasnjuje, da je ta certifikat vezan na eno samo aplikacijo in velja eno leto. Več aplikacij, več certifikatov.
Applova stran o izteku veljavnosti to potrjuje: ključ za podpisovanje žetonov APNs nikoli ne poteče.
Tabela .p8 / .p12
| Merilo | Ključ .p8 | Certifikat .p12 |
|---|---|---|
| Trajanje | Brez izteka | Eno leto |
| Obseg | Vse tvoje aplikacije | Ena sama aplikacija |
| Okolje | Izbrano ob ustvarjanju | Sandbox in production |
| Obnavljanje | Nobeno, razen preklica | Vsako leto |
| Prenos | Samo enkrat | Izvoz z Maca |
| Število | Dva na okolje | Eden na aplikacijo |
| Uporaba z Expo | Ustvari in upravlja EAS | Ni ga v Expo dokumentaciji |
Tri pojasnila. Datoteko .p8 lahko preneseš samo enkrat: Apple je v tvojem računu ne hrani. Datoteko .p12 pa izvoziš iz keychaina na Macu, ki je certifikat ustvaril. In omejitev dveh ključev na okolje velja za ključe ekipe. Za ključe, omejene na določene aplikacije, Apple dovoli do 200 na okolje.
Expova stran o poverilnicah govori samo o push ključu in jih našteje največ dva na račun, brez razlikovanja okolij ali ključev po aplikacijah. Za aplikacijo Expo je ključ .p8 prava izbira.
Sandbox in production: dve okolji
APNs ima dva strežnika: development, imenovan tudi sandbox, in production. Apple prvega namenja testiranju, drugega objavljenim aplikacijam. Aplikacija ve, katerega uporabiti, zaradi entitlementa aps-environment. Po Applu njegova vrednost sledi profilu za podpisovanje: development z razvojnim profilom, production z distribucijskim profilom in za TestFlight.
Build v TestFlightu torej govori s productionom, natanko kot App Store.
Pri Expo dve podrobnosti. Dokumentacija expo-notifications navaja, da je entitlement v projektu vedno zapisan kot development, nato pa se v arhivu release builda spremeni v production. Ob ustvarjanju je Expo žeton vezan na okolje aplikacije, ki se zazna samodejno: pri pošiljanju ti ni treba ničesar izbirati.
Če ključ ustvariš sam, te Apple vpraša po njegovem okolju in obsegu: cela ekipa ali določene aplikacije. Njegova dokumentacija za razvijalce zdaj opisuje ključe ekipe, omejene na sandbox ali production, starejši ključi, veljavni povsod, pa so še vedno sprejeti. Pomoč za račun pa še vedno trdi, da ključ služi obema okoljema. Apple si nasprotuje: drži se okolja, ki ga izbereš ob ustvarjanju. Ključ, omejen na sandbox, ne bo deloval ne za TestFlight ne za App Store.
Kako Expo upravlja push ključ
Po Expovem vodiču za nastavitev, posodobljenem 28. julija 2026, ti prvi development build predlaga nastavitev push obvestil in ustvarjanje ključa APNs. Na oboje odgovori z da. Brez EAS Build zaženi eas credentials. Potrebuješ plačljiv račun Apple Developer.
Nato:
- EAS shrani ključ in ga poveže s tvojo aplikacijo. Po Expu en ključ služi poljubnemu številu aplikacij, nalaganje novega pa ne spremeni Expo Push žetonov tvojih uporabnikov.
- Tvoj strežnik ne kliče APNs. Pošilja Expovi push storitvi, ki posreduje APNs. Expo te prosi, da prebereš potrdila približno 15 minut po pošiljanju: tam se pokažejo napake.
- Plugin doda entitlement. Navedi
expo-notificationsvplugins:
{
"expo": {
"plugins": ["expo-notifications"]
}
}
Dve pasti. Expov FAQ pravi, da Expo Go od SDK 53 ne podpira več push obvestil, stran expo-notifications pa omenja samo Android. V obeh primerih Expo priporoča development build: testiraj z njim. Brisanje ključa z eas credentials ga odstrani z Expovih strežnikov, ne pa iz tvojega Apple računa. Če želiš sprostiti mesto, ga prekliči v Applovem portalu. Kot vsaka skrivnost datoteka .p8 nikoli ne sme končati v tvojem repozitoriju: pravilo je enako kot za API ključe aplikacije Expo.
Obnavljanje: kaj res poteče
Ključa .p8 ni treba obnavljati. Neha delovati samo, če ga prekličeš. Če sumiš, da je bil kompromitiran, Apple svetuje, da ustvariš nov ključ, preklopiš nanj in šele nato prekličeš starega. Za zamenjavo ključa z Expo FAQ navaja postopek: eas credentials, iOS, tvoj build profil, nato odstranitev push ključa in ustvarjanje novega.
Certifikat .p12 poteče vsako leto. Apple zahteva, da ga posodobiš pred iztekom in spremljaš njegov datum v keychainu. Ko poteče ali je preklican, tvoji aplikaciji ne moreš več pošiljati obvestil. Apple ne opisuje posebnega obnavljanja: nov certifikat ustvariš iz identifikatorja aplikacije, ga pred iztekom namestiš na strežnik in nato odstraniš starega. Najboljše obnavljanje je še vedno prehod na ključ.
Upravljaš iPhone z Intune ali drugim orodjem za upravljanje naprav? To ni isti certifikat. Push certifikat za upravljanje naprav se ustvari na Apple Push Certificates Portal in se obnavlja vsako leto. Apple svetuje, da si zapišeš uporabljeni Apple račun: potreboval ga boš za obnovo.
Tipične okvare in njihova odprava
V razvoju deluje, v TestFlightu ne
- Pošiljaš na napačen žeton. Build v TestFlightu se registrira v productionu in dobi nov žeton. Žeton iz tvojega development builda ne deluje: Apple odgovori
BadDeviceToken, ko se žeton ne ujema z okoljem. Žeton pridobi iz same aplikacije v TestFlightu. - Produkcijska aplikacija nima push poverilnic. To je diagnoza iz Expovega FAQ. Preveri stran s poverilnicami projekta na expo.dev ali
eas credentials. - Tvoj ključ je omejen na sandbox. Zamenjaj ga s ključem, ki velja v productionu.
- iPhone ne dobi žetona. Če si build iz TestFlighta namestil čez build iz Xcode, Expo predlaga ponovni zagon naprave.
»No valid aps-environment entitlement string found«
Po Expovem FAQ ta napaka pomeni, da za tvoj iOS projekt ni nastavljen noben push ključ. Preveri stran s poverilnicami in ponovno zaženi build: EAS ti bo takrat predlagal ustvarjanje ključa. Preveri tudi, da je expo-notifications res v plugins.
ITMS-90078: Missing Push Notification Entitlement
Apple to e-pošto pošlje po oddaji: tvoja aplikacija se očitno registrira v APNs, njen podpis pa ne vsebuje entitlementa aps-environment. Expova opomba o SDK 51 to razloži. Od tega SDK se entitlement doda samo, če je nameščen expo-notifications. Opozorilo izhaja iz dveh Applovih preverjanj. Prvo primerja zmožnosti identifikatorja tvoje aplikacije z entitlementi aplikacije. Drugo v binarni datoteki zazna metodo za registracijo obvestil, ki jo Expova koda vsebuje v vseh aplikacijah.
To je opozorilo, ne zavrnitev, pojasnjuje Expo. Če obvestila uporabljaš, dodaj plugin in ponovi build: EAS ob vsakem buildu sinhronizira zmožnosti identifikatorja aplikacije. Sicer v Applovem portalu odstrani zmožnost Push Notifications s svojega identifikatorja. Opozorilo lahko ostane, brez posledic.
InvalidCredentials ali vse aplikacije naenkrat utihnejo
InvalidCredentials v potrdilu pomeni, da tvoje push poverilnice niso več veljavne, pogosto zato, ker je bil ključ preklican. Vse aplikacije, ki so ga uporabljale, utihnejo hkrati. Expova rešitev: eas credentials, nato nov ključ. Če potrdilo omenja InvalidProviderToken, Expo svetuje nov build z na novo ustvarjenim push ključem in profilom.
Preden vklopiš obvestila
Če želiš obvestila preizkusiti na svojem iPhonu pred izidom, sledi vodiču TestFlight za testiranje aplikacije. Če pošiljaš tiha obvestila za prebujanje aplikacije, ponovno preberi smernico 2.5.4 o načinih v ozadju. Celotna veriga brez Maca je v članku objava iOS aplikacije brez Maca, koraki izida pa na strani objava aplikacije v App Store.
Pred prvo oddajo naredi brezplačno diagnozo: pove ti, kaj v tvojem projektu blokira, in ti pošlje moj kontrolni seznam proti Applovim zavrnitvam. Za izdelavo aplikacije, vklop naročnin in objavo iOS & Android Kit sledi poti v štirih korakih z začetno kodo mojih aplikacij, v tvojem tempu.
Pogosta vprašanja
Ali Applov push certifikat poteče?
Certifikat .p12 poteče po enem letu in tvoja obvestila se ustavijo, če ga ne zamenjaš. Ključ .p8 nikoli ne poteče: neha delovati samo, če ga prekličeš. To je glavni razlog, da je ključ boljša izbira.
Ali potrebujem push certifikat za vsako aplikacijo?
S certifikatom .p12 da: vsak certifikat je vezan na eno samo aplikacijo. Ključ .p8 služi vsem aplikacijam tvojega računa. Z Expo lahko torej en sam ključ pokrije ves tvoj katalog.
Kako obnovim Applov push certifikat?
Ustvari nov certifikat iz identifikatorja svoje aplikacije z novo zahtevo za podpis, ga namesti na strežnik in nato odstrani starega. Naredi to pred iztekom. Najpreprosteje je preiti na ključ .p8, ki se ne obnavlja.
Izgubil sem datoteko .p8, kaj naj naredim?
Apple jo dovoli prenesti samo enkrat. Če je ključ ustvaril EAS, ga Expo hrani in tvoja obvestila delujejo naprej. Sicer ustvari nov ključ, ga dodaj z eas credentials in nato v Applovem portalu prekliči starega. Expo Push žetoni tvojih uporabnikov se ne spremenijo.
Ali moram po menjavi push ključa ponoviti build?
Običajno ne. Ključ služi strežniku, ki pošilja, ne nameščeni aplikaciji, in Expo navaja, da nov ključ ne spremeni žetonov. Izjema: če potrdila javljajo InvalidProviderToken, Expo svetuje nov build z novim ključem in novim profilom.

