App Bundle ID — định danh ứng dụng và đăng ký

Tác giả: IT Sectr Đã đăng: 2026-04-17 Thời gian đọc: 8 phút

App Bundle ID — là một định danh ứng dụng duy nhất được sử dụng trong hệ sinh thái Apple và Google để đăng ký, ký và phân phối sản phẩm phần mềm. Mỗi ứng dụng nhận được Bundle ID khi tạo dự án và định danh này không thay đổi trong suốt vòng đời. Theo Tài liệu nhà phát triển Apple, Bundle ID được sử dụng để liên kết các dịch vụ, chứng chỉ và hồ sơ cấp quyền.

Điểm chính

  • App Bundle ID — định danh toàn cầu, duy nhất cho mỗi ứng dụng trong cửa hàng
  • Định dạng dựa trên ký hiệu tên miền ngược: com.company.appname
  • Đăng ký được thực hiện trong App Store Connect và Google Play Console
  • Thay đổi Bundle ID sau khi xuất bản là không thể nếu không tạo ứng dụng mới
  • Liên kết dịch vụ (Push, CloudKit, Firebase) được thực hiện qua Bundle ID

App Bundle ID là gì

Bundle Identifier là một chuỗi xác định duy nhất một ứng dụng trong hệ điều hành và cửa hàng ứng dụng. Trên iOS và macOS, nó được gọi là Bundle ID, trên Android — Package Name, mặc dù về chức năng cả hai đều thực hiện cùng một vai trò: đảm bảo tính duy nhất của ứng dụng trên thiết bị và trong cửa hàng.

Mục đích của Bundle ID

Hệ điều hành sử dụng Bundle ID để phân biệt các ứng dụng trên thiết bị. Hai ứng dụng có cùng định danh không thể được cài đặt đồng thời — hệ thống coi chúng là cùng một sản phẩm. Các cửa hàng ứng dụng cũng kiểm tra tính duy nhất của Bundle ID khi xuất bản.

Lịch sử và tiêu chuẩn đặt tên

Apple đã giới thiệu Bundle ID khi phát hành iOS SDK vào năm 2008. Định dạng ký hiệu tên miền ngược được vay mượn từ Java (quy ước đặt tên gói), nơi nó được sử dụng để ngăn chặn xung đột tên lớp. Google đã áp dụng thực hành này cho Android, đảm bảo tính nhất quán trên cả hai hệ sinh thái di động.

Nền tảngTên trườngVí dụ
iOS/macOSBundle Identifiercom.example.myapp
AndroidPackage Namecom.example.myapp
watchOSBundle Identifiercom.example.myapp.watchkit
tvOSBundle Identifiercom.example.myapp.tvos

Định dạng Bundle ID hoạt động như thế nào

Bundle ID bao gồm nhiều đoạn được phân cách bằng dấu chấm. Phần đầu tiên là định danh nhà phát triển hoặc công ty (com, org, net). Phần thứ hai là tên miền công ty (example, google, apple). Các đoạn tiếp theo chỉ định tên ứng dụng và nền tảng.

Cấu trúc Bundle ID

Một Bundle ID điển hình trông giống như com.company.appname. Apple khuyên dùng ký hiệu tên miền ngược để đảm bảo tính duy nhất toàn cầu. Nếu công ty không có tên miền, việc sử dụng email được cho phép: com.example.myapp hoặc org.example.myapp.

  • Đoạn 1 — TLD theo thứ tự ngược: com, org, io, net
  • Đoạn 2 — tên miền công ty hoặc nhà phát triển: google, apple, mycompany
  • Đoạn 3 — tên ứng dụng: maps, mail, notes
  • Bổ sung — nền tảng hoặc tiện ích mở rộng: watchkit, todaywidget

Wildcard Bundle ID

