Apple push certifikat: .p8 ili .p12 s Expom
Autor: Mehdi Azizi
Objavljeno , 8 min
Za push obavijesti Apple nudi .p8 ključ bez isteka za sve tvoje aplikacije ili godišnji .p12 certifikat. S Expom ključem upravlja EAS.
Appleov push certifikat dopušta poslužitelju da šalje obavijesti tvojoj aplikaciji preko APNs-a, Appleove usluge za obavijesti. Postoji u dva oblika: .p12 certifikat, koji vrijedi godinu dana i vezan je uz samo jednu aplikaciju, ili .p8 ključ, koji ne istječe i služi za sve aplikacije na tvom računu. S Expom ti certifikat ne treba: EAS ti pri prvom buildu ponudi da napraviš .p8 ključ, a Expova push usluga ga koristi umjesto tebe.
Vodič o developerskom certifikatu i provisioning profileu spominje push ključ u nekoliko redaka. Ovdje idemo do kraja: izbor između dva formata, sandbox i production okruženja, obnavljanje i kvarovi koji gase obavijesti u TestFlightu.
Svoje aplikacije objavljujem s Expom i EAS-om. Solys i TradaZen u konfiguraciji deklariraju plugin expo-notifications: on priprema aplikaciju za primanje obavijesti.
Zašto Apple traži certifikat ili ključ
Push obavijest kreće s poslužitelja, tvog ili Expovog, koji je predaje APNs-u, a on je dostavlja na iPhone. APNs zato mora provjeriti smije li taj poslužitelj pisati tvojoj aplikaciji. Apple nudi dva načina da se to dokaže.
- Veza preko tokena, s .p8 ključem. Prema Appleu, brža je, može se koristiti s više poslužitelja, a jedan ključ pokriva sve aplikacije tvog tima ili dio njih. Tvoj poslužitelj njime potpisuje token, koji treba obnoviti barem svakih sat vremena.
- Veza preko certifikata, s .p12 datotekom. Apple navodi da je taj certifikat vezan uz jednu aplikaciju i vrijedi godinu dana. Više aplikacija, više certifikata.
Appleova stranica o isteku to potvrđuje: ključ za potpisivanje APNs tokena nikad ne istječe.
Tablica .p8 / .p12
| Kriterij | .p8 ključ | .p12 certifikat |
|---|---|---|
| Trajanje | Ne istječe | Godinu dana |
| Doseg | Sve tvoje aplikacije | Samo jedna aplikacija |
| Okruženje | Biraš ga pri izradi | Sandbox i production |
| Obnavljanje | Nikakvo, osim opoziva | Svake godine |
| Preuzimanje | Samo jednom | Izvoz s Maca |
| Broj | Dva po okruženju | Jedan po aplikaciji |
| Uporaba s Expom | Izrađuje i vodi ga EAS | Nema ga u Expo dokumentaciji |
Tri pojašnjenja. .p8 datoteka preuzima se samo jednom: Apple je ne čuva na tvom računu. .p12 se pak izvozi iz keychaina Maca koji je napravio certifikat. A ograničenje od dva ključa po okruženju vrijedi za timske ključeve. Za ključeve ograničene na određene aplikacije Apple dopušta do 200 po okruženju.
Expova stranica o vjerodajnicama govori samo o push ključu i navodi najviše dva po računu, bez razlikovanja okruženja ili ključeva po aplikaciji. Za Expo aplikaciju .p8 ključ je pravi izbor.
Sandbox i production: dva okruženja
APNs ima dva poslužitelja: development, zvan i sandbox, i production. Apple prvi namjenjuje testiranju, a drugi objavljenim aplikacijama. Aplikacija zna koji koristiti zahvaljujući entitlementu aps-environment. Prema Appleu, njegova vrijednost prati profil potpisivanja: development s development profilom, production s distribucijskim profilom i za TestFlight.
TestFlight build dakle razgovara s productionom, točno kao App Store.
Na strani Expa dva detalja. Dokumentacija za expo-notifications kaže da je entitlement u projektu uvijek zapisan kao development, a u arhivi release builda prebacuje se na production. I pri izradi se Expo token veže uz okruženje aplikacije, koje se otkriva automatski: pri slanju ne moraš ništa birati.
Ako ključ izrađuješ sam, Apple te pita za okruženje i doseg: cijeli tim ili određene aplikacije. Njegova developerska dokumentacija sada opisuje timske ključeve ograničene na sandbox ili production, dok se stari ključevi koji vrijede svugdje i dalje prihvaćaju. Pomoć za račun pak i dalje tvrdi da ključ služi za oba okruženja. Apple sam sebi proturječi: drži se okruženja koje odabereš pri izradi. Ključ rezerviran za sandbox neće raditi ni za TestFlight ni za App Store.
Kako Expo upravlja push ključem
Prema Expovom vodiču za postavljanje, ažuriranom 28. srpnja 2026., tvoj prvi development build ponudit će ti da postaviš push obavijesti i generiraš APNs ključ. Odgovori potvrdno na oboje. Bez EAS Builda pokreni eas credentials. Treba ti plaćeni Apple Developer račun.
Zatim:
- EAS sprema ključ i povezuje ga s tvojom aplikacijom. Prema Expu, jedan ključ služi za koliko god aplikacija želiš, a učitavanje novog ne mijenja Expo Push tokene tvojih korisnika.
- Tvoj poslužitelj ne zove APNs. Šalje Expovoj push usluzi, koja prosljeđuje APNs-u. Expo traži da čitaš potvrde (receipts) otprilike 15 minuta nakon slanja: tamo se prikazuju greške.
- Plugin postavlja entitlement. Deklariraj
expo-notificationsuplugins:
{
"expo": {
"plugins": ["expo-notifications"]
}
}
Dvije zamke. Expov FAQ kaže da Expo Go od SDK-a 53 više ne podržava push obavijesti, dok stranica za expo-notifications to navodi samo za Android. U oba slučaja Expo preporučuje development build: testiraj s njim. I brisanje ključa preko eas credentials uklanja ga s Expovih poslužitelja, ne s tvog Apple računa. Da oslobodiš mjesto, opozovi ga na Appleovu portalu. Kao i svaka tajna, .p8 datoteka nikad ne smije završiti u tvom repozitoriju: pravilo je isto kao za API ključeve Expo aplikacije.
Obnavljanje: što zapravo istječe
.p8 ključ ne treba obnavljati. Prestaje raditi samo ako ga opozoveš. Ako misliš da je kompromitiran, Apple savjetuje da napraviš novi ključ, prebaciš se na njega i tek onda opozoveš stari. Za zamjenu ključa s Expom FAQ daje postupak: eas credentials, iOS, tvoj build profil, zatim uklanjanje push ključa i generiranje novog.
.p12 certifikat istječe svake godine. Apple traži da ga ažuriraš prije isteka i pratiš datum u keychainu. Kad istekne ili bude opozvan, više ne možeš slati obavijesti svojoj aplikaciji. Apple ne opisuje zasebno obnavljanje: napraviš novi certifikat iz identifikatora aplikacije, instaliraš ga na poslužitelj prije isteka, a zatim ukloniš stari. Najbolje obnavljanje je prijeći na ključ.
Upravljaš iPhoneima preko Intunea ili drugog alata za upravljanje uređajima? To nije isti certifikat. Push certifikat za upravljanje uređajima izrađuje se na Apple Push Certificates Portalu i obnavlja svake godine. Apple savjetuje da zapišeš koji si Apple račun koristio: trebat će ti za obnavljanje.
Tipični kvarovi i kako ih popraviti
Radi u developmentu, ali ne u TestFlightu
- Šalješ na krivi token. TestFlight build registrira se u productionu i dobiva novi token. Token iz development builda ne radi: Apple vraća
BadDeviceTokenkad token ne odgovara okruženju. Uzmi token iz same TestFlight aplikacije. - Production aplikacija nema push vjerodajnice. To je dijagnoza iz Expovog FAQ-a. Provjeri stranicu s vjerodajnicama projekta na expo.dev ili
eas credentials. - Tvoj ključ je ograničen na sandbox. Zamijeni ga ključem koji vrijedi u productionu.
- iPhone ne dobiva token. Ako si TestFlight build instalirao preko Xcode builda, Expo predlaže ponovno pokretanje uređaja.
"No valid aps-environment entitlement string found"
Prema Expovom FAQ-u, ova greška znači da za tvoj iOS projekt nije postavljen nijedan push ključ. Provjeri stranicu s vjerodajnicama, pa ponovno pokreni build: EAS će ti tada ponuditi da generiraš ključ. Provjeri i je li expo-notifications stvarno u plugins.
ITMS-90078: Missing Push Notification Entitlement
Apple šalje ovaj e-mail nakon slanja: čini se da se tvoja aplikacija registrira na APNs, ali njezin potpis ne sadrži entitlement aps-environment. Expova napomena o SDK-u 51 to objašnjava. Od tog SDK-a entitlement se dodaje samo ako je instaliran expo-notifications. Upozorenje dolazi iz dviju Appleovih provjera. Prva uspoređuje capabilities identifikatora tvoje aplikacije s entitlementima aplikacije. Druga u binarnoj datoteci pronalazi metodu za registraciju obavijesti, koju Expov kod sadrži u svim aplikacijama.
To je upozorenje, ne odbijanje, naglašava Expo. Ako koristiš obavijesti, dodaj plugin i napravi novi build: EAS sinkronizira capabilities identifikatora aplikacije pri svakom buildu. Ako ne, ukloni capability Push Notifications s identifikatora na Appleovu portalu. Upozorenje može ostati, bez posljedica.
InvalidCredentials ili sve aplikacije odjednom utihnu
InvalidCredentials u potvrdi znači da tvoje push vjerodajnice više nisu valjane, često zato što je ključ opozvan. Sve aplikacije koje su ga koristile utihnu istovremeno. Expovo rješenje: eas credentials, zatim novi ključ. Ako potvrda spominje InvalidProviderToken, Expo savjetuje novi build uz ponovno generiranje push ključa i profila.
Prije nego uključiš obavijesti
Da testiraš obavijesti na svom iPhoneu prije izlaska, prati TestFlight za testiranje aplikacije. Ako šalješ tihe obavijesti da probudiš aplikaciju, ponovno pročitaj smjernicu 2.5.4 o pozadinskim načinima rada. Cijeli lanac, bez Maca, nalazi se u objavi iOS aplikacije bez Maca, a koraci izlaska na stranici objava aplikacije na App Storeu.
Prije prvog slanja napravi besplatnu dijagnostiku: reći će ti što blokira tvoj projekt i poslati ti moju checklistu protiv Appleovih odbijanja. Za izradu aplikacije, spajanje pretplata i objavu, iOS & Android Kit prati put u četiri koraka s početnim kodom mojih aplikacija, tvojim tempom.
Česta pitanja
Istječe li Appleov push certifikat?
.p12 certifikat istječe nakon godinu dana i obavijesti prestaju ako ga ne zamijeniš. .p8 ključ nikad ne istječe: prestaje raditi samo ako ga opozoveš. To je glavni razlog da odabereš ključ.
Treba li push certifikat za svaku aplikaciju?
S .p12 certifikatom da: svaki certifikat vezan je uz jednu aplikaciju. .p8 ključ služi za sve aplikacije na tvom računu. S Expom dakle jedan ključ može pokriti cijeli tvoj katalog.
Kako obnoviti Appleov push certifikat?
Napravi novi certifikat iz identifikatora aplikacije, s novim zahtjevom za potpisivanje, instaliraj ga na poslužitelj, pa ukloni stari. Učini to prije isteka. Najjednostavnije je prijeći na .p8 ključ, koji se ne obnavlja.
Izgubio sam .p8 datoteku, što sad?
Apple je dopušta preuzeti samo jednom. Ako je ključ napravio EAS, Expo ga čuva i obavijesti rade dalje. Ako nije, napravi novi ključ, dodaj ga preko eas credentials, pa opozovi stari na Appleovu portalu. Expo Push tokeni tvojih korisnika se ne mijenjaju.
Treba li novi build nakon promjene push ključa?
Uglavnom ne. Ključ služi poslužitelju koji šalje, ne instaliranoj aplikaciji, a Expo navodi da novi ključ ne mijenja tokene. Iznimka: ako potvrde javljaju InvalidProviderToken, Expo savjetuje novi build s novim ključem i novim profilom.

