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: การแจ้งเตือนแบบ Push, CloudKit, การซื้อภายในแอป (In-App Purchase) และ 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 ที่แน่นอนและเลือกความสามารถที่จำเป็น: Push Notifications, CloudKit, Sign in with Apple หลังจากการลงทะเบียน ตัวระบุจะพร้อมใช้งานสำหรับการสร้างโปรไฟล์การจัดเตรียม

swift
// การตรวจสอบ Bundle ID ในโค้ดแอป
let bundleID = Bundle.main.bundleIdentifier
print("Current Bundle ID: \(bundleID ?? "unknown")")

// การตรวจสอบ Bundle ID สำหรับเงื่อนไขการ build
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 สามารถตั้งค่าที่แตกต่างกันสำหรับการกำหนดค่าการ build ที่แตกต่างกัน: 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 จัดการการขึ้นต่อกันเหล่านี้โดยอัตโนมัติระหว่างการ build

ความแตกต่างระหว่าง 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 ตัวระบุเดียวมีความสำคัญเป็นพิเศษเนื่องจากฐานโค้ดถูกใช้ร่วมกันและเครื่องมือ build อัตโนมัติหลายตัวคาดหวังชื่อแพ็คเกจเดียวกันสำหรับทั้งสองแพลตฟอร์ม โปรเจกต์ 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 เราจะให้คำแนะนำและเสนอวิธีแก้ปัญหาที่ดีที่สุดแก่คุณ

ปรึกษาโครงการ

อ่านเพิ่มเติม