Apple hỗ trợ Wildcard Bundle ID — một mẫu định danh có dấu hoa thị: com.example.*. Mẫu này cho phép sử dụng một App ID cho nhiều ứng dụng của cùng một công ty. Wildcard ID thuận tiện trong quá trình phát triển nhưng không được khuyên dùng cho sản xuất vì nó hạn chế việc sử dụng một số dịch vụ của Apple.

Giới hạn wildcard: Thông báo Push, CloudKit, Mua hàng trong ứng dụng (In-App Purchase) và Game Center yêu cầu Bundle ID rõ ràng (explicit). Khi sử dụng mẫu com.example.*, các dịch vụ này không khả dụng. Đối với ứng dụng sản xuất, luôn sử dụng Bundle ID rõ ràng để đảm bảo đầy đủ chức năng của tất cả các dịch vụ Apple.

Ngoài wildcard, Apple còn hỗ trợ định danh tiền tố được gán cho nhóm phát triển khi đăng ký Chương trình nhà phát triển Apple. Tiền tố (Team ID) được tự động thêm vào tất cả App ID và hồ sơ cấp quyền. Hai Team ID khác nhau có thể tạo cùng một Bundle ID, nhưng trên thiết bị chúng được coi là các ứng dụng khác nhau.

Đăng ký Bundle ID trong bảng điều khiển

Đăng ký Bundle ID là một bước bắt buộc trước khi xuất bản ứng dụng. Trong hệ sinh thái Apple, đăng ký được thực hiện trên Cổng thông tin nhà phát triển Apple qua phần Certificates, Identifiers & Profiles. Trong Google Play, Bundle ID được chỉ định khi tạo ứng dụng trong bảng điều khiển nhà phát triển.

Đăng ký trên Cổng thông tin nhà phát triển Apple

Trên cổng thông tin Apple Developer, chọn phần Identifiers, nhấp vào nút Register và chỉ định loại App ID. Nhập tên Bundle ID chính xác và chọn các khả năng cần thiết: Push Notifications, CloudKit, Sign in with Apple. Sau khi đăng ký, định danh có sẵn để tạo hồ sơ cấp quyền.

swift
// Kiểm tra Bundle ID trong mã ứng dụng
let bundleID = Bundle.main.bundleIdentifier
print("Current Bundle ID: \(bundleID ?? "unknown")")

// Kiểm tra Bundle ID cho điều kiện xây dựng
if bundleID == "com.example.app.production" {
    // Cấu hình sản xuất
    Analytics.shared.configure(.production)
}

Đăng ký trong Google Play Console

Google Play Console không yêu cầu đăng ký Bundle ID trước. Định danh được chỉ định trong tệp build.gradle của mô-đun ứng dụng và phải là duy nhất trong toàn bộ Google Play. Sau khi tạo ứng dụng, không thể thay đổi Package Name, vì vậy hãy chọn định danh một cách cẩn thận và kiểm tra tính duy nhất của nó thông qua tìm kiếm trên Google Play. Google không giải phóng định danh của các ứng dụng đã bị xóa, vì vậy một Bundle ID đã được sử dụng vẫn không khả dụng cho các nhà phát triển khác.

Khi đăng ký trong App Store Connect, bạn phải chỉ định Bundle ID từ tập hợp các định danh đã đăng ký hiện có. Nếu định danh chưa được đăng ký trên cổng thông tin Apple Developer, hệ thống sẽ đề nghị tạo tự động. Sau khi đăng ký, Bundle ID được liên kết với nhóm và không thể được chuyển sang tài khoản nhà phát triển khác nếu không liên hệ với bộ phận hỗ trợ của Apple. Mỗi Bundle ID có thể có nhiều hồ sơ cấp quyền cho các môi trường khác nhau: Development, Ad Hoc, App Store.

Khi đăng ký Bundle ID cho ứng dụng iOS có tiện ích mở rộng, mỗi thành phần phải được đăng ký riêng biệt. Tiện ích mở rộng widget, bàn phím, Notification Service và Watch App có định danh riêng của chúng bắt nguồn từ định danh chính. App Store Connect nhóm chúng lại khi tạo App Record, cho phép xuất bản tất cả các thành phần dưới dạng một ứng dụng duy nhất.

