App Bundle ID — چیست، شناسه برنامه و ثبت نام

نویسنده: IT Sectr منتشر شده: 2026-04-17 زمان مطالعه: 8 دقیقه

App Bundle ID — یک شناسه منحصربه‌فرد برنامه است که در اکوسیستم‌های Apple و Google برای ثبت، امضا و توزیع محصول نرم‌افزاری استفاده می‌شود. هر برنامه در زمان ایجاد پروژه Bundle ID خود را دریافت می‌کند و این شناسه در طول چرخه عمر برنامه ثابت می‌ماند. به استناد به Apple Developer Documentation، Bundle ID برای اتصال خدمات، گواهینامه‌ها و پروفایل‌های امضا استفاده می‌شود.

نکات کلیدی

  • App Bundle ID — یک شناسه سراسری، منحصربه‌فرد برای هر برنامه در فروشگاه
  • فرمت بر اساس reverse domain notation: com.company.appname
  • ثبت نام در App Store Connect و Google Play Console انجام می‌شود
  • تغییر Bundle ID پس از انتشار بدون ایجاد یک برنامه جدید ممکن نیست
  • اتصال خدمات (Push، CloudKit، Firebase) از طریق Bundle ID انجام می‌شود

App Bundle ID چیست

Bundle Identifier — رشته‌ای است که برنامه را به طور یکتا در سیستم‌عامل و فروشگاه برنامه شناسایی می‌کند. در iOS و macOS آن را Bundle ID و در Android Package Name می‌نامند، هرچند از نظر کارکردی هر دو نقش یکسانی دارند: تضمین یکتایی برنامه در دستگاه و فروشگاه.

کاربرد Bundle ID

سیستم‌عامل از Bundle ID برای جداسازی برنامه‌ها در دستگاه استفاده می‌کند. دو برنامه با شناسه یکسان نمی‌توانند به طور همزمان نصب شوند — سیستم آن‌ها را یک محصول واحد در نظر می‌گیرد. فروشگاه‌های برنامه نیز در زمان انتشار یکتایی Bundle ID را بررسی می‌کنند.

تاریخچه و استانداردهای نام‌گذاری

Apple Bundle ID را با منتشر شدن iOS SDK در سال 2008 معرفی کرد. فرمات reverse domain notation از Java (package naming convention) گرفته شده است که در آن برای جلوگیری از تضاد نام‌های کلاس استفاده می‌شود. Google این رویه را برای Android اتخاذ کرد که یکنواختی را در هر دو اکوسیستم موبایل تضمین کرد.

پلتفرمنام فیلدمثال
iOS/macOSBundle Identifiercom.example.myapp
AndroidPackage Namecom.example.myapp
watchOSBundle Identifiercom.example.myapp.watchkit
tvOSBundle Identifiercom.example.myapp.tvos

ساختار فرمات Bundle ID

Bundle ID از چند بخش تشکیل شده است که با نقطه از یکدیگر جدا شده‌اند. بخش اول — شناسه توسعه‌دهنده یا شرکت (com، org، net). بخش دوم — دامنه شرکت (example، google، apple). بخش‌های بعدی نام برنامه و پلتفرم را مشخص می‌کنند.

ساختار Bundle ID

Bundle ID معمولی به صورت com.company.appname است. Apple توصیه می‌کند از نمایش معکوس نام دامنه استفاده کنید تا یکتایی سراسری ضمانتی شود. اگر شرکت دامنه ندارد، استفاده از ایمیل مجاز است: com.example.myapp یا org.example.myapp.

  • بخش 1 — TLD به صورت معکوس: com، org، io، net
  • بخش 2 — دامنه شرکت یا توسعه‌دهنده: google، apple، mycompany
  • بخش 3 — نام برنامه: maps، mail، notes
  • ضمیمه — پلتفرم یا افزونه: watchkit، todaywidget

Wildcard Bundle ID

