So sánh Info.plist và Entitlements qua ví dụ minh họa

Khi phát triển ứng dụng iOS, việc hiểu rõ sự khác biệt giữa Info.plist và Entitlements là rất quan trọng. Dưới đây là các ví dụ cụ thể giúp làm rõ vai trò của từng file.

Ví dụ về Info.plist

Xét một ứng dụng chỉnh sửa ảnh cần truy cập thư viện ảnh và hỗ trợ phát nhạc nền. Trong trường hợp này, file Info.plist sẽ chứa các cài đặt sau:

  1. Quyền truy cập thư viện ảnh:
    • NSPhotoLibraryUsageDescription: Mô tả lý do ứng dụng cần truy cập thư viện ảnh. Hệ thống sẽ hiển thị chuỗi này cho người dùng khi ứng dụng yêu cầu quyền truy cập lần đầu.
  2. Phát nhạc nền:
    • UIBackgroundModes: Một mảng chứa giá trị audio, cho phép ứng dụng tiếp tục phát âm thanh ngay cả khi người dùng chuyển sang ứng dụng khác.

Cấu hình chi tiết trong Info.plist

  • Tên khóa: NSPhotoLibraryUsageDescription
    • Loại: Chuỗi ký tự (String)
      • Mô tả: Chuỗi này được hiển thị cho người dùng khi ứng dụng yêu cầu quyền truy cập thư viện ảnh để giải thích mục đích sử dụng.
    • Giá trị ví dụ: "Chúng tôi cần truy cập thư viện ảnh để bạn có thể chọn ảnh để chỉnh sửa."
  • Tên khóa: UIBackgroundModes
    • Loại: Mảng (Array)
      • Mô tả: Chỉ định các loại tác vụ mà ứng dụng muốn chạy ở chế độ nền. Giá trị audio cho phép phát nhạc hoặc ghi âm khi ứng dụng không hoạt động.
    • Giá trị ví dụ: Thêm chuỗi audio vào mảng.
<?xml version="1.0" encoding="UTF-8"?>
<plist version="1.0">
<dict>
    <!-- Tên ứng dụng -->
    <key>CFBundleDisplayName</key>
    <string>Ứng dụng ảnh của tôi</string>

    <!-- Mô tả quyền truy cập thư viện ảnh -->
    <key>NSPhotoLibraryUsageDescription</key>
    <string>Chúng tôi cần truy cập thư viện ảnh để bạn có thể chọn ảnh để chỉnh sửa.</string>

    <!-- Các tác vụ chạy nền -->
    <key>UIBackgroundModes</key>
    <array>
        <string>audio</string>
    </array>
</dict>
</plist>

Ví dụ về Entitlements

Tiếp tục ví dụ trên, giả sử ứng dụng cũng cho phép đồng bộ hóa tác phẩm chỉnh sửa lên iCloud và chia sẻ dữ liệu với một ứng dụng video editor khác thuộc cùng nhà phát triển. Trong trường hợp này, file Entitlements sẽ chứa:

  1. Đồng bộ hóa tài liệu iCloud:
    • com.apple.developer.icloud-services: Chỉ định dịch vụ iCloud như CloudDocuments để lưu trữ dữ liệu lên iCloud.
    • com.apple.developer.ubiquity-container-identifiers: Xác định container iCloud dùng để lưu trữ dữ liệu ứng dụng.
  2. Nhóm ứng dụng (App Groups):
    • com.apple.security.application-groups: Cho phép các ứng dụng trong cùng nhóm chia sẻ dữ liệu như thiết lập người dùng hoặc tài nguyên chung.

Cấu hình chi tiết trong Entitlements

  • Tên khóa: com.apple.developer.icloud-services
    • Loại: Mảng (Array)
      • Mô tả: Chỉ định dịch vụ iCloud mà ứng dụng sử dụng. Ví dụ: CloudDocuments cho phép lưu trữ tài liệu lên iCloud Drive.
    • Giá trị ví dụ: CloudDocuments
  • Tên khóa: com.apple.developer.ubiquity-container-identifiers
    • Loại: Mảng (Array)
      • Mô tả: Danh sách các container iCloud cho ứng dụng. Mỗi container là nơi lưu trữ riêng biệt dữ liệu của ứng dụng.
    • Giá trị ví dụ: iCloud.com.example.myphotoapp
  • Tên khóa: com.apple.security.application-groups
    • Loại: Mảng (Array)
      • Mô tả: Cho phép các ứng dụng trong cùng nhóm chia sẻ dữ liệu thông qua một ID nhóm duy nhất.
    • Giá trị ví dụ: group.com.example.sharedresources
<?xml version="1.0" encoding="UTF-8"?>
<plist version="1.0">
<dict>
    <!-- Dịch vụ iCloud -->
    <key>com.apple.developer.icloud-services</key>
    <array>
        <string>CloudDocuments</string>
    </array>

    <!-- Container iCloud -->
    <key>com.apple.developer.ubiquity-container-identifiers</key>
    <array>
        <string>iCloud.com.example.myphotoapp</string>
    </array>

    <!-- Nhóm ứng dụng -->
    <key>com.apple.security.application-groups</key>
    <array>
        <string>group.com.example.sharedresources</string>
    </array>
</dict>
</plist>

Kết luận

Info.plist chủ yếu dùng để cấu hình thông tin cơ bản và hành vi ứng dụng như quyền truy cập và tác vụ nền. Trong khi đó, Entitlements tập trung vào các quyền an toàn và khả năng truy cập dịch vụ Apple như iCloud hay App Groups. Hiểu rõ sự khác biệt này giúp quản lý hiệu quả hơn các ứng dụng iOS.

Thẻ: Info.plist Entitlements iOS permissions iCloud

Đăng vào ngày 29 tháng 9 lúc 09:50