# Apple push certifikat: .p8 ali .p12 z Expo

> Za push obvestila Apple ponuja ključ .p8 brez izteka, veljaven za vse tvoje aplikacije, ali letni certifikat .p12. Z Expo ključ upravlja EAS.

Izvirna stran: [Apple push certifikat: .p8 ali .p12 z Expo](https://devoria.fr/sl/blog/apple-push-certifikat-p8-p12-expo)
Avtor: [Mehdi Azizi](https://devoria.fr/sl/mehdi-azizi)
Objava: 2026-11-04
Zadnja revizija vsebine: 2026-11-04


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](https://devoria.fr/sl/blog/certifikat-razvijalca-ios-provisioning-profile-expo) 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](https://developer.apple.com/documentation/usernotifications/establishing-a-token-based-connection-to-apns) 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](https://developer.apple.com/documentation/usernotifications/establishing-a-certificate-based-connection-to-apns), da je ta certifikat vezan na eno samo aplikacijo in velja eno leto. Več aplikacij, več certifikatov.

[Applova stran o izteku veljavnosti](https://developer.apple.com/support/expiration/) 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](https://developer.apple.com/help/account/keys/create-a-private-key): Apple je v tvojem računu ne hrani. Datoteko .p12 pa [izvoziš iz keychaina na Macu](https://developer.apple.com/help/account/capabilities/communicate-with-apns-using-a-tls-certificate), 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](https://docs.expo.dev/app-signing/app-credentials/) 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](https://developer.apple.com/documentation/usernotifications/sending-notification-requests-to-apns) prvega namenja testiranju, drugega objavljenim aplikacijam. Aplikacija ve, katerega uporabiti, zaradi entitlementa `aps-environment`. [Po Applu](https://developer.apple.com/documentation/bundleresources/entitlements/aps-environment) 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](https://docs.expo.dev/versions/latest/sdk/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](https://developer.apple.com/help/account/capabilities/communicate-with-apns-using-authentication-tokens) 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](https://docs.expo.dev/push-notifications/push-notifications-setup/), 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](https://docs.expo.dev/push-notifications/sending-notifications/) približno 15 minut po pošiljanju: tam se pokažejo napake.
- **Plugin doda entitlement.** Navedi `expo-notifications` v `plugins`:

```json
{
  "expo": {
    "plugins": ["expo-notifications"]
  }
}
```

Dve pasti. [Expov FAQ](https://docs.expo.dev/push-notifications/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](https://devoria.fr/sl/blog/skrivni-api-kljuc-aplikacija-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](https://developer.apple.com/help/account/capabilities/communicate-with-apns-using-authentication-tokens), 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](https://developer.apple.com/help/account/certificates/certificates-overview). 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](https://support.apple.com/guide/deployment/dep2de55389a), 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

1. **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](https://developer.apple.com/documentation/usernotifications/handling-notification-responses-from-apns). Žeton pridobi iz same aplikacije v TestFlightu.
2. **Produkcijska aplikacija nima push poverilnic.** To je diagnoza iz Expovega FAQ. Preveri stran s poverilnicami projekta na expo.dev ali `eas credentials`.
3. **Tvoj ključ je omejen na sandbox.** Zamenjaj ga s ključem, ki velja v productionu.
4. **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](https://github.com/expo/fyi/blob/main/apns-entitlement-sdk-51.md) 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](https://docs.expo.dev/build-reference/ios-capabilities/) 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](https://devoria.fr/sl/blog/testflight-testiranje-aplikacije-iphone). Če pošiljaš tiha obvestila za prebujanje aplikacije, ponovno preberi [smernico 2.5.4 o načinih v ozadju](https://devoria.fr/sl/blog/guideline-2-5-4-nacin-delovanja-v-ozadju-zavrnitev). Celotna veriga brez Maca je v članku [objava iOS aplikacije brez Maca](https://devoria.fr/sl/blog/objava-ios-aplikacije-brez-maca-expo-eas), koraki izida pa na strani [objava aplikacije v App Store](https://devoria.fr/sl/expertise/objava-aplikacije-v-app-store).

Pred prvo oddajo naredi [brezplačno diagnozo](https://devoria.fr/sl/diagnostic): 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](https://devoria.fr/sl/kits/ios) 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.


## Tvoj projekt

[Review Kit](https://devoria.fr/sl/kits/app-review): Moj kontrolni seznam za pregled v App Store, moje popravljene zavrnitve Applea, seznam za Google Play in trije skilli za Claude Code. 49 €.

[iOS & Android Kit](https://devoria.fr/sl/kits/ios): Ustvari svojo aplikacijo za iPhone in Android s Claude Code: začetna koda mojih aplikacij, pot do trgovin in vsi kompleti. 99 €.

[Diagnoza: kaj te loči od tvoje aplikacije za iPhone](https://devoria.fr/sl/diagnostic): 7 vprašanj, 60 sekund: izveš, kaj te zares ovira pri objavi aplikacije za iPhone, dobiš pot v 4 korakih in komplet, ki ti ustreza.