Apple از Wildcard Bundle ID پشتیبانی می‌کند — الگوی شناسه با ستاره: com.example.*. چنین الگویی امکان استفاده از یک App ID برای چند برنامه از یک شرکت را فراهم می‌کند. Wildcard ID در مرحله توسعه مفید است، اما برای تولید توصیه نمی‌شود زیرا استفاده از برخی خدمات Apple را محدود می‌کند.

محدودیت‌های wildcard: اعلان‌های Push، CloudKit، خرید داخل‌برنامه‌ای و Game Center به Bundle ID صریح (explicit) نیاز دارند. در صورت استفاده از الگوی com.example.* این خدمات در دسترس نیستند. برای برنامه‌های تولیدی همواره از explicit Bundle ID استفاده کنید تا فعالیت کامل تمامی خدمات Apple تضمین شود.

علاوه بر wildcard، Apple از شناسه‌های پیشوندی پشتیبانی می‌کند که به تیم‌های توسعه در زمان ثبت نام در Apple Developer Program تخصیص داده می‌شوند. پیشوند (Team ID) به طور خودکار به تمامی App ID ها و پروفایل‌های امضا اضافه می‌شود. دو Team ID مختلف می‌توانند Bundle ID یکسانی ایجاد کنند، اما در دستگاه آن‌ها برنامه‌های مختلفی محسوب می‌شوند.

ثبت Bundle ID در کنسول‌ها

ثبت Bundle ID — مرحله‌ای اجباری قبل از انتشار برنامه است. در اکوسیستم Apple ثبت نام در Apple Developer Portal از طریق بخش Certificates, Identifiers & Profiles انجام می‌شود. در Google Play Bundle ID در زمان ایجاد برنامه در کنسول توسعه‌دهنده مشخص می‌شود.

ثبت نام در Apple Developer Portal

در پرتال Apple Developer، بخش Identifiers را انتخاب کنید، روی دکمه Register کلیک کنید و نوع App ID را مشخص کنید. نام دقیق Bundle ID را وارد کنید و capabilities مورد نیاز را انتخاب کنید: Push Notifications، CloudKit، Sign in with Apple. پس از ثبت، شناسه برای ایجاد پروفایل‌های امضا در دسترس قرار می‌گیرد.

swift
// بررسی Bundle ID در کد برنامه
let bundleID = Bundle.main.bundleIdentifier
print("Bundle ID فعلی: \(bundleID ?? "unknown")")

// بررسی Bundle ID برای شرایط ساخت
if bundleID == "com.example.app.production" {
    // پیکربندی تولیدی
    Analytics.shared.configure(.production)
}

ثبت نام در Google Play Console

Google Play Console نیازی به ثبت قبلی Bundle ID ندارد. شناسه در فایل build.gradle ماژول برنامه مشخص می‌شود و باید در چارچوب کلی Google Play منحصربه‌فرد باشد. پس از ایجاد برنامه، تغییر Package Name ممکن نیست، بنابراین شناسه را با دقت انتخاب کنید و یکتایی آن را از طریق جستجو در Google Play بررسی کنید. Google شناسه‌های برنامه‌های حذف شده را آزاد نمی‌کند، بنابراین Bundle ID یکبار اشغال شده برای سایر توسعه‌دهندگان غیرقابل دسترس خواهد بود.

در App Store Connect باید Bundle ID از مجموعه شناسه‌های ثبت شده موجود مشخص شود. اگر شناسه در پرتال Apple Developer ثبت نشده باشد، سیستم ایجاد خودکار آن را پیشنهاد خواهد داد. پس از ثبت، Bundle ID به تیم متصل می‌شود و بدون تماس با پشتیبانی Apple قابل انتقال به حساب توسعه‌دهنده دیگر نیست. هر Bundle ID می‌تواند چندین پروفایل امضا برای محیط‌های مختلف داشته باشد: Development، Ad Hoc، App Store.

