# Certifikat razvijalca iOS: provisioning profile in Expo

> Certifikat dokazuje, kdo podpiše tvojo aplikacijo, profil pa, katero aplikacijo in na katerih iPhonih. Z Expom EAS oboje ustvari in obnovi namesto tebe.

Izvirna stran: [Certifikat razvijalca iOS: provisioning profile in Expo](https://devoria.fr/sl/blog/certifikat-razvijalca-ios-provisioning-profile-expo)
Avtor: [Mehdi Azizi](https://devoria.fr/sl/mehdi-azizi)
Objava: 2026-11-04
Zadnja revizija vsebine: 2026-11-04


Certifikat razvijalca iOS dokazuje, kdo je podpisal tvojo aplikacijo. Provisioning profile oziroma profil za zagotavljanje ta certifikat poveže z točno določeno aplikacijo in pove, kje sme teči. **Z Expom ju skoraj nikoli ne izdelaš ročno: EAS ju ustvari, shrani in obnovi, ko zaženeš build.**

Vseeno je koristno razumeti, kaj počne vsaka datoteka. Ko se build noče namestiti ali se pošiljanje zatakne, ti prav to znanje prihrani cel dan. Ta vodnik pregleda vse štiri elemente, njihovo življenjsko dobo, Applove omejitve in tipične napake, z rešitvijo za vsako.

Svoje aplikacije iOS objavljam z Expom in EAS, med njimi Solys in TradaZen. Celotna pot je opisana v [objava aplikacije iOS brez Maca](https://devoria.fr/sl/blog/objava-ios-aplikacije-brez-maca-expo-eas). Tukaj pa odpremo pokrov podpisovanja.

## Zakaj Apple zahteva podpis

Aplikacija iOS mora biti podpisana, da se lahko namesti na iPhone ali odide v App Store Connect. Podpis zagotavlja, da aplikacija prihaja od razvijalca, ki ga Apple pozna, in da je od takrat nihče ni spremenil.

Za App Store je ena podrobnost pomirjujoča. Po [Applovi tehnični opombi TN3161](https://developer.apple.com/documentation/technotes/tn3161-inside-code-signing-certificates) App Store ob pošiljanju preveri, ali je tvoj distribucijski certifikat veljaven, nato aplikacijo ponovno podpiše in ta potem ni več odvisna od datuma poteka tvojega certifikata. **Tvoji certifikati morajo torej veljati ob pošiljanju, ne pa ves čas življenja aplikacije.**

## Štirje elementi, ki jih moraš poznati

[Expova dokumentacija o poverilnicah](https://docs.expo.dev/app-signing/app-credentials/) jih za iOS našteje tri: distribucijski certifikat, profile in ključ za potisna obvestila. Dodajam še identifikator aplikacije, brez katerega ne obstaja noben profil.

### Distribucijski certifikat

To je tvoj podpis razvijalca. [Applova pomoč o certifikatih](https://developer.apple.com/help/account/certificates/certificates-overview) loči dve družini:

- **Apple Development** služi za zaganjanje aplikacije na tvojih napravah med razvojem. Pripada eni osebi.
- **Apple Distribution** služi za distribucijo na določene testne naprave ali za pošiljanje v App Store Connect. Pripada ekipi, ustvarita pa ga lahko samo imetnik računa ali admin.

Distribucijski certifikat ni vezan na nobeno posamezno aplikacijo: isti podpisuje vse tvoje aplikacije. Spada zraven zasebni ključ in prav ta omogoča podpisovanje. Po TN3161 Applov certifikat običajno velja eno leto od nastanka.

### Identifikator aplikacije (App ID)

App ID v profilu identificira tvojo aplikacijo. Povzame tvoj bundle identifier, na primer `com.example.myapp` (izmišljen primer). Po [Applovi pomoči](https://developer.apple.com/help/account/identifiers/register-an-app-id) nosi tudi seznam dovoljenih zmožnosti: potisna obvestila, App Groups, Sign in with Apple …

Pri Expu je to polje `ios.bundleIdentifier` v tvoji konfiguraciji. **Izberi ga enkrat za vselej**: povsod mora biti enak, v konfiguraciji in v App Store Connect. App ID ne poteče. In po [Expovi dokumentaciji o zmožnostih iOS](https://docs.expo.dev/build-reference/ios-capabilities/) EAS ob vsakem buildu uskladi njegove zmožnosti s tvojo konfiguracijo.

### Profil za zagotavljanje

Profil ustvari povezavo. Vsebuje App ID, certifikat in, odvisno od vrste, seznam dovoljenih naprav. Zadevajo te tri vrste:

- **Razvojni**: tvoja testna aplikacija na tvojih registriranih napravah.
- **Ad hoc**: build, ki ga lahko namestiš na točno določen seznam naprav, vsaka je identificirana s svojim UDID. To je »interna distribucija« pri EAS.
- **App Store**: za App Store Connect in TestFlight. Ne vsebuje nobenega seznama naprav, pojasnjuje [opomba TN3125](https://developer.apple.com/documentation/technotes/tn3125-inside-code-signing-provisioning-profiles).

Vsak profil ima datum poteka: po Applu običajno največ eno leto, po Expu 12 mesecev.

### Ključ za potisna obvestila (APNs)

Ključ APNs tvojemu strežniku ali Expovemu dovoli pošiljanje obvestil tvoji aplikaciji. To je datoteka .p8, ki jo lahko preneseš samo enkrat: [Apple je ne hrani](https://developer.apple.com/help/account/keys/create-a-private-key) v tvojem računu. En ključ služi vsem tvojim aplikacijam in [nikoli ne poteče](https://developer.apple.com/support/expiration/).

## Povzetek v tabeli

| Element                    | Služi za                   | Trajanje          | Kdo ga upravlja z Expom |
| -------------------------- | -------------------------- | ----------------- | ----------------------- |
| Distribucijski certifikat  | Podpisovanje buildov       | Običajno eno leto | EAS, po prijavi         |
| App ID                     | Identifikacijo aplikacije  | Ne poteče         | Ti, nato EAS            |
| Profil App Store           | Pošiljanje Applu           | Do 12 mesecev     | EAS                     |
| Profil ad hoc              | Namestitev na tvoje iPhone | Do 12 mesecev     | EAS in tvoje naprave    |
| Ključ push APNs            | Pošiljanje obvestil        | Ne poteče         | EAS ali ti              |
| Profil brezplačnega računa | Testiranje prek Xcode      | 7 dni             | Xcode, ne EAS           |

»Ti, nato EAS«: ti izbereš bundle identifier, EAS poskrbi za zmožnosti. »EAS in tvoje naprave«: ti registriraš vsak testni iPhone, EAS izdela profil. Zadnja vrstica zadeva brezplačni Applov račun: po [Applovi pomoči o računih](https://developer.apple.com/help/account/basics/about-your-developer-account) njegovi profili potečejo 7 dni po nastanku.

## Applove omejitve, ki jih moraš poznati

- **Distribucijski certifikati**: zelo malo na račun. Applova pomoč govori o enem na vrsto distribucije in na ekipo, Expova tabela o omejitvi 2. Zapomni si pravilo: **ne ustvarjaj novega certifikata ob vsakem buildu ali na vsakem računalniku.**
- **Ključi APNs**: največ 2 na račun, po Expu.
- **Profili**: brez omejitve, po Expu.
- **Naprave**: do 100 na družino izdelkov in na leto članstva, po [Applovi pomoči o napravah](https://developer.apple.com/help/account/devices/devices-overview). Deaktivacija naprave ne sprosti mesta. Števec se vrne na 100 na začetku naslednjega leta članstva, če naprave odstraniš.

## Kaj EAS naredi zate

Po [Expovi strani o upravljanih poverilnicah](https://docs.expo.dev/app-signing/managed-credentials/) ti prvi build iOS ponudi, da ustvariš, kar manjka. Prijaviš se v svoj račun Apple Developer, EAS ustvari distribucijski certifikat, profil in ključ push ter jih shrani na svojih strežnikih. Naslednji buildi jih ponovno uporabijo.

Tri koristne točke:

- **Tvoje Applovo geslo ostane na tvojem računalniku.** [Expova stran o varnosti](https://docs.expo.dev/app-signing/security/) navaja, da se ne pošlje na njihove strežnike in da so shranjene poverilnice šifrirane.
- **`eas credentials` ti pokaže vse**: certifikat, profile, ključ push. Ukaz omogoča tudi njihovo zamenjavo ali odstranitev.
- **Brisanje v EAS ne briše pri Applu.** Če želiš sprostiti mesto, moraš preklicati v Applovem portalu.

Lahko pa obdržiš nadzor z lokalnimi poverilnicami: datoteka `credentials.json` kaže na tvoj certifikat (.p12) in profil (.mobileprovision). Expo zahteva, da te datoteke dodaš v `.gitignore`. Pravilo je isto kot pri [ključih API v aplikaciji Expo](https://devoria.fr/sl/blog/skrivni-api-kljuc-aplikacija-expo): skrivnost nikoli ne gre v repozitorij.

## Tipične napake in kako jih rešiš

### Potekel profil

Build ad hoc nosi svoj profil s sabo: ko ta poteče, se aplikacija na tvojih testnih iPhonih ne odpre več. V App Storu pa Expo potrjuje, da potek nima nobenega vpliva na aplikacijo v produkciji. **Rešitev: ponovno zaženi build.** EAS ustvari nov profil, ali pa to narediš sam z `eas credentials`. Nato novi build ponovno namesti na svoje naprave.

Ne zamenjuj tega s TestFlightom: build v TestFlightu poteče po 90 dneh, ne glede na tvoj certifikat. Podrobnosti so v [TestFlight za testiranje aplikacije za iPhone](https://devoria.fr/sl/blog/testflight-testiranje-aplikacije-iphone).

### Potekel ali preklican certifikat

Apple je jasen: če je tvoje članstvo veljavno, aplikacije, ki so že v App Storu, niso prizadete. Ne moreš pa več pošiljati buildov, podpisanih s tem certifikatom. Build, ki je poslan, a še ni oddan v pregled, je lahko označen kot Invalid Binary, če je bil njegov certifikat preklican. In [profili, ki vsebujejo preklican certifikat, postanejo neveljavni](https://developer.apple.com/help/account/certificates/revoke-a-certificate).

**Rešitev: ustvari nov certifikat prek `eas credentials` ali ob naslednjem buildu**, nato pusti EAS, da na novo izdela profile. In nikoli refleksno ne prekliči certifikata, ki deluje.

### Naprave ni v profilu ad hoc

Povezava za namestitev deluje pri tebi, na iPhonu testerja pa ne. Vzrok: [Expova dokumentacija o interni distribuciji](https://docs.expo.dev/build/internal-distribution/) pojasnjuje, da lahko aplikacijo namestijo samo naprave, ki so bile v profilu v trenutku builda.

Rešitev:

1. Registriraj napravo z `eas device:create`.
2. Ponovno zaženi build v interaktivnem načinu, prijavljen v Applov račun, da EAS posodobi profil. Ali pa obstoječi build ponovno podpiši z `eas build:resign`, brez ponovnega prevajanja.
3. V neprekinjeni integraciji neinteraktivni način ponovno uporabi profil, ne da bi posodobil njegov seznam. Dodaj možnost `--refresh-ad-hoc-provisioning-profile`.

Na novem ali pravkar podaljšanem računu lahko Apple za obdelavo nove naprave potrebuje 24 do 72 ur. Prvi build, ki jo vključuje, lahko zato spodleti: počakaj in poskusi znova.

### Dosežena omejitev certifikatov

Apple noče ustvariti novega distribucijskega certifikata. Pogosto se naokrog valjajo stari certifikati: ustvarjeni v Xcode na drugem Macu ali v drugi storitvi za buildanje. **Ponovno uporabi obstoječi certifikat, če imaš njegovo datoteko .p12. Sicer v Applovem portalu prekliči tistega, ki ga ne rabiš več.** Preklic ne vpliva na tvoje že objavljene aplikacije, razveljavi pa profile, ki so ga vsebovali.

### »Provisioning profile doesn't include signing certificate«

To sporočilo Xcode pomeni, da profil ne vsebuje certifikata, čigar zasebni ključ je na tvojem računalniku. Tipičen vzrok: mešanje samodejnega podpisovanja v Xcode in poverilnic EAS. **Izberi en sam vir resnice**: buildi EAS z upravljanimi poverilnicami ali lokalne poverilnice, ne pa oboje.

### Obvestila ne delujejo po preklicu ključa

Če prekličeš ključ APNs, Expo opozarja, da vse aplikacije, ki ga uporabljajo, ne prejemajo več obvestil. Ustvari nov ključ in ga pošlji z `eas credentials`. Žetoni Expo Push tvojih uporabnikov se ne spremenijo.

### Dodana zmožnost, neveljaven profil

Vklop storitve, kot so potisna obvestila ali App Groups, [razveljavi profil](https://developer.apple.com/help/account/provisioning-profiles/edit-download-or-delete-profiles): treba ga je ustvariti na novo. Z EAS se zmožnosti uskladijo ob vsakem buildu. Če je profil še vedno zavrnjen, lahko z `eas credentials` ustvariš novega.

## Kaj sledi po podpisu

Podpisan build je samo en korak. Stran v trgovini, posnetki zaslona, zasebnost in oddaja v pregled so zbrani v [objava aplikacije v App Store](https://devoria.fr/sl/expertise/objava-aplikacije-v-app-store). Če še nimaš članstva, začni z [Applovim razvijalskim računom](https://devoria.fr/sl/blog/apple-developer-racun-cena). In če želiš razumeti, zakaj začetnikom priporočam Expo, preberi [React Native in Expo za mobilno aplikacijo](https://devoria.fr/sl/expertise/mobilna-aplikacija-react-native-expo).

## Če pripravljaš svojo prvo objavo

Pred prvim pošiljanjem naredi [brezplačno diagnozo](https://devoria.fr/sl/diagnostic): pove ti, kaj v tvojem projektu res blokira, in ti pošlje moj kontrolni seznam proti Applovim zavrnitvam.

Da zgradiš aplikacijo, priklopiš naročnine in jo objaviš, ne da bi se boril s podpisovanjem, te [iOS & Android Kit](https://devoria.fr/sl/kits/ios) vodi skozi pot v štirih korakih z začetno kodo mojih aplikacij, v tvojem tempu.

## Pogosta vprašanja

### Kaj je provisioning profile?

To je datoteka, ki tvoji aplikaciji dovoli, da teče ali odide k Applu. Poveže identifikator aplikacije, certifikat in, odvisno od vrste, seznam naprav. Profil App Store ne vsebuje nobene naprave, profil ad hoc jih našteje nekaj.

### Je certifikat razvijalca iOS brezplačen?

Posebne cene nima: distribucijski certifikat je vključen v Apple Developer Program, ki stane 99 $ na leto. Z brezplačnim Applovim računom ti Xcode dovoli testiranje na največ 3 napravah, vendar profili potečejo po 7 dneh, objava pa ni mogoča.

### Koliko časa velja Applov distribucijski certifikat?

Po Applu običajno eno leto od nastanka. Tudi profili za zagotavljanje veljajo največ 12 mesecev. Ključ za potisna obvestila pa nikoli ne poteče.

### Kaj se zgodi, če moj distribucijski certifikat poteče?

Za tvoje aplikacije, ki so že v App Storu, nič, dokler je tvoje članstvo veljavno. Preprosto ne moreš več pošiljati novih buildov, podpisanih s tem certifikatom. Z EAS se nov certifikat ustvari ob naslednjem buildu ali z `eas credentials`.

### Ali za ustvarjanje certifikata iOS potrebujem Mac?

Ne, če uporabljaš EAS. V svoj Applov račun se prijaviš iz ukazne vrstice, EAS pa ustvari certifikat in profil, tako na Windowsih kot na Linuxu. Brez EAS gre klasična pot prek Xcode ali aplikacije Keychain Access na Macu.

### Koliko naprav lahko vsebuje profil ad hoc?

Tvoj račun lahko registrira do 100 iPhonov na leto članstva in prav toliko za vsako drugo družino naprav. Deaktivirana naprava se še vedno šteje. Če želiš testirati z več ljudmi, uporabi TestFlight.


## 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.
