App Bundle ID — ما هو، معرف التطبيق والتسجيل

المؤلف: IT Sectr نُشر: 2026-04-17 وقت القراءة: 8 دق

App Bundle ID — هو معرف فريد للتطبيق يُستخدم في أنظمة Apple و Google لتسجيل وتوقيع وتوزيع المنتج البرمجي. يحصل كل تطبيق على Bundle ID الخاص به عند إنشاء المشروع، ويظل هذا المعرف دون تغيير طوال دورة حياته بالكامل. وفقًا لوثائق مطوري Apple، يُستخدم Bundle ID لربط الخدمات والشهادات وملفات التزويد.

النقاط الرئيسية

  • App Bundle ID — معرف عالمي، فريد لكل تطبيق في المتجر
  • التنسيق يعتمد على تدوين المجال العكسي: 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. تم اقتراض تنسيق تدوين المجال العكسي من Java (اتفاقية تسمية الحزم)، حيث يُستخدم لمنع تعارض أسماء الفئات. تبنّت 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: الإشعارات الفورية و CloudKit والمشتريات داخل التطبيق و Game Center تتطلب Bundle ID صريح. عند استخدام القالب com.example.*، هذه الخدمات غير متاحة. لتطبيقات الإنتاج، استخدم دائمًا Bundle ID صريح لضمان الوظائف الكاملة لجميع خدمات Apple.

بالإضافة إلى wildcard، تدعم Apple معرفات البادئة التي تُخصص لفريق التطوير عند التسجيل في Apple Developer Program. البادئة (Team ID) تُضاف تلقائيًا إلى جميع App IDs وملفات التزويد. يمكن لمعرفي 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 الدقيق واختر الإمكانيات المطلوبة: Push Notifications، CloudKit، Sign in with Apple. بعد التسجيل، يصبح المعرف متاحًا لإنشاء ملفات التزويد.

swift
// التحقق من Bundle ID في كود التطبيق
let bundleID = Bundle.main.bundleIdentifier
print("Current 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، من الإشعارات الفورية إلى 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. يستخدم كلا المعرفين تدوين المجال العكسي ولا يمكن تغييرهما بعد النشر في المتاجر الرسمية للتطبيقات.

الاختلافات الوظيفية

في نظام 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 بشكل صحيح لمشروع جديد؟

استخدم تدوين المجال العكسي لشركتك: com.companyname.appname. تجنب الشرطات والأحرف الخاصة. إذا كان للتطبيق امتدادات، أضف لواحق مفصولة بنقاط. تأكد من أن المعرف فريد وغير مشغول من قبل مطور آخر.

هل يحتاج كل امتداد تطبيق إلى 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
  • التنسيق يعتمد على تدوين المجال العكسي: com.company.appname
  • تغيير Bundle ID بعد النشر مستحيل دون إنشاء تطبيق جديد في المتجر
  • Wildcard Bundle ID com.example.* مناسب للتطوير لكنه غير متوافق مع Push و CloudKit والمشتريات داخل التطبيق
  • الامتدادات تحصل على Bundle ID خاص بها مع لواحق مفصولة بنقطة
  • التسجيل يتم في Apple Developer Portal و Google Play Console على التوالي
  • توصية — اختر المعرف بعناية، وتحقق من التفرد قبل النشر

سنقوم بتطوير تطبيق جوال جاهز

تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.

مناقشة المشروع

اقرأ أيضًا