در زمان ثبت Bundle ID برای برنامه iOS با افزونه‌ها، هر جزء باید جداگانه ثبت شود. افزونه‌های ویجت‌ها، صفحه کلید، Notification Service و Watch App شناسه‌های مشتق خود را از شناسه اصلی دارند. App Store Connect آن‌ها را در زمان ایجاد App Record در یک گروه ترکیب می‌کند که انتشار تمامی جزءات را به عنوان یک برنامه ممکن می‌سازد.

پیکربندی Bundle ID در پروژه Xcode

پیکربندی Bundle ID در Xcode در چند مکان انجام می‌شود: Info.plist، Build Settings و Signing & Capabilities. فیلد مرکزی — Bundle Identifier در تارگت برنامه. تمامی خدمات Apple، از اعلان‌های Push تا CloudKit، به این شناسه متصل می‌شوند. Bundle ID نادرست منجر به خطاهای امضا و عدم ممکنیت انتشار در App Store می‌شود.

تغییر Bundle ID در Xcode

xml
<!-- Info.plist — Bundle ID پایه پروژه -->
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>

<!-- Build Settings — متغیر PRODUCT_BUNDLE_IDENTIFIER -->
<!-- Debug: com.example.app.dev -->
<!-- Release: com.example.app -->

Xcode از متغیر PRODUCT_BUNDLE_IDENTIFIER در Build Settings استفاده می‌کند. برای پیکربندی‌های مختلف ساخت، مقادیر مختلفی می‌توان تعیین کرد: com.example.app.dev برای Debug و com.example.app برای Release. این برای نصب همزمان نسخه توسعه در کنار نسخه تولیدی روی یک دستگاه برای آزمایش مفید است.

پیکربندی چندتارگتی

اگر برنامه افزونه‌هایی داشته باشد (Notification Service، Widget، Watch App)، هر افزونه Bundle ID مخصوص خود را با پسوند دریافت می‌کند. برنامه اصلی: com.example.app. افزونه ویجت: com.example.app.widget. Watch App: com.example.app.watchkit. هر شناسه در Apple Developer Portal جداگانه ثبت می‌شود و پروفایل امضای مخصوص خود را دارد. Xcode این وابستگی‌ها را در زمان ساخت به طور خودکار مدیریت می‌کند.

تفاوت‌های App Bundle ID و Package Name

App Bundle ID (Apple) و Package Name (Google) — نهادهای مشابهی با هدف یکسان، اما قوانین مختلف استفاده در اکوسیستم‌های iOS و Android هستند. هر دو شناسه از reverse domain notation استفاده می‌کنند و پس از انتشار در فروشگاه‌های رسمی قابل تغییر نیستند.

تفاوت‌های کارکردی

در اکوسیستم Apple، Bundle ID با پروفایل امضا و گواهینامه‌ها مرتبط است. در صورت تغییر تیم توسعه، Bundle ID را می‌توان از طریق App Store Connect بین حساب‌ها انتقال داد. در Android، Package Name به طور سختی به برنامه در Google Play متصل است و قابل انتقال بین حساب‌های توسعه‌دهندگان نیست.

ویژگیiOS Bundle IDAndroid Package Name
حداکثر طولمحدود نیست150 کاراکتر
جداکننده بخش‌هانقطه (.)نقطه (.)
کاراکترهای مجازA-Z, a-z, 0-9, نقطه, خط تخفیفA-Z, a-z, 0-9, نقطه, خط زیرین
Wildcardپشتیبانی می‌شود (*)پشتیبانی نمی‌شود
استفاده در کدBundle.main.bundleIdentifierBuildConfig.APPLICATION_ID

علیرغم تفاوت‌ها، هر دو شناسه نقش حیاتی ایفا می‌کنند: بدون آن‌ها امکان انتشار برنامه در فروشگاه رسمی وجود ندارد. توصیه برای پروژه‌های چندسیستم‌عاملی — در نسخه‌های iOS و Android از شناسه یکسانی استفاده کنید تا اتصال با Firebase، Analytics و سایر خدمات ساده‌تر شود. این همچنین پیمایش را برای تیم توسعه آسان می‌کند: یک شناسه برای هر دو پروژه سردرگمی را در پیکربندی CI/CD و تنظیمات محیط کاهش می‌دهد.

