Provisioning Profile tərtibatçı sertifikatlarını, tətbiq identifikatorunu və iOS tətbiqlərinin kodunu imzalamaq üçün icazə verilən cihazların siyahısını əlaqələndirir. Apple Developer Documentation, 2026 məlumatlarına görə, profil fiziki cihazda tətbiqin hər hansı işə salınması üçün zəruridir — onsuz Xcode build-i iPhone və ya iPad-ə quraşdıra bilməyəcək. Məqalədə profillərin strukturunu, növlərini və yaradılması prosesini araşdıracağıq.
Əsas məqamlar
Provisioning Profile .mobileprovision (iOS üçün) və ya .provisionprofile (macOS üçün) formatında olan, Apple-ın cihazlarda tətbiqlərin quraşdırılmasını və işə salınmasını idarə etmək üçün istifadə etdiyi rəqəmsal konfiqurasiya faylıdır. Profil kod imzalama metadatasını ehtiva edir, onsuz tətbiqi fiziki iPhone, iPad və ya Apple Watch-da işə salmaq mümkün deyil — simulyator profil tələb etmir, çünki kod real prosessorda icra üçün imzalanmır.
Profil Apple Developer Portal vasitəsilə buraxılır və etibarlılıq müddətinə malikdir — adətən Development və Distribution profilləri üçün bir il. Apple siyasətinə görə, profil avtomatik olaraq imzalandığı Apple Developer Program sertifikatı ilə əlaqələndirilir: sertifikat ləğv edilərsə və ya müddəti bitərsə, profil işləməyi dayandırır.
Hər profil unikal UUID ehtiva edir, Xcode onu açar zəncirində profili identifikasiya etmək üçün istifadə edir. Xcode qurma zamanı avtomatik olaraq uyğun profili seçir, lakin tərtibatçı Signing & Capabilities parametrlərində seçimi dəyişə bilər. Bir cihazda qeyri-məhdud sayda profil quraşdırıla bilər — Apple cihaz idarəetmə sistemi (MDM) bundan korporativ tətbiq paylanması üçün istifadə edir.
Kod imzalanması profillərin mövcudluğunun əsas səbəbidir. Apple iOS cihazında işə salınan hər tətbiqin Apple tərəfindən buraxılmış sertifikatla imzalanmasını tələb edir. Provisioning Profile birləşdirici halqa rolunu oynayır: tərtibatçının tətbiqi bu cihazda işə salmaq hüququnun olduğunu təsdiqləyir. Apple Security Guide (2025) məlumatlarına görə, profil mexanizmi hətta tərtibatçı sertifikatı kompromat edilsə belə, istifadəçilərin cihazlarına zərərli proqram quraşdırılmasının qarşısını alır.
Profil həm də tətbiq üçün hansı sistem xidmətlərinin mövcud olduğunu müəyyən edir. Tətbiq Push bildirişlərindən istifadə edirsə, Apple Push Notification service (APNs) profildə düzgün entitlements tələb edir. Bu olmadan server bildirişləri cihaza çatdırılmayacaq. Eyni qayda iCloud, App Groups, Wallet, HealthKit və digər Apple freymvorkları üçün də keçərlidir.
Tərtibatçılar tez-tez Provisioning Profile-i Apple Certificate ilə qarışdırırlar. Sertifikat şəxsiyyəti təsdiqləyən rəqəmsal sənəddir (kimin imzaladığını), profil isə konfiqurasiyadır (hansı tətbiq, hansı cihazlarda, hansı hüquqlarla). Bir sertifikat bir neçə profildə istifadə oluna bilər və bir profil dəqiq bir sertifikata bağlıdır. Apple hər tətbiq və hər ssenari üçün ayrıca profil yaradılmasını tövsiyə edir — Development, Ad Hoc, App Store.
Tətbiqin imzalanması prosesi ardıcıl yerinə yetirilən bir neçə addımdan ibarətdir. Xcode tətbiqin ikili faylını (App Bundle) götürür, onu tərtibatçının şəxsi açarı ilə imzalayır, içinə Provisioning Profile yerləşdirir və cihaza göndərir. Cihaz imzanı Apple-ın açıq açarı ilə yoxlayır, profilin UUID-ni sistemdəki etibarlı profillərin siyahısı ilə müqayisə edir və tətbiqi yalnız bütün yoxlamalar uğurlu olduqda işə salır.
İstifadəçi tətbiqi App Store-dan endirdikdə mexanizm fərqlidir. App Store Connect tətbiqi Apple-ın öz Distribution sertifikatı ilə yenidən imzalayır, tərtibatçı profilini Store profili ilə əvəz edir. Bu o deməkdir ki, App Store vasitəsilə nəşr olunmuş tətbiq texniki cəhətdən Apple tərəfindən imzalanıb, tərtibatçı tərəfindən deyil — baxmayaraq ki, orijinal tərtibatçı imzası build-in App Store Connect-ə yüklənməsi mərhələsində yoxlanılır.
Ad Hoc paylanması üçün profil işə salınmasına icazə verilən konkret cihaz UDID-lərini qeydiyyata alır. Pulsuz Apple Developer Program hesabı sınaq üçün ildə 100 cihazla məhdudlaşır. Enterprise profilləri (təşkilat daxilində daxili paylanma üçün) cihaz sayında məhdudiyyətə malik deyil, lakin ildə $299 qiymətində aktiv Apple Developer Enterprise Program abunəliyi tələb edir.
Etibarlılıq müddəti Provisioning Profile yaradıldığı andan bir ildir. Müddəti bitməsinə 30 gün qalmış Apple Xcode və Developer Portal vasitəsilə tərtibatçıya push bildirişləri göndərməyə başlayır. Profilin müddəti bitərsə, cihazdakı tətbiq işləməyə davam edir (əgər artıq quraşdırılıbsa), lakin bu profillə yeni build quraşdırmaq mümkün olmayacaq. Xcode müddəti bitmiş profillə qurma cəhdində -402620394 kodu ilə kod imzalama xətası verir. Apple Xcode Accounts Preferences vasitəsilə profillərin avtomatik yenilənməsini konfiqurasiya etməyi tövsiyə edir — onda Xcode profili müddətin bitməsinə 24 saat qalmış yeniləyir.
Apple dörd əsas Provisioning Profile növü təqdim edir, hər biri tətbiqin həyat dövrünün konkret mərhələsi üçün nəzərdə tutulub. Development profili Apple Developer Portal-a əlavə edilmiş fiziki cihazlarda tətbiqi işə salmağa imkan verir və inkişaf və QA-sınaq mərhələsində istifadə olunur. Development profili yaratmaq üçün pulsuz Apple tərtibatçı hesabı kifayətdir.
Ad Hoc profili App Store-dan istifadə etmədən məhdud tester qrupu arasında tətbiqi paylamaq üçün nəzərdə tutulub. Profil UDID üzrə 100 cihaza qədər qeydiyyata alır və tətbiq birbaşa iTunes, Apple Configurator və ya MDM həlləri vasitəsilə quraşdırıla bilər. Ad Hoc build-lərinin etibarlılıq müddəti 12 aydır və Apple-ın review mərhələsini tələb etmir.
App Store profili yalnız tətbiqin App Store-da nəşri üçün istifadə olunur və cihazların siyahısını ehtiva etmir — Apple build təsdiqləndikdən sonra paylanmanı özü idarə edir. Arxivi App Store Connect-ə yükləyərkən Xcode sistemdə quraşdırılıbsa, avtomatik olaraq App Store profilindən istifadə edir. Enterprise profili Apple Developer Enterprise Program olan təşkilatlar üçün nəzərdə tutulub və cihaz sayında məhdudiyyət olmadan və Apple review olmadan şirkət daxilində tətbiqləri paylamağa imkan verir.
| Profil növü | Məqsəd | Cihazlar | Abunəlik dəyəri |
|---|---|---|---|
| Development | İnkişaf və sınaq | 100 UDID-ə qədər | Pulsuz / ildə $99 |
| Ad Hoc | Testerlərə paylama | 100 UDID-ə qədər | ildə $99 |
| App Store | App Store-da nəşr | İstənilən (Apple vasitəsilə) | ildə $99 |
| Enterprise | Daxili paylama | Qeyri-məhdud | ildə $299 |
Provisioning Profile Apple tərəfindən imzalanmış DER formatında fayldır, məzmununu komanda sətri vasitəsilə görmək olar. macOS-un Security freymvorku .mobileprovision faylını oxunaqlı XML plist-ə deşifrə etməyə imkan verir. Profilin daxilində aşağıdakılar var: profilin UUID-i, App ID (komanda prefiksi + Bundle Identifier), sertifikatların siyahısı, icazə verilən cihazların siyahısı (yalnız Development və Ad Hoc üçün), entitlements və etibarlılıq müddəti.
App ID — Team ID (Apple tərəfindən verilən 10 simvol) və Bundle Identifier-dən (məsələn, com.example.myapp) ibarət tətbiqin unikal identifikatoru. App ID explicit (Bundle Identifier ilə dəqiq uyğunluq) və ya wildcard (bir neçə tətbiq üçün *.example.com şablonu) ola bilər. Apple Push bildirişləri və ya iCloud istifadə edən tətbiqlər üçün wildcard istifadəsini tövsiyə etmir — bu xidmətlər explicit App ID tələb edir.
Entitlements — tətbiqin sistem resurslarına giriş hüquqlarını müəyyən edən profil daxilindəki XML blokudur. Tipik entitlements bunlardır: aps-environment (Push bildirişləri), com.apple.developer.icloud-services (iCloud), com.apple.security.application-groups (Widget və Share Extension üçün App Groups). Apple Xcode-da aktivləşdirilmiş Capabilities əsasında profillərə avtomatik entitlements əlavə edir. Profildəki entitlements ilə kodda tələb olunanlar arasında hər hansı uyğunsuzluq imzalama xətasına səbəb olur.
Profil yaratmaq iki yolla mümkündür: Apple Developer Portal-ın veb interfeysi vasitəsilə və ya avtomatik olaraq Xcode vasitəsilə. Tipik layihədə Automatically manage signing seçimi aktiv olduqda Xcode profilləri avtomatik idarə edir. Xcode bir neçə saniyə ərzində sertifikat, profil və App ID yaradır, Apple Developer Portal ilə sinxronlaşır. Lakin CI/CD-payplininləri üçün əl ilə idarəetmə tələb olunur.
Apple Developer Portal-da profili əl ilə yaratmaq üçün lazımdır: Certificates, Identifiers & Profiles bölməsinə keçmək, Profiles seçmək və "+"-ı klikləmək. Sonra profil növünü seçmək (Development, Ad Hoc, App Store və ya Enterprise), qeydiyyatdan keçmiş siyahıdan App ID seçmək, tərtibatçı sertifikatını seçmək və (Development və Ad Hoc üçün) cihazları seçmək lazımdır. Profil yaradıldıqdan sonra .mobileprovision formatında endirilir və Xcode-da iki dəfə klikləməklə quraşdırılır.
CI/CD serverləri xüsusi yanaşma tələb edir: profil və sertifikat qorunan repozitoriyada saxlanmalıdır (məsələn, GitHub Actions sirlərində). Qurma zamanı profil agentə yüklənir, ~/Library/MobileDevice/Provisioning Profiles qovluğuna yerləşdirilir, sertifikat isə açar zəncirinə idxal edilir. Fastlane — imzalama avtomatlaşdırması üçün məşhur alət — tərtibatçılar arasında profilləri və sertifikatları şifrələnmiş git-repozitoriya vasitəsilə sinxronlaşdıran match əmrini təqdim edir.
Kod imzalama problemlərini diaqnostika etmək üçün .mobileprovision faylını deşifrə edib məzmununu yoxlamaq olar. Aşağıdakı əmr profildən XML plist faylını çıxarır və oxunaqlı formata yazır:
# mobileprovision faylının XML-ə deşifrə edilməsi
security cms -D -i "path/to/embedded.mobileprovision" \
-o "profile.plist"
# Profilin etibarlılıq müddətinin yoxlanılması
plist -convert xml1 profile.plist -o -
grep -A 1 "ExpirationDate" profile.plist
Security macOS Command Line Tools tərkibindəki utiliti profilin CMS imzalanmış faylını deşifrə edir. -D bayrağı deşifrəni, -i isə giriş faylını bildirir. Deşifrədən sonra plist utiliti ikili plist-i XML-ə çevirir, grep isə bitmə tarixini çıxarır. Bu metod CI/CD-də reliz build-inin qurulmasından əvvəl profilin vaxtı keçmədiyini yoxlamaq üçün faydalıdır.
Ən çox yayılmış səhv Xcode-da qurma zamanı "No matching provisioning profiles found" xətasıdır. O, Xcode qurma konfiqurasiyasına uyğun profili tapa bilmədikdə yaranır: Bundle Identifier profildəki App ID ilə uyğun gəlmir, sertifikat açar zəncirində quraşdırılmayıb və ya profilin müddəti bitib. Həlli — target-də Signing & Capabilities parametrlərini yoxlamaq və lazım gəldikdə Automatically manage signing-ə keçməkdir.
"Provisioning profile doesn't include the selected device" xətası Development və ya Ad Hoc build-i UDID-i profilə əlavə edilməmiş cihazda işə salmağa cəhd etdikdə görünür. Apple Developer Portal cihazı mövcud profilə əlavə etməyə imkan verir — bundan sonra profili yenidən endirib quraşdırmaq lazımdır. Xcode imzalamanı avtomatik idarə edərkən qoşulmuş cihazı profilə avtomatik əlavə edir.
entitlements problemi App Store Connect-ə yükləmə zamanı "The executable was signed with invalid entitlements" xətası ilə özünü göstərir. Səbəb — profildəki entitlements-in layihənin .entitlements faylı ilə uyğunsuzluğudur. Apple profildəki hüquqlar dəstinin tətbiqin tələb etdiyi hüquqların superdəsti olmasını tələb edir. Həlli — Xcode target-də Capabilities yoxlamaq və bütün aktivləşdirilmiş xidmətlərin profildə müvafiq entitlements-ə malik olduğundan əmin olmaqdır. Fastlane App ID və profilləri aktual entitlements ilə sinxronlaşdıran produce əmrini ehtiva edir.
Tez-tez verilən suallar
Bəli, əgər profildəki App ID com.example.* formasında wildcard-identifikatordan istifadə edirsə. Lakin wildcard-profillər Push bildirişlərini, iCloud, Game Center və App Groups-u dəstəkləmir. Apple genişləndirilmiş Capabilities istifadə edən hər tətbiq üçün ayrıca explicit profil yaratmağı tövsiyə edir.
App Store vasitəsilə yüklənmiş tətbiq tərtibatçı profilindən asılı olmayan Apple-ın Store profilindən istifadə edir. İstifadəçilər tətbiqi endirməyə və işə salmağa davam edəcəklər. Müddəti bitmiş profil yalnız App Store Connect-ə yeni build-in yüklənməsinə mane olur — Apple Distribution profilinin göndərmə anında etibarlı olmasını tələb edir.
Profili yeni kompüterdə ~/Library/MobileDevice/Provisioning Profiles qovluğuna kopyalamaq olar. Lakin profil açar zəncirində olan şəxsi açarı olan sertifikata bağlıdır. Həmçinin Keychain Access vasitəsilə sertifikatı şəxsi açarla birlikdə ixrac etmək və yeni cihazda idxal etmək lazımdır.
Kompüterdə profillərin sayına məhdudiyyət yoxdur. Profillər ~/Library/MobileDevice/Provisioning Profiles qovluğunda saxlanılır və UUID üzrə nömrələnir. Xcode App ID və qurma növünə görə avtomatik olaraq uyğun profili seçir. İdarəetməni sadələşdirmək üçün Xcode Accounts Preferences vasitəsilə istifadə olunmayan profilləri silmək tövsiyə olunur.
Signing Certificate tərtibatçının şəxsiyyətini təsdiqləyir — bu, Apple tərəfindən buraxılmış kriptoqrafik açardır. Provisioning Profile isə hansı tətbiqin (App ID) hansı sertifikatla və hansı cihazlarda işə salına biləcəyini göstərən konfiqurasiya faylıdır. Profil həmişə konkret sertifikata istinad edir, lakin onu əvəz etmir.
Nəticə
Açar təslim mobil tətbiq hazırlayacağıq
IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.
Həm də oxuyun