Apple push értesítés tanúsítvány: .p8 vagy .p12 Expóval
Írta: Mehdi Azizi
Megjelent: , 8 p
A push értesítésekhez az Apple egy le nem járó, minden appodhoz jó .p8 kulcsot vagy egy évente lejáró .p12 tanúsítványt ad. Expóval a kulcsot az EAS kezeli.
Az Apple push tanúsítványa engedélyezi, hogy egy szerver értesítéseket küldjön az appodnak az APNs-en, az Apple értesítési szolgáltatásán keresztül. Két formában létezik: egy .p12 tanúsítványként, ami egy évig érvényes és egyetlen apphoz kötődik, vagy egy .p8 kulcsként, ami nem jár le, és a fiókod összes appjához használható. Expóval nincs szükséged a tanúsítványra: az EAS az első buildnél felajánlja, hogy létrehoz egy .p8 kulcsot, és az Expo push szolgáltatása helyetted használja.
A fejlesztői tanúsítványról és a provisioning profile-ról szóló útmutató csak pár sorban említi a push kulcsot. Itt végigmegyünk rajta: a két formátum közti választás, a sandbox és a production környezet, a megújítás, és azok a hibák, amik TestFlightban elnémítják az értesítéseket.
Az appjaimat Expóval és EAS-szel publikálom. A Solys és a TradaZen is felveszi a konfigurációjába az expo-notifications plugint: ez készíti fel az appot az értesítések fogadására.
Miért kér az Apple tanúsítványt vagy kulcsot
Egy push értesítés egy szerverről indul, a tiédről vagy az Expóéról, ami átadja az APNs-nek, ami pedig eljuttatja az iPhone-ra. Az APNs-nek tehát ellenőriznie kell, hogy ennek a szervernek joga van-e írni az appodnak. Az Apple kétféle módot kínál ennek igazolására.
- Tokenalapú kapcsolat, .p8 kulccsal. Az Apple szerint gyorsabb, több szerverről is használható, és egyetlen kulcs lefedi a csapatod összes appját vagy egy részüket. A szervered ezzel ír alá egy tokent, amit legalább óránként újra kell generálni.
- Tanúsítványalapú kapcsolat, .p12 fájllal. Az Apple pontosítja, hogy ez a tanúsítvány egyetlen apphoz kötődik, és egy évig érvényes. Több app, több tanúsítvány.
Az Apple lejáratokról szóló oldala is emlékeztet rá: az APNs tokenek aláíró kulcsa soha nem jár le.
A .p8 / .p12 táblázat
| Szempont | .p8 kulcs | .p12 tanúsítvány |
|---|---|---|
| Érvényesség | Nem jár le | Egy év |
| Hatókör | Az összes appod | Egyetlen app |
| Környezet | Létrehozáskor választod | Sandbox és production |
| Megújítás | Nincs, csak visszavonáskor | Minden évben |
| Letöltés | Csak egyszer | Exportálás a Macről |
| Darabszám | Kettő környezetenként | Egy appanként |
| Használat Expóval | Az EAS hozza létre és kezeli | Nem szerepel az Expo dokumentációjában |
Három pontosítás. A .p8 fájlt csak egyszer lehet letölteni: az Apple nem tárolja a fiókodban. A .p12-t viszont a Mac kulcskarikájából exportálod, azon a gépen, amelyik a tanúsítványt létrehozta. A környezetenkénti kétkulcsos limit pedig a csapatszintű kulcsokra vonatkozik. Az egyes appokra korlátozott kulcsokból az Apple környezetenként akár 200-at is enged.
Az Expo azonosítókról szóló oldala csak a push kulcsról beszél, és fiókonként legfeljebb kettőt számol, a környezetek és az appszintű kulcsok megkülönböztetése nélkül. Egy Expo apphoz a .p8 kulcs a jó választás.
Sandbox és production: két környezet
Az APNs-nek két szervere van: a development, más néven sandbox, és a production. Az Apple az elsőt tesztelésre, a másodikat a publikált appokra tartja fenn. Az app az aps-environment entitlement alapján tudja, melyiket használja. Az Apple szerint az értéke az aláíró profilt követi: development fejlesztői profillal, production disztribúciós profillal és TestFlighthoz.
Egy TestFlight build tehát a productionnel beszél, pontosan úgy, mint az App Store.
Expo oldalon két részlet. Az expo-notifications dokumentációja szerint az entitlement a projektben mindig development értékkel szerepel, majd egy release build archívumában production-re vált. Az Expo token pedig létrehozáskor az app környezetéhez kötődik, amit automatikusan felismer: küldéskor semmit nem kell választanod.
Ha a kulcsot te magad hozod létre, az Apple megkérdezi a környezetét és a hatókörét: az egész csapat vagy csak bizonyos appok. A fejlesztői dokumentációja már sandboxra vagy productionre korlátozott csapatkulcsokat ír le, a régi, mindenhol érvényes kulcsokat továbbra is elfogadva. A fiók súgója viszont még mindig azt állítja, hogy a kulcs mindkét környezethez jó. Az Apple ellentmond önmagának: azt a környezetet vedd alapul, amit létrehozáskor választasz. Egy csak sandboxra szóló kulcs se TestFlighthoz, se az App Store-hoz nem fog működni.
Hogyan kezeli az Expo a push kulcsot
Az Expo beállítási útmutatója szerint (frissítve 2026. július 28-án) az első development buildnél felajánlja a push értesítések beállítását és egy APNs kulcs generálását. Mindkettőre mondj igent. EAS Build nélkül futtasd az eas credentials parancsot. Fizetős Apple Developer fiók kell hozzá.
Ezután:
- Az EAS tárolja a kulcsot, és az appodhoz rendeli. Az Expo szerint egy kulcs akárhány apphoz használható, és egy új feltöltése nem változtatja meg a felhasználóid Expo Push tokenjeit.
- A szervered nem hívja az APNs-t. Az Expo push szolgáltatásának küld, ami továbbítja az APNs-nek. Az Expo azt kéri, hogy olvasd ki a nyugtákat nagyjából 15 perccel a küldés után: ott jelennek meg a hibák.
- A plugin beállítja az entitlementet. Vedd fel az
expo-notifications-t apluginsközé:
{
"expo": {
"plugins": ["expo-notifications"]
}
}
Két csapda. Az Expo GYIK szerint az Expo Go az SDK 53 óta nem kezeli a push értesítéseket, míg az expo-notifications oldala csak Androidot említi. Az Expo mindkét esetben development buildet javasol: azzal tesztelj. Ráadásul ha az eas credentials paranccsal törlöd a kulcsot, az az Expo szervereiről tűnik el, nem az Apple fiókodból. Ha helyet akarsz felszabadítani, vond vissza az Apple portálon. Mint minden titok, a .p8 fájl se kerüljön soha a repódba: ugyanaz a szabály, mint egy Expo app API-kulcsainál.
Megújítás: mi jár le valójában
A .p8 kulcsnál nincs mit megújítani. Csak akkor áll le, ha visszavonod. Ha úgy gondolod, kompromittálódott, az Apple azt tanácsolja, hogy hozz létre egy új kulcsot, állj át rá, és csak utána vond vissza a régit. Expóval a GYIK megadja a kulcscsere lépéseit: eas credentials, iOS, a build profilod, majd a push kulcs eltávolítása és egy új generálása.
A .p12 tanúsítvány minden évben lejár. Az Apple azt kéri, hogy a lejárat előtt frissítsd, és figyeld a dátumát a kulcskarikában. Ha lejárt vagy visszavonták, már nem tudsz értesítést küldeni az appodnak. Külön megújítást az Apple nem ír le: az app azonosítójából létrehozol egy új tanúsítványt, a lejárat előtt telepíted a szerveredre, majd eltávolítod a régit. A legjobb megújítás továbbra is az, ha átállsz a kulcsra.
Intune-nal vagy más eszközkezelő eszközzel kezelsz iPhone-okat? Az nem ugyanaz a tanúsítvány. Az eszközkezeléshez használt push tanúsítványt az Apple Push Certificates Portalon kell létrehozni, és évente megújítani. Az Apple azt tanácsolja, hogy jegyezd fel, melyik Apple fiókot használtad: arra lesz szükség a megújításhoz.
Tipikus hibák és a javításuk
Developmentben működik, TestFlightban nem
- Rossz tokenre küldesz. A TestFlight build productionben regisztrál, és új tokent kap. A development buildből származó token nem működik: az Apple
BadDeviceTokenválaszt ad, ha a token nem illik a környezethez. A tokent magából a TestFlight appból szerezd meg. - A production appnak nincsenek push azonosítói. Ez az Expo GYIK diagnózisa. Nézd meg a projekt azonosítóoldalát az expo.dev-en, vagy futtasd az
eas credentialsparancsot. - A kulcsod sandboxra korlátozott. Cseréld le egy productionben érvényes kulcsra.
- Az iPhone nem kap tokent. Ha a TestFlight buildet egy Xcode build fölé telepítetted, az Expo az eszköz újraindítását javasolja.
„No valid aps-environment entitlement string found”
Az Expo GYIK szerint ez a hiba azt jelzi, hogy az iOS projektedhez nincs push kulcs beállítva. Nézd meg az azonosítóoldalt, majd indíts új buildet: az EAS ekkor felajánlja a kulcs generálását. Azt is ellenőrizd, hogy az expo-notifications tényleg szerepel-e a plugins között.
ITMS-90078: Missing Push Notification Entitlement
Ezt az e-mailt az Apple a feltöltés után küldi: úgy tűnik, az appod regisztrál az APNs-nél, de az aláírásában nincs benne az aps-environment entitlement. Az Expo SDK 51-ről szóló jegyzete elmagyarázza. Ettől az SDK-tól kezdve az entitlement csak akkor kerül bele, ha az expo-notifications telepítve van. A figyelmeztetés az Apple két ellenőrzéséből ered. Az első összeveti az app azonosítód képességeit az app entitlementjeivel. A második egy értesítési regisztrációs metódust keres a binárisban, amit az Expo kódja minden appban tartalmaz.
Ez figyelmeztetés, nem elutasítás, pontosít az Expo. Ha használsz értesítéseket, add hozzá a plugint és buildelj újra: az EAS minden buildnél szinkronizálja az app azonosító képességeit. Ha nem, vedd ki a Push Notifications képességet az azonosítódból az Apple portálon. A figyelmeztetés ezután is megmaradhat, következmények nélkül.
InvalidCredentials, vagy hirtelen az összes app elnémul
Ha egy nyugtában InvalidCredentials áll, a push azonosítóid már nem érvényesek, gyakran azért, mert a kulcsot visszavonták. Minden app, ami használta, egyszerre elhallgat. Az Expo javítása: eas credentials, majd egy új kulcs. Ha a nyugta InvalidProviderToken-t említ, az Expo új buildet javasol a push kulcs és a profil újragenerálásával.
Mielőtt bekapcsolod az értesítéseket
Ha a megjelenés előtt az iPhone-odon akarod tesztelni az értesítéseket, kövesd a TestFlight az appod teszteléséhez útmutatót. Ha csendes értesítéseket küldesz az app felébresztésére, olvasd át újra a 2.5.4-es guideline-t a háttérmódokról. A teljes folyamat Mac nélkül itt van: iOS app publikálása Mac nélkül, a megjelenés lépései pedig az app publikálása az App Store-ban oldalon.
Az első küldés előtt csináld meg az ingyenes diagnózist: megmondja, mi akad el a projektedben, és elküldi az Apple-elutasítás elleni checklistemet. Az app megépítéséhez, az előfizetések bekötéséhez és a publikáláshoz az iOS & Android Kit négy lépésben vezet végig, az appjaim induló kódjával, a saját tempódban.
Gyakori kérdések
Lejár az Apple push tanúsítvány?
A .p12 tanúsítvány egy év után lejár, és ha nem cseréled le, leállnak az értesítéseid. A .p8 kulcs soha nem jár le: csak akkor áll le, ha visszavonod. Ez a fő ok, amiért a kulcsot érdemes választani.
Minden apphoz külön push tanúsítvány kell?
.p12 tanúsítvánnyal igen: minden tanúsítvány egyetlen apphoz kötődik. Egy .p8 kulcs a fiókod összes appjához jó. Expóval tehát egyetlen kulcs lefedheti a teljes katalógusodat.
Hogyan újítom meg az Apple push tanúsítványt?
Hozz létre egy új tanúsítványt az app azonosítójából, egy új aláírási kérelemmel, telepítsd a szerveredre, majd távolítsd el a régit. Csináld meg a lejárat előtt. A legegyszerűbb továbbra is az, ha átállsz egy .p8 kulcsra, amit nem kell megújítani.
Elvesztettem a .p8 fájlomat, mit tegyek?
Az Apple csak egyszer engedi letölteni. Ha az EAS hozta létre a kulcsot, az Expo megőrzi, és az értesítéseid továbbra is működnek. Ha nem, hozz létre egy új kulcsot, add hozzá az eas credentials paranccsal, majd vond vissza a régit az Apple portálon. A felhasználóid Expo Push tokenjei nem változnak.
Kell új build a push kulcs cseréje után?
Általában nem. A kulcsot a küldő szerver használja, nem a telepített app, és az Expo szerint egy új kulcs nem változtatja meg a tokeneket. Kivétel: ha a nyugták InvalidProviderToken-t jeleznek, az Expo új buildet javasol új kulccsal és új profillal.

