# Certificat iOS i provisioning profile amb Expo

> El certificat demostra qui signa la teva app; el provisioning profile, quina app i en quins iPhone. Amb Expo, EAS crea i renova tots dos.

Pàgina original: [Certificat iOS i provisioning profile amb Expo](https://devoria.fr/ca/blog/certificat-ios-provisioning-profile-expo)
Autor: [Mehdi Azizi](https://devoria.fr/ca/mehdi-azizi)
Publicació: 2026-11-04
Darrera revisió del contingut: 2026-11-04


Un certificat de desenvolupador iOS demostra qui ha signat la teva app. El provisioning profile, o perfil d'aprovisionament, lliga aquest certificat a una app concreta i diu on té dret a funcionar. **Amb Expo, gairebé mai no els has de fabricar a mà: EAS els crea, els desa i els renova quan llances un build.**

Entendre què fa cada fitxer continua sent útil. El dia que un build no s'instal·la o que un enviament es bloqueja, és aquest coneixement el que et fa guanyar un dia. Aquesta guia repassa els quatre elements, la seva durada, els límits d'Apple i els errors típics, amb la solució per a cadascun.

Publico les meves apps iOS amb Expo i EAS, entre elles Solys i TradaZen. El recorregut complet és a [publicar una app iOS sense Mac](https://devoria.fr/ca/blog/publicar-app-ios-sense-mac-expo-eas). Aquí obrim el capó de la signatura.

## Per què Apple exigeix una signatura

Una app iOS ha d'estar signada per instal·lar-se en un iPhone o per enviar-se a App Store Connect. La signatura garanteix que l'app ve d'un desenvolupador conegut per Apple i que ningú no l'ha modificada després.

Per a l'App Store, hi ha un detall que tranquil·litza. Segons [la nota tècnica TN3161 d'Apple](https://developer.apple.com/documentation/technotes/tn3161-inside-code-signing-certificates), l'App Store comprova que el teu certificat de distribució és vàlid en el moment de l'enviament i després torna a signar l'app, que ja no depèn de la data de caducitat del teu certificat. **Per tant, els teus certificats han de ser vàlids en el moment de l'enviament, no durant tota la vida de l'app.**

## Els quatre elements que has de conèixer

[La documentació d'Expo sobre les credencials](https://docs.expo.dev/app-signing/app-credentials/) en compta tres per a iOS: el certificat de distribució, els perfils i la clau de notificacions push. Jo hi afegeixo l'identificador d'app, sense el qual no existeix cap perfil.

### El certificat de distribució

És la teva signatura de desenvolupador. [L'ajuda d'Apple sobre els certificats](https://developer.apple.com/help/account/certificates/certificates-overview) en distingeix dues famílies:

- **Apple Development** serveix per executar la teva app als teus dispositius durant el desenvolupament. Pertany a una persona.
- **Apple Distribution** serveix per distribuir en dispositius de prova designats o per enviar a App Store Connect. Pertany a l'equip, i només el titular del compte o un administrador el poden crear.

El certificat de distribució no està lligat a cap app en concret: el mateix signa totes les teves apps. Va amb una clau privada, i és aquesta la que permet signar. Segons TN3161, un certificat d'Apple sol ser vàlid un any des de la seva creació.

### L'identificador d'app (App ID)

L'App ID identifica la teva app dins d'un perfil. Reprèn el teu bundle identifier, per exemple `com.example.myapp` (exemple fictici). Segons [l'ajuda d'Apple](https://developer.apple.com/help/account/identifiers/register-an-app-id), també porta la llista de capacitats autoritzades: notificacions push, App Groups, Sign in with Apple…

Amb Expo, és el camp `ios.bundleIdentifier` de la teva configuració. **Tria'l d'una vegada per sempre**: ha de ser idèntic a tot arreu, tant a la configuració com a App Store Connect. L'App ID no caduca. I segons [la documentació d'Expo sobre les capacitats d'iOS](https://docs.expo.dev/build-reference/ios-capabilities/), EAS sincronitza les seves capacitats amb la teva configuració a cada build.

### El perfil d'aprovisionament

El perfil fa de pont. Conté un App ID, un certificat i, segons el tipus, una llista de dispositius autoritzats. T'afecten tres tipus:

- **Development**: la teva app de prova als teus dispositius registrats.
- **Ad hoc**: un build instal·lable en una llista concreta de dispositius, cadascun identificat pel seu UDID. És la «distribució interna» d'EAS.
- **App Store**: per a App Store Connect i TestFlight. No conté cap llista de dispositius, explica [la nota TN3125](https://developer.apple.com/documentation/technotes/tn3125-inside-code-signing-provisioning-profiles).

Cada perfil té una data de caducitat: no més d'un any en general segons Apple, 12 mesos segons Expo.

### La clau de notificacions push (APNs)

La clau APNs autoritza el teu servidor, o el d'Expo, a enviar notificacions a la teva app. És un fitxer .p8 que només es pot descarregar una vegada: [Apple no el conserva](https://developer.apple.com/help/account/keys/create-a-private-key) al teu compte. Una mateixa clau serveix per a totes les teves apps, i [no caduca mai](https://developer.apple.com/support/expiration/).

## La taula resum

| Element                   | Serveix per a              | Durada            | Qui el gestiona amb Expo      |
| ------------------------- | -------------------------- | ----------------- | ----------------------------- |
| Certificat de distribució | Signar els teus builds     | Un any en general | EAS, després d'iniciar sessió |
| App ID                    | Identificar la teva app    | No caduca         | Tu, i després EAS             |
| Perfil App Store          | Enviar a Apple             | Fins a 12 mesos   | EAS                           |
| Perfil ad hoc             | Instal·lar als teus iPhone | Fins a 12 mesos   | EAS i els teus dispositius    |
| Clau push APNs            | Enviar notificacions       | No caduca         | EAS o tu                      |
| Perfil de compte gratuït  | Provar amb Xcode           | 7 dies            | Xcode, no EAS                 |

«Tu, i després EAS»: tu tries el bundle identifier, EAS s'ocupa de les capacitats. «EAS i els teus dispositius»: tu registres cada iPhone de prova, EAS fabrica el perfil. L'última fila es refereix al compte d'Apple gratuït: segons [l'ajuda d'Apple sobre els comptes](https://developer.apple.com/help/account/basics/about-your-developer-account), els seus perfils caduquen 7 dies després de crear-se.

## Els límits d'Apple que has de conèixer

- **Certificats de distribució**: molt pocs per compte. L'ajuda d'Apple parla d'un sol per tipus de distribució i per equip; la taula d'Expo, d'un límit de 2. Queda't amb la regla: **no creïs un certificat nou a cada build ni a cada ordinador.**
- **Claus APNs**: 2 per compte com a màxim, segons Expo.
- **Perfils**: sense límit, segons Expo.
- **Dispositius**: fins a 100 per família de productes i per any de subscripció, segons [l'ajuda d'Apple sobre els dispositius](https://developer.apple.com/help/account/devices/devices-overview). Desactivar un dispositiu no allibera plaça. El comptador torna a 100 a l'inici de l'any de subscripció següent, si retires els dispositius.

## Què fa EAS per tu

Segons [la pàgina d'Expo sobre les credencials gestionades](https://docs.expo.dev/app-signing/managed-credentials/), el teu primer build iOS et proposa generar el que falta. Inicies sessió al teu compte Apple Developer, EAS crea el certificat de distribució, el perfil i la clau push, i els desa als seus servidors. Els builds següents els reutilitzen.

Tres punts útils:

- **La teva contrasenya d'Apple es queda a la teva màquina.** [La pàgina de seguretat d'Expo](https://docs.expo.dev/app-signing/security/) precisa que no s'envia als seus servidors i que les credencials desades estan xifrades.
- **`eas credentials` t'ho mostra tot**: certificat, perfils, clau push. L'ordre també permet substituir-los o eliminar-los.
- **Eliminar a EAS no elimina a Apple.** Per alliberar una plaça, cal revocar al portal d'Apple.

També pots mantenir el control amb credencials locals: un fitxer `credentials.json` apunta al teu certificat (.p12) i al teu perfil (.mobileprovision). Expo demana afegir aquests fitxers al `.gitignore`. És la mateixa regla que per a [les claus API d'una app Expo](https://devoria.fr/ca/blog/clau-api-secreta-app-expo): un secret no va mai al repositori.

## Els errors típics i com resoldre'ls

### Perfil caducat

Un build ad hoc porta el seu perfil a dins: quan caduca, l'app ja no s'obre als teus iPhone de prova. A l'App Store, en canvi, Expo confirma que la caducitat no té cap efecte sobre l'app en producció. **La solució: torna a llançar un build.** EAS genera un perfil nou, o ho fas tu mateix amb `eas credentials`. Després reinstal·la el nou build als teus dispositius.

No ho confonguis amb TestFlight: un build de TestFlight caduca al cap de 90 dies, sigui quin sigui el teu certificat. El detall és a [TestFlight per provar la teva app d'iPhone](https://devoria.fr/ca/blog/testflight-provar-app-iphone-abans-enviar).

### Certificat caducat o revocat

Apple és clara: si la teva subscripció és vàlida, les apps que ja tens a l'App Store no es veuen afectades. En canvi, ja no pots enviar cap build signat amb aquest certificat. Un build enviat però encara no sotmès pot quedar marcat com a Invalid Binary si el seu certificat ha estat revocat. I [els perfils que contenen un certificat revocat deixen de ser vàlids](https://developer.apple.com/help/account/certificates/revoke-a-certificate).

**La solució: crea un certificat nou des de `eas credentials` o al proper build**, i deixa que EAS refaci els perfils. I no revoquis mai per reflex un certificat que funciona.

### Dispositiu absent del perfil ad hoc

L'enllaç d'instal·lació funciona per a tu, però no a l'iPhone d'un provador. Causa: [la documentació d'Expo sobre la distribució interna](https://docs.expo.dev/build/internal-distribution/) explica que només els dispositius presents al perfil en el moment del build poden instal·lar l'app.

La solució:

1. Registra el dispositiu amb `eas device:create`.
2. Torna a llançar un build en mode interactiu, connectat al teu compte d'Apple, perquè EAS actualitzi el perfil. O torna a signar el build existent amb `eas build:resign`, sense recompilar-ho tot.
3. En integració contínua, el mode no interactiu reutilitza el perfil sense actualitzar-ne la llista. Afegeix l'opció `--refresh-ad-hoc-provisioning-profile`.

En un compte nou o acabat de renovar, Apple pot trigar de 24 a 72 hores a processar un dispositiu nou. Per tant, el primer build que l'inclou pot fallar: espera i torna-ho a provar.

### Límit de certificats assolit

Apple es nega a crear un certificat de distribució nou. Sovint hi ha certificats antics pel mig: creats des de Xcode en un altre Mac o per un altre servei de build. **Reutilitza el certificat existent si en tens el fitxer .p12. Si no, revoca el que ja no serveix** al portal d'Apple. Una revocació no afecta les apps que ja tens publicades, però invalida els perfils que el contenien.

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

Aquest missatge de Xcode vol dir que el perfil no conté el certificat la clau privada del qual és a la teva màquina. Causa típica: barrejar la signatura automàtica de Xcode i les credencials d'EAS. **Tria una sola font de veritat**: builds d'EAS amb credencials gestionades, o credencials locals, però no totes dues.

### Notificacions tallades després de revocar una clau

Si revoques la teva clau APNs, Expo avisa que totes les apps que la fan servir deixen de rebre notificacions. Crea una clau nova i envia-la amb `eas credentials`. Els tokens d'Expo Push dels teus usuaris no canvien.

### Capacitat afegida, perfil invàlid

Activar un servei com les notificacions push o App Groups [invalida el perfil](https://developer.apple.com/help/account/provisioning-profiles/edit-download-or-delete-profiles): cal regenerar-lo. Amb EAS, la sincronització de capacitats es fa a cada build. Si el perfil continua sent rebutjat, `eas credentials` permet generar-ne un de nou.

## Què ve després de la signatura

Un build signat només és una etapa. La fitxa, les captures, la privacitat i l'enviament a revisió són a [publicar una aplicació a l'App Store](https://devoria.fr/ca/expertise/publicar-una-aplicacio-app-store). Si encara no tens la subscripció, comença pel [compte de desenvolupador d'Apple](https://devoria.fr/ca/blog/compte-desenvolupador-apple-preu). I per entendre per què recomano Expo als principiants, llegeix [React Native i Expo per a una app mòbil](https://devoria.fr/ca/expertise/aplicacio-mobil-react-native-expo).

## Si prepares la teva primera publicació

Abans del primer enviament, fes el [diagnòstic gratuït](https://devoria.fr/ca/diagnostic): et diu què bloqueja de veritat el teu projecte i t'envia la meva checklist antirebuig d'Apple.

Per construir l'app, connectar les subscripcions i publicar-la sense barallar-te amb la signatura, l'[iOS & Android Kit](https://devoria.fr/ca/kits/ios) segueix el recorregut en quatre etapes amb el codi de partida de les meves apps, al teu ritme.

## Preguntes freqüents

### Què és un provisioning profile?

És el fitxer que autoritza la teva app a funcionar o a enviar-se a Apple. Lliga un identificador d'app, un certificat i, segons el tipus, una llista de dispositius. Un perfil App Store no conté cap dispositiu; un perfil ad hoc n'enumera uns quants.

### El certificat de desenvolupador iOS és gratuït?

No té un preu a part: el certificat de distribució està inclòs a l'Apple Developer Program, a 99 $ l'any. Amb un compte d'Apple gratuït, Xcode et deixa provar en 3 dispositius com a màxim, però els perfils caduquen al cap de 7 dies i no pots publicar.

### Quant dura un certificat de distribució d'Apple?

En general un any des de la seva creació, segons Apple. Els perfils d'aprovisionament també duren 12 mesos com a màxim. La clau de notificacions push, en canvi, no caduca mai.

### Què passa si el meu certificat de distribució caduca?

Res per a les apps que ja tens a l'App Store, mentre la teva subscripció sigui vàlida. Simplement ja no pots enviar cap build nou signat amb aquest certificat. Amb EAS, es crea un certificat nou al proper build o amb `eas credentials`.

### Cal un Mac per crear un certificat iOS?

No, si fas servir EAS. Inicies sessió al teu compte d'Apple des de la línia d'ordres, i EAS genera el certificat i el perfil, tant a Windows com a Linux. Sense EAS, el mètode clàssic passa per Xcode o per l'Accés a Clauers d'un Mac.

### Quants dispositius pot contenir un perfil ad hoc?

El teu compte pot registrar fins a 100 iPhone per any de subscripció, i el mateix per a cada altra família de dispositius. Un dispositiu desactivat continua comptant. Per provar amb més gent, fes servir TestFlight.


## El teu projecte

[Review Kit](https://devoria.fr/ca/kits/app-review): La meva checklist de revisió de l'App Store, els rebutjos d'Apple que he corregit, la de Google Play i tres skills de Claude Code. 49 €.

[iOS & Android Kit](https://devoria.fr/ca/kits/ios): Crea la teva app d'iPhone i Android amb Claude Code: el codi de partida de les meves apps, el camí fins a les botigues i tots els kits. 99 €.

[Diagnòstic: què et separa de la teva app d'iPhone](https://devoria.fr/ca/diagnostic): 7 preguntes, 60 segons: sabràs què et bloqueja de debò per publicar la teva app d'iPhone, el teu recorregut en 4 etapes i el kit que et toca.