در طول توسعه با استفاده از Flutter یا React Native، شناسه واحد به ویژه مهم است، زیرا پایگاه کد مشترک است و بسیاری ابزارهای ساخت خودکار برای هر دو پلتفرم همان نام پکیج را انتظار دارند. پروژه Firebase نیز به یک شناسه برای iOS و Android متصل می‌شود که تنظیم تحلیل و گزارش خطا را ساده می‌کند.

پرسش‌های متداول

آیا می‌توان Bundle ID را پس از انتشار برنامه تغییر داد؟

تغییر Bundle ID پس از انتشار در App Store یا Google Play ممکن نیست. سیستم شناسه جدید را به عنوان یک برنامه کاملاً متفاوت در نظر خواهد گرفت. برای به‌روزرسانی محصول موجود، Bundle ID باید در طول چرخه عمر برنامه ثابت باقی بماند.

اگر دو برنامه Bundle ID یکسانی داشته باشند چه اتفاقی می‌افتد؟

دستگاه iOS یا Android اجازه نصب برنامه دوم با همان شناسه را نمی‌دهد. سیستم خطا نشان داده و حذف برنامه موجود را پیشنهاد می‌دهد. در فروشگاه‌ها نیز انتشار با Bundle ID تکراری مسدود خواهد شد.

چگونه Bundle ID مناسبی برای پروژه جدید انتخاب کنیم؟

از reverse domain notation شرکت خود استفاده کنید: com.namَشرکت.namَبرنامه. از خط تخفیف و کاراکترهای ویژه خودداری کنید. اگر برنامه افزونه دارد، پسوندهایی از طریق نقطه اضافه کنید. مطمئن شوید شناسه منحصربه‌فرد است و توسط توسعه‌دهنده دیگری اشغال نشده است.

آیا برای هر افزونه برنامه Bundle ID جداگانه لازم است؟

بله، هر افزونه — ویجت، Watch App، Notification Service — به Bundle ID مخصوص خود نیاز دارد. شناسه‌ها یک سلسله‌مراتب تشکیل می‌دهند: com.example.app به عنوان پایه، com.example.app.widget برای ویجت، com.example.app.watchkit برای Watch. همه آن‌ها در Apple Developer Portal جداگانه ثبت می‌شوند و از App ID مشترک با برنامه والد استفاده می‌کنند.

تفاوت Bundle ID و App ID در پرتال Apple Developer چیست؟

Bundle ID — رشته شناسه در کد برنامه است. App ID — یک شیء در Apple Developer Portal است که Bundle ID را با مجموعه‌ای از خدمات فعال (capabilities) ترکیب می‌کند. App ID بر اساس Bundle ID ایجاد می‌شود و برای ایجاد پروفایل‌های امضا استفاده می‌شود.

نتایج

  • App Bundle ID — شناسه منحصربه‌فرد برنامه در اکوسیستم‌های iOS و Android
  • فرمت بر اساس reverse domain notation: com.company.appname
  • تغییر Bundle ID پس از انتشار بدون ایجاد برنامه جدید در فروشگاه ممکن نیست
  • Wildcard Bundle ID com.example.* برای توسعه مفید است، اما با Push، CloudKit و In-App Purchase ناسازگار است
  • افزونه‌ها Bundle ID های مخصوص خود را با پسوندهای از طریق نقطه دریافت می‌کنند
  • ثبت نام به ترتیب در Apple Developer Portal و Google Play Console انجام می‌شود
  • توصیه — شناسه را با دقت انتخاب کنید، قبل از انتشار یکتایی آن را بررسی کنید

ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد

IT Sectr از سال 2017 برنامه‌های iOS و Android را برای استارتاپ‌ها و کسب‌وکارها ایجاد می‌کند. ما به شما مشاوره می‌دهیم و بهترین راه‌حل را پیشنهاد خواهیم کرد.

بحث درباره پروژه

همچنین بخوانید