En Provisioning Profile kopplar samman utvecklarens certifikat, appens identifierare och listan över tillåtna enheter för signering av iOS-appars kod. Enligt uppgifter från Apple Developer Documentation, 2026 krävs profilen för varje start av en app på en fysisk enhet — utan den kan Xcode inte installera bygget på en iPhone eller iPad. I artikeln går vi igenom strukturen, typerna och processen för att skapa profiler.
Viktigast
Provisioning Profile är en digital konfigurationsfil i formatet .mobileprovision (för iOS) eller .provisionprofile (för macOS) som Apple använder för att kontrollera installation och start av appar på enheter. Profilen innehåller metadata för kodsignering, utan vilka appen inte kan startas på en fysisk iPhone, iPad eller Apple Watch — simulatorn kräver ingen profil eftersom koden inte signeras för att köras på en riktig processor.
Profilen utfärdas via Apple Developer Portal och har en giltighetstid — vanligtvis ett år för Development- och Distribution-profiler. Enligt Apples policy kopplas profilen automatiskt till det Apple Developer Program-certifikat som den signerades med: om certifikatet återkallas eller löper ut slutar profilen att fungera.
Varje profil innehåller ett unikt UUID som Xcode använder för att identifiera profilen i nyckelringen. Xcode väljer automatiskt lämplig profil vid bygget, men utvecklaren kan ändra valet i inställningarna Signing & Capabilities. På en enhet kan ett obegränsat antal profiler installeras — Apples enhetshanteringssystem (MDM) använder detta för företagsdistribution av appar.
Kodsignering är den främsta anledningen till att profiler finns. Apple kräver att varje app som startas på en enhet med iOS signeras med ett certifikat som utfärdats av Apple. En Provisioning Profile fungerar som en länk: den bekräftar att utvecklaren har rätt att starta appen på den aktuella enheten. Enligt Apple Security Guide (2025) förhindrar profilmekanismen installation av skadlig programvara på användarnas enheter även om utvecklarens certifikat skulle äventyras.
Profilen avgör också vilka systemtjänster som är tillgängliga för appen. Om appen använder Push-aviseringar kräver Apple Push Notification service (APNs) korrekta entitlements i profilen. Utan detta levereras inte serveraviseringarna till enheten. En liknande regel gäller för iCloud, App Groups, Wallet, HealthKit och andra Apples ramverk.
Utvecklare blandar ofta ihop Provisioning Profile och Apple Certificate. Ett certifikat är ett digitalt dokument som bekräftar identiteten (vem som signerar), medan en profil är en konfiguration (vilken app, på vilka enheter, med vilka rättigheter). Ett certifikat kan användas i flera profiler och en profil är kopplad till exakt ett certifikat. Apple rekommenderar att skapa en separat profil för varje app och varje scenario — Development, Ad Hoc, App Store.
Processen för att signera en app består av flera steg som utförs i följd. Xcode tar appens binärfil (App Bundle), signerar den med utvecklarens privata nyckel, bäddar in Provisioning Profile i den och skickar den till enheten. Enheten verifierar signaturen med Apples publika nyckel, jämför profilens UUID med listan över betrodda profiler i systemet och startar appen endast om alla kontroller lyckas.
När användaren laddar ner appen från App Store är mekanismen annorlunda. App Store Connect signerar appen på nytt med Apples eget Distribution-certifikat och ersätter utvecklarens profil med en Store-profil. Detta innebär att en app som publicerats via App Store tekniskt sett är signerad av Apple, inte av utvecklaren — även om utvecklarens ursprungliga signatur verifieras vid uppladdningen av bygget till App Store Connect.
För Ad Hoc-distribution registrerar profilen specifika UDID för enheter som tillåts starta. Ett kostnadsfritt Apple Developer Program-konto begränsar till 100 enheter per år för testning. Enterprise-profiler (för intern distribution inom en organisation) har ingen begränsning av antalet enheter, men kräver ett aktivt Apple Developer Enterprise Program-abonnemang som kostar 299 dollar per år.
Giltighetstiden för en Provisioning Profile är ett år från skapandetillfället. 30 dagar före utgång börjar Apple skicka push-aviseringar till utvecklaren via Xcode och Developer Portal. Om profilen löper ut fortsätter appen på enheten att fungera (om den redan är installerad), men ett nytt bygge med denna profil kan inte installeras. Xcode ger vid försök att bygga med en utgången profil ett kodsigneringsfel med koden -402620394. Apple rekommenderar att ställa in automatisk förnyelse av profiler via Xcode Accounts Preferences — då uppdaterar Xcode profilen 24 timmar före utgången.
Apple erbjuder fyra huvudtyper av Provisioning Profile, som var och en är avsedd för en specifik fas i appens livscykel. Development-profilen gör det möjligt att starta appen på fysiska enheter som lagts till i Apple Developer Portal och används i utvecklings- och QA-testfasen. För att skapa en Development-profil räcker ett kostnadsfritt Apple-utvecklarkonto.
Ad Hoc-profilen är avsedd för att distribuera appen till en begränsad grupp testare utan att använda App Store. Profilen registrerar upp till 100 enheter enligt UDID och appen kan installeras direkt via iTunes, Apple Configurator eller MDM-lösningar. Ad Hoc-bygge har en giltighetstid på 12 månader och kräver inte att passera Apples granskning.
App Store-profilen används enbart för att publicera appen i App Store och innehåller ingen lista över enheter — Apple hanterar distributionen själv efter att bygget godkänts. När arkivet laddas upp till App Store Connect använder Xcode automatiskt App Store-profilen om den är installerad i systemet. Enterprise-profilen är avsedd för organisationer med Apple Developer Enterprise Program och gör det möjligt att distribuera appar inom företaget utan begränsning av antalet enheter och utan Apples granskning.
| Profiltyp | Syfte | Enheter | Abonnemangskostnad |
|---|---|---|---|
| Development | Utveckling och testning | Upp till 100 UDID | Kostnadsfritt / 99 dollar per år |
| Ad Hoc | Distribution till testare | Upp till 100 UDID | 99 dollar per år |
| App Store | Publicering i App Store | Valfritt (via Apple) | 99 dollar per år |
| Enterprise | Intern distribution | Obegränsat | 299 dollar per år |
En Provisioning Profile är en fil i DER-format signerad av Apple vars innehåll kan visas via kommandoraden. Security-ramverket i macOS gör det möjligt att avkoda .mobileprovision till en läsbar XML-plist. Inuti profilen finns: profilens UUID, App ID (teamprefix + Bundle Identifier), listan över certifikat, listan över tillåtna enheter (endast för Development och Ad Hoc), entitlements och giltighetstiden.
App ID — appens unika identifierare som består av Team ID (10 tecken som tilldelas av Apple) och Bundle Identifier (till exempel com.example.myapp). App ID kan vara explicit (exakt överensstämmelse med Bundle Identifier) eller wildcard (mallen *.example.com för flera appar). Apple rekommenderar inte wildcard för appar som använder Push-aviseringar eller iCloud — dessa tjänster kräver ett explicit App ID.
Entitlements — ett XML-block i profilen som avgör appens åtkomsträttigheter till systemresurser. Typiska entitlements inkluderar: aps-environment (Push-aviseringar), com.apple.developer.icloud-services (iCloud), com.apple.security.application-groups (App Groups för Widget och Share Extension). Apple lägger automatiskt till entitlements i profilen baserat på aktiverade Capabilities i Xcode. Varje avvikelse mellan entitlements i profilen och de som krävs i koden leder till ett signeringsfel.
Det går att skapa en profil på två sätt: via webbgränssnittet i Apple Developer Portal eller automatiskt via Xcode. För ett typiskt projekt hanterar Xcode profiler automatiskt när alternativet Automatically manage signing är aktiverat. Xcode skapar certifikat, profil och App ID på några sekunder och synkroniserar med Apple Developer Portal. För CI/CD-pipelines krävs dock manuell hantering.
För att skapa en profil manuellt i Apple Developer Portal behöver du: gå till avsnittet Certificates, Identifiers & Profiles, välja Profiles och klicka på "+". Välj sedan profiltyp (Development, Ad Hoc, App Store eller Enterprise), välj App ID från listan över registrerade, välj utvecklarcertifikatet och (för Development och Ad Hoc) välj enheter. Efter att profilen skapats laddas den ner i formatet .mobileprovision och installeras med ett dubbelklick i Xcode.
CI/CD-servrar kräver ett särskilt tillvägagångssätt: profilen och certifikatet måste lagras i en säker databas (till exempel i GitHub Actions hemligheter). Vid bygget laddas profilen till agenten, placeras i mappen ~/Library/MobileDevice/Provisioning Profiles och certifikatet importeras till nyckelringen. Fastlane — ett populärt verktyg för att automatisera signering — erbjuder kommandot match som synkroniserar profiler och certifikat mellan utvecklare via en krypterad git-databas.
För att diagnostisera problem med kodsignering kan du avkoda .mobileprovision och kontrollera dess innehåll. Kommandot nedan extraherar XML-plisten från profilen och sparar den i ett läsbart format:
# Avkoda .mobileprovision till XML
security cms -D -i "path/to/embedded.mobileprovision" \
-o "profile.plist"
# Kontrollera profilens giltighetstid
plist -convert xml1 profile.plist -o -
grep -A 1 "ExpirationDate" profile.plist
Verktyget Security från macOS Command Line Tools avkodar profilens CMS-signerade fil. Flaggan -D betyder avkodning, -i — indatafilen. Efter avkodning konverterar verktyget plist den binära plisten till XML och grep extraherar utgångsdatumet. Denna metod är användbar i CI/CD för att kontrollera att profilen inte har gått ut innan ett releasebygge görs.
Det vanligaste felet är "No matching provisioning profiles found" vid bygge i Xcode. Det uppstår när Xcode inte kan hitta en profil som matchar byggkonfigurationen: Bundle Identifier matchar inte App ID i profilen, certifikatet är inte installerat i nyckelringen eller profilen har gått ut. Lösning — kontrollera inställningarna Signing & Capabilities i target och växla vid behov till Automatically manage signing.
Felet "Provisioning profile doesn't include the selected device" visas när man försöker starta ett Development- eller Ad Hoc-bygge på en enhet vars UDID inte har lagts till i profilen. Apple Developer Portal gör det möjligt att lägga till enheten i en befintlig profil — därefter måste profilen laddas ner och installeras på nytt. Xcode lägger vid automatisk signering automatiskt till den anslutna enheten i profilen.
Problem med entitlements yttrar sig som felet "The executable was signed with invalid entitlements" vid uppladdning till App Store Connect. Orsaken är en avvikelse mellan entitlements i profilen och projektets .entitlements-fil. Apple kräver att rättighetsuppsättningen i profilen är en övermängd av de rättigheter appen begär. Lösning — kontrollera Capabilities i Xcodes target och se till att alla aktiverade tjänster har motsvarande entitlements i profilen. Fastlane innehåller kommandot produce som synkroniserar App ID och profiler med aktuella entitlements.
Vanliga frågor
Ja, om App ID i profilen använder en wildcard-identifierare av formen com.example.*. Wildcard-profiler stöder dock inte Push-aviseringar, iCloud, Game Center och App Groups. Apple rekommenderar att skapa en separat explicit profil för varje app som använder avancerade Capabilities.
En app som laddats ner via App Store använder Apples Store-profil som inte är beroende av utvecklarens profil. Användare kommer fortsätta att ladda ner och starta appen. En utgången profil hindrar bara uppladdningen av ett nytt bygge till App Store Connect — Apple kräver att Distribution-profilen är giltig vid sändningstillfället.
Profilen kan kopieras till mappen ~/Library/MobileDevice/Provisioning Profiles på den nya datorn. Profilen är dock kopplad till certifikatet vars privata nyckel finns i nyckelringen. Du måste också exportera certifikatet med den privata nyckeln via Keychain Access och importera det på den nya enheten.
Det finns ingen begränsning av antalet profiler på en dator. Profilerna lagras i mappen ~/Library/MobileDevice/Provisioning Profiles och numreras enligt UUID. Xcode väljer automatiskt lämplig profil baserat på App ID och byggtyp. För enklare hantering rekommenderas att ta bort oanvända profiler via Xcode Accounts Preferences.
Ett Signing Certificate bekräftar utvecklarens identitet — det är en kryptografisk nyckel som utfärdas av Apple. En Provisioning Profile är en konfigurationsfil som anger vilken app (App ID) som kan startas med vilket certifikat och på vilka enheter. Profilen refererar alltid till ett specifikt certifikat men ersätter det inte.
Sammanfattning
Vi utvecklar en mobil applikation nyckelfärdigt
IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.
Läs också