Cấu hình Bundle ID trong dự án Xcode

Cấu hình Bundle ID trong Xcode được thực hiện ở một số nơi: Info.plist, Build Settings và Signing & Capabilities. Trường trung tâm là Bundle Identifier trong mục tiêu ứng dụng. Tất cả các dịch vụ Apple, từ thông báo Push đến CloudKit, đều được liên kết với định danh này. Bundle ID được chỉ định không chính xác sẽ dẫn đến lỗi ký và không thể xuất bản lên App Store.

Thay đổi Bundle ID trong Xcode

xml
<!-- Info.plist — Bundle ID cơ sở của dự án -->
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>

<!-- Build Settings — biến PRODUCT_BUNDLE_IDENTIFIER -->
<!-- Debug: com.example.app.dev -->
<!-- Release: com.example.app -->

Xcode sử dụng biến PRODUCT_BUNDLE_IDENTIFIER trong Build Settings. Các giá trị khác nhau có thể được đặt cho các cấu hình xây dựng khác nhau: com.example.app.dev cho Debug và com.example.app cho Release. Điều này thuận tiện cho việc cài đặt phiên bản phát triển cùng với phiên bản sản xuất trên cùng một thiết bị để thử nghiệm.

Cấu hình đa mục tiêu

Nếu ứng dụng có tiện ích mở rộng (Notification Service, Widget, Watch App), mỗi tiện ích mở rộng sẽ nhận được Bundle ID riêng với hậu tố. Ứng dụng chính: com.example.app. Tiện ích mở rộng widget: com.example.app.widget. Watch App: com.example.app.watchkit. Mỗi định danh được đăng ký riêng biệt trên Cổng thông tin nhà phát triển Apple và nhận hồ sơ cấp quyền riêng. Xcode tự động quản lý các phụ thuộc này trong quá trình xây dựng.

Sự khác biệt giữa App Bundle ID và Package Name

App Bundle ID (Apple) và Package Name (Google) là các thực thể tương tự với cùng mục đích nhưng quy tắc sử dụng khác nhau trong hệ sinh thái iOS và Android. Cả hai định danh đều sử dụng ký hiệu tên miền ngược và không thể thay đổi sau khi xuất bản trong các cửa hàng ứng dụng chính thức.

Khác biệt chức năng

Trong hệ sinh thái Apple, Bundle ID được liên kết với hồ sơ cấp quyền và chứng chỉ. Khi thay đổi nhóm phát triển, Bundle ID có thể được chuyển giữa các tài khoản thông qua App Store Connect. Trong Android, Package Name được liên kết chặt chẽ với ứng dụng trong Google Play và không thể được chuyển giữa các tài khoản nhà phát triển.

Đặc điểmiOS Bundle IDAndroid Package Name
Độ dài tối đaKhông giới hạn150 ký tự
Dấu phân cách đoạnDấu chấm (.)Dấu chấm (.)
Ký tự được phépA-Z, a-z, 0-9, dấu chấm, dấu gạch nốiA-Z, a-z, 0-9, dấu chấm, dấu gạch dưới
WildcardĐược hỗ trợ (*)Không được hỗ trợ
Sử dụng trong mãBundle.main.bundleIdentifierBuildConfig.APPLICATION_ID

Mặc dù có sự khác biệt, cả hai định danh đều đóng vai trò quan trọng: nếu không có chúng, không thể xuất bản ứng dụng trong cửa hàng chính thức. Khuyến nghị cho các dự án đa nền tảng — sử dụng cùng một định danh trong phiên bản iOS và Android để đơn giản hóa tích hợp với Firebase, Analytics và các dịch vụ khác. Điều này cũng đơn giản hóa việc điều hướng cho nhóm phát triển: một định danh cho cả hai dự án giảm nhầm lẫn khi thiết lập CI/CD và cấu hình môi trường.

