App Bundle ID — bu Apple və Google ekosistemlərində proqram məhsulunun qeydiyyatı, imzalanması və yayılması üçün istifadə olunan unikal tətbiq identifikatorudur. Hər bir tətbiq layihə yaradılarkən öz Bundle ID-ni alır və bu identifikator bütün həyat dövrü boyu dəyişməz qalır. Apple Developer Documentation-ya görə, Bundle ID xidmətlərin, sertifikatların və imza profillərinin bağlanması üçün istifadə olunur.
Əsas məqamlar
Bundle Identifier — bu, tətbiqi əməliyyat sistemində və tətbiq mağazasında birmənalı şəkildə müyyənləşdirən simvol sətri. iOS və macOS-də Bundle ID, Android-də isə Package Name adlanır, funksional olaraq hər ikisi eyni rolu oynayır: cihazda və mağazada tətbiqin unikallığını təmin edir.
Əməliyyat sistemi cihazda tətbiqləri fərqləndirmək üçün Bundle ID-dən istifadə edir. Eyni identifikatora malik iki tətbiq eyni anda quraşdırıla bilməz — sistem onları eyni məhsul kimi qəbul edir. Tətbiq mağazaları da yayımlama zamanı Bundle ID-nin unikallığını yoxlayır.
Apple Bundle ID-ni 2008-ci ildə iOS SDK-nın buraxılması ilə təqdim etdi. Reverse domain notation formatı sinif adları konfliktlərinin qarşısını almaq üçün istifadə olunduğu Java-dan (package naming convention) götürülmüşdür. Google bu təcrübəni Android üçün mənimsədi və bu, hər iki mobil ekosistemdə vəhdeti təmin etdi.
| Platforma | Sahə adı | Nümunə |
|---|---|---|
| iOS/macOS | Bundle Identifier | com.example.myapp |
| Android | Package Name | com.example.myapp |
| watchOS | Bundle Identifier | com.example.myapp.watchkit |
| tvOS | Bundle Identifier | com.example.myapp.tvos |
Bundle ID nöqtələrlə ayrılmış bir neçə seqmentdən ibarətdir. Birinci hissə — tərtibatçı və ya şirkətin identifikatoru (com, org, net). İkinci — şirkətin domeni (example, google, apple). Sonrakı seqmentlər tətbiqin və platformanın adını dəqiqləşdirir.
Tipik bir Bundle ID com.company.appname kimi görünür. Apple qlobal unikallığı təmin etmək üçün domen adının tərs qeydindən istifadə etməyi tövsiyə edir. Şirkətin domeni yoxdursa, e-poçt istifadəsinə icazə verilir: com.example.myapp və ya org.example.myapp.
Apple Wildcard Bundle ID-ni dəstəkləyir — ulduz işarəsi olan identifikator şablonu: com.example.*. Belə bir şablon bir şirkətin bir neçə tətbiqi üçün bir App ID-dən istifadə etməyə imkan verir. Wildcard ID inkişaf mərhələsində rahatdır, lakin bəzi Apple xidmətlərinin istifadəsini məhdudlaşdırdığı üçün istehsalat üçün tövsiyə edilmir.
Wildcard məhdudiyyətləri: Push bildirişləri, CloudKit, In-App Purchase və Game Center dəqiq (explicit) Bundle ID tələb edir. com.example.* şablonundan istifadə edərkən bu xidmətlər mövcud deyil. İstehsalat tətbiqləri üçün bütün Apple xidmətlərinin tam funksionallığını təmin etmək üçün həmişə explicit Bundle ID istifadə edin.
Wildcard-dan əlavə, Apple Apple Developer Program-da qeydiyyatdan keçərkən tərtibatçı komandalarına təyin olunan prefiks identifikatorlarını dəstəkləyir. Prefiks (Team ID) avtomatik olaraq bütün App ID və imza profillərinə əlavə edilir. İki fərqli Team ID eyni Bundle ID-ni yarada bilər, lakin cihazda onlar fərqli tətbiqlər hesab olunur.
Bundle ID-nin qeydiyyatı — tətbiqi yayımlamadan əvvəl məcburi mərhələdir. Apple ekosistemində qeydiyyat Apple Developer Portal-da Certificates, Identifiers & Profiles bölməsi vasitəsilə aparılır. Google Play-də Bundle ID tətbiq yaradılarkən tərtibatçı konsolunda göstərilir.
Apple Developer portalında Identifiers bölməsini seçin, Register düyməsini basın və App ID növünü təyin edin. Bundle ID-nin dəqiq adını daxil edin və lazımi capabilities seçin: Push Notifications, CloudKit, Sign in with Apple. Qeydiyyatdan sonra identifikator imza profilləri yaratmaq üçün əlçatan olur.
// Tətbiq kodunda Bundle ID-nin yoxlanması
let bundleID = Bundle.main.bundleIdentifier
print("Cari Bundle ID: \(bundleID ?? "unknown")")
// Yığma şərtləri üçün Bundle ID-nin yoxlanması
if bundleID == "com.example.app.production" {
// İstehsalat konfiqurasiyası
Analytics.shared.configure(.production)
}
Google Play Console Bundle ID-nin əvvəlcədən qeydiyyatını tələb etmir. İdentifikator tətbiq modulunun build.gradle faylında göstərilir və bütün Google Play çərçivəsində unikal olmalıdır. Tətbiq yaradıldıqdan sonra Package Name dəyişdirilə bilməz, ona görə identifikatoru diqqətlə seçin və Google Play-də axtarış vasitəsilə unikallığını yoxlayın. Google silinmiş tətbiqlərin identifikatorlarını azad etmir, buna görə bir dəfə tutulmuş Bundle ID digər tərtibatçılar üçün əlçatmaz qalır.
App Store Connect-də qeydiyyatdan keçərkən mövcud qeydiyyatdan keçmiş identifikatorlar dəstindən Bundle ID göstərilməlidir. Əgər identifikator hələ Apple Developer portalında qeydiyyatdan keçməyibsə, sistem avtomatik olaraq onu yaratmağı təklif edəcək. Qeydiyyatdan sonra Bundle ID komandaya bağlanır və Apple dəstəyinə müraciət etmədən başqa tərtibatçı hesabına köçürülə bilməz. Hər bir Bundle ID müxtəlif mühitlər üçün bir neçə imza profilinə malik ola bilər: Development, Ad Hoc, App Store.
Genişlənmələri olan iOS tətbiqi üçün Bundle ID qeydiyyatı zamanı hər bir komponent ayrıca qeydiyyatdan keçirilməlidir. Vidjetlərin, klaviaturanın, Notification Service və Watch App-in genişlənmələri əsas identifikatordan törəmə öz identifikatorlarına malikdir. App Store Connect App Record yaradılarkən onları bir qrupda birləşdirir, bu da bütün komponentləri bir tətbiq kimi yayımlamağa imkan verir.
Bundle ID konfiqurasiyası Xcode-da bir neçə yerdə aparılır: Info.plist, Build Settings və Signing & Capabilities. Mərkəzi sahə — tətbiq targetindəki Bundle Identifier. Push bildirişlərindən CloudKit-ə qədər bütün Apple xidmətləri bu identifikatora bağlanır. Səhv göstərilən Bundle ID imza xətalarma və App Store-da yayımlama’nın qeyri-mümkünlüyünə səbəb olur.
<!-- Info.plist — layihənin əsas Bundle ID-si -->
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<!-- Build Settings — PRODUCT_BUNDLE_IDENTIFIER dəyişəni -->
<!-- Debug: com.example.app.dev -->
<!-- Release: com.example.app -->
Xcode Build Settings-də PRODUCT_BUNDLE_IDENTIFIER dəyişənindən istifadə edir. Müxtəlif yığma konfiqurasiyaları üçün fərqli dəyərlər təyin edilə bilər: Debug üçün com.example.app.dev və Release üçün com.example.app. Bu, bir cihazda istehsalat versiyası ilə yanaşı təkmilləşdirmə versiyasının paralel quraşdırılması üçün rahatdır.
Əgər tətbiqin genişlənmələri varsa (Notification Service, Widget, Watch App), hər bir genişlənmə suffiksli öz Bundle ID-sini alır. Əsas tətbiq: com.example.app. Vidjet genişlənməsi: com.example.app.widget. Watch App: com.example.app.watchkit. Hər bir identifikator Apple Developer Portal-da ayrıca qeydiyyatdan keçirilir və ayrı imza profili alır. Xcode yığma zamanı bu asılılıqları avtomatik idarə edir.
App Bundle ID (Apple) və Package Name (Google) — eyni təyinatlı, lakin iOS və Android ekosistemlərində fərqli istifadə qaydaları olan analoji varlıqlardır. Hər iki identifikator reverse domain notation istifadə edir və rəsmi tətbiq mağazalarında yayımlandıqdan sonra dəyişdirilə bilməz.
Apple ekosistemində Bundle ID imza profili və sertifikatlarla bağlıdır. Tərtibatçı komandası dəyişərkən Bundle ID App Store Connect vasitəsilə hesablar arasında köçürülə bilər. Android-də Package Name Google Play-də tətbiqə sərt şəkildə bağlanır və tərtibatçı hesabları arasında köçürülə bilməz.
| Xarakteristika | iOS Bundle ID | Android Package Name |
|---|---|---|
| Maksimum uzunluq | Məhdud deyil | 150 simvol |
| Seqment ayırıcısı | Nöqtə (.) | Nöqtə (.) |
| İcazə verilən simvollar | A-Z, a-z, 0-9, nöqtə, defis | A-Z, a-z, 0-9, nöqtə, alt xətt |
| Wildcard | Dəstəklənir (*) | Dəstəklənmir |
| Koddakı istifadə | Bundle.main.bundleIdentifier | BuildConfig.APPLICATION_ID |
Fərqlərə baxmayaraq, hər iki identifikator kritik rol oynayır: onlar olmadan tətbiqi rəsmi mağazada yayımlamaq mümkün deyil. Tövsiyə cross-platform layihələr üçün — iOS və Android versiyalarında eyni identifikatordan istifadə edin ki, Firebase, Analytics və digər xidmətlərlə inteqrasiya sadələşsin. Bu həm də tərtibatçı komandası üçün naviqasiyanı asanlaşdırır: hər iki layihə üçün bir identifikator CI/CD konfiqurasiyası və mühit qurulumu zamanı qarışıqlığı azaldır.
Flutter və ya React Native istifadə edərək tətbiq hazırlayarkən vahid identifikator xüsusilə vacibdir, çünki kod bazası ümumidir və bir çox avtomatik yığma alətləri hər iki platforma üçün eyni paket adını gözləyir. Firebase layihəsi də iOS və Android üçün bir identifikatora bağlanır, bu da analitika və qəza hesabatının qurulmasını sadələşdirir.
Tez-tez verilən suallar
Bundle ID-nin dəyişdirilməsi App Store və ya Google Play-də yayımlandıqdan sonra mümkün deyil. Sistem yeni identifikatoru tamamilə fərqli bir tətbiq kimi qəbul edəcək. Mövcud məhsulun yenilənməsi üçün Bundle ID tətbiqin bütün həyat dövrü boyu dəyişməz qalmalıdır.
iOS və ya Android cihazı eyni identifikatora malik ikinci tətbiqin birincinin üzərinə quraşdırılmasına icazə verməz. Sistem xəta göstərəcək və mövcud tətbiqi silməyi təklif edəcək. Mağazalarda təkrarlanan Bundle ID ilə yayımlama da bloklanacaq.
Şirkətinizin reverse domain notation-undan istifadə edin: com.şirkətadı.tətbiqadı. Defislərdən və xüsusi simvollardan qaçının. Əgər tətbiqin genişlənmələri varsa, nöqtə vasitəsilə suffikslər əlavə edin. İdentifikatorun unikal olduğuna və başqa tərtibatçı tərəfindən tutulmadığına əmin olun.
Bəli, hər bir genişlənmə — vidjet, Watch App, Notification Service — öz Bundle ID-sini tələb edir. İdentifikatorlar iyerarxiya təşkil edir: com.example.app əsas, com.example.app.widget vidjet üçün, com.example.app.watchkit Watch üçün. Hamısı Apple Developer Portal-da ayrıca qeydiyyatdan keçirilir və valideyn tətbiqlə ümumi App ID istifadə edir.
Bundle ID — tətbiq kodunda identifikator sətri. App ID — Apple Developer Portal-da Bundle ID-ni daxil edilmiş xidmətlər (capabilities) dəsti ilə birləşdirən obyektdir. App ID Bundle ID əsasında yaradılır və imza profillərinin yaradılması üçün istifadə olunur.
Nəticələr
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