Khi phát triển với Flutter hoặc React Native, một định danh duy nhất đặc biệt quan trọng vì cơ sở mã được chia sẻ và nhiều công cụ xây dựng tự động mong đợi cùng một tên gói cho cả hai nền tảng. Một dự án Firebase cũng được liên kết với một định danh duy nhất cho iOS và Android, đơn giản hóa việc thiết lập phân tích và báo cáo sự cố.

Câu hỏi thường gặp

Có thể thay đổi Bundle ID sau khi xuất bản ứng dụng không?

Thay đổi Bundle ID sau khi xuất bản trên App Store hoặc Google Play là không thể. Hệ thống sẽ coi định danh mới là một ứng dụng hoàn toàn khác. Để cập nhật sản phẩm hiện có, Bundle ID phải không thay đổi trong suốt vòng đời ứng dụng.

Điều gì xảy ra nếu hai ứng dụng có cùng Bundle ID?

Thiết bị iOS hoặc Android sẽ không cho phép cài đặt ứng dụng thứ hai có cùng định danh lên trên ứng dụng thứ nhất. Hệ thống sẽ hiển thị lỗi và đề nghị xóa ứng dụng hiện tại. Trong các cửa hàng, việc xuất bản với Bundle ID trùng lặp cũng sẽ bị chặn.

Làm thế nào để chọn Bundle ID chính xác cho dự án mới?

Sử dụng ký hiệu tên miền ngược của công ty bạn: com.companyname.appname. Tránh dấu gạch nối và các ký tự đặc biệt. Nếu ứng dụng có tiện ích mở rộng, hãy thêm hậu tố được phân cách bằng dấu chấm. Đảm bảo định danh là duy nhất và không bị nhà phát triển khác sử dụng.

Mỗi tiện ích mở rộng ứng dụng có cần Bundle ID riêng không?

Có, mỗi tiện ích mở rộng — widget, Watch App, Notification Service — yêu cầu Bundle ID riêng. Các định danh tạo thành một hệ phân cấp: com.example.app là cơ sở, com.example.app.widget cho widget, com.example.app.watchkit cho Watch. Tất cả được đăng ký riêng biệt trên Cổng thông tin nhà phát triển Apple và chia sẻ App ID chung với ứng dụng cha.

Sự khác biệt giữa Bundle ID và App ID trên cổng thông tin Apple Developer là gì?

Bundle ID là một chuỗi định danh trong mã ứng dụng. App ID là một đối tượng trong Cổng thông tin nhà phát triển Apple kết hợp Bundle ID với một tập hợp các dịch vụ được kích hoạt (capabilities). App ID được tạo dựa trên Bundle ID và được sử dụng để tạo hồ sơ cấp quyền.

Tóm tắt

  • App Bundle ID — định danh ứng dụng duy nhất trong hệ sinh thái iOS và Android
  • Định dạng dựa trên ký hiệu tên miền ngược: com.company.appname
  • Thay đổi Bundle ID sau khi xuất bản là không thể nếu không tạo ứng dụng mới trong cửa hàng
  • Wildcard Bundle ID com.example.* thuận tiện cho phát triển nhưng không tương thích với Push, CloudKit và Mua hàng trong ứng dụng
  • Tiện ích mở rộng nhận Bundle ID riêng với hậu tố phân cách bằng dấu chấm
  • Đăng ký được thực hiện trên Cổng thông tin nhà phát triển Apple và Google Play Console tương ứng
  • Khuyến nghị — chọn định danh một cách thận trọng, kiểm tra tính duy nhất trước khi xuất bản

Chúng tôi sẽ phát triển ứng dụng di động chìa khóa trao tay

IT Sectr tạo các ứng dụng iOS và Android cho các công ty khởi nghiệp và doanh nghiệp từ năm 2017. Chúng tôi sẽ tư vấn và đề xuất giải pháp tốt nhất cho bạn.

Thảo luận dự án

Đọc thêm