Entitlements sa pag-develop ng iOS: ano ito, anu-ano ang mga uri at paano naka-configure

May-akda: IT Sectr Nai-publish: 2026-05-18 Oras ng pagbabasa: 8 min

Ang Entitlements ay mga digital na karapatan at pahintulot na itinatalaga sa app sa yugto ng pagpirma ng code at tumutukoy sa pag-access sa mga protektadong tampok ng Apple operating system. Hindi tulad ng mga pahintulot ng user, ang Entitlements ay sinusuri ng system sa pagsisimula ng app at hindi mababago ng user. Ayon sa Apple Developer Documentation (2025), ang tamang configuration ng Entitlements ay kinakailangan para sa paggamit ng iCloud, Push notification at App Groups. Entitlements ay isang pangunahing elemento ng modelo ng seguridad ng iOS at macOS.

Mga Pangunahing Punto

  • Entitlements — mga digital na pahintulot na naka-embed sa pirma ng app na tumutukoy sa pag-access sa mga protektadong iOS at macOS function.
  • Pagkakaiba sa Permissions — ang Entitlements ay sinusuri ng system sa pagsisimula at hindi hinihingi sa user; ang mga pahintulot ay hinihingi sa runtime sa pamamagitan ng system dialogs.
  • Capabilities — pinapangkat ng Xcode ang Entitlements sa Capabilities: Push Notifications, iCloud, App Groups, In-App Purchase at iba pa.
  • Entitlements File — (.entitlements) — XML file sa Xcode project na naglalaman ng listahan ng mga karapatan sa key-value format, na pinirmahan ng Apple.
  • Seguridad — ang entitlements ay sinusuri sa yugto ng code signing; ang pekeng entitlements sa naka-install na app ay sumisira sa digital signature at hinaharangan ang pagsisimula.

Ano ang Entitlements?

Entitlements (isinalin mula sa Ingles — "mga karapatan") — ay isang key-value pair na kasama sa code signature ng app sa yugto ng pag-build at tumutukoy kung aling mga system function at data ang maaaring ma-access ng app. Ang Entitlements ay naka-embed sa modelo ng seguridad ng Apple mula nang lumitaw ang iOS SDK at kinakailangan para sa lahat ng app na ipinamamahagi sa pamamagitan ng App Store.

Ang konsepto ng Entitlements ay naiiba sa tradisyonal na mga pahintulot (permissions) sa Android. Kung ang mga pahintulot ng Android ay hinihingi mula sa user sa sandaling unang paggamit ng function, ang Entitlements sa iOS ay sinusuri ng system sa pagsisimula ng app batay sa digital signature. Hindi maaaring bawiin o baguhin ng user ang isang entitlement — ang karapatang ito ay ibinibigay sa developer sa pamamagitan ng App Store Connect at inilalagay sa profile ng pagpirma.

Bawat entitlement ay may mahigpit na tinukoy na layunin at format. Halimbawa, ang com.apple.security.application-groups ay nagpapahintulot ng pag-access sa shared container para sa isang set ng mga app ng parehong developer, at ang aps-environment ay nag-a-activate ng suporta para sa Push notification. Manu-manong nire-review ng Apple ang mga kahilingan para sa entitlements sa proseso ng App Review, na pumipigil sa pag-abuso sa mga karapatan.

Mga Uri ng Entitlements sa iOS

Ang Entitlements ay inuuri ayon sa functional na layunin sa ilang kategorya. Mga Serbisyo ng System — iCloud, Push Notifications, Siri. Seguridad at Data — Keychain Access Groups, App Groups, Data Protection. Network at Komunikasyon — Multipath TCP, VPN, Hotspot Configuration. Mga Kakayahang Hardware — Camera, Microphone, Bluetooth (sa pamamagitan ng kaugnay na capabilities).

Capabilities at Service Entitlements

Pinapangkat ng Xcode ang mga kaugnay na entitlements sa Capabilities — mga high-level switch sa tab na Signing & Capabilities. Ang pag-activate ng Capability ay awtomatikong nagdaragdag ng mga kinakailangang entitlements sa .entitlements file. Halimbawa, ang pag-activate ng Capability Push Notifications ay nagdaragdag ng entitlement aps-environment na may value na development o production, at ang pag-activate ng iCloud ay nagdaragdag ng set ng mga entitlements para sa CloudKit at Key-Value storage.

Ang ilang capabilities ay nangangailangan ng karagdagang configuration sa Apple Developer portal. Halimbawa, para sa App Groups kailangang magrehistro ng group ID sa portal, pagkatapos nito ay magiging available para sa pagpili sa Xcode. Para sa Push Notifications kailangang bumuo ng APNs key o certificate. Kung wala ang mga paunang hakbang na ito, hindi gagana ang entitlement kahit na may tamang .entitlements file.

App Groups at Keychain Access

Ang entitlement com.apple.security.application-groups ay nagpapahintulot sa maraming app ng parehong developer na magkaroon ng shared container sa file system. Ito ay ginagamit para sa pagbabahagi ng data sa pagitan ng pangunahing app at mga extension (Widget, Watch App, Share Extension). Lahat ng app mula sa isang grupo ay maaaring magbasa at magsulat ng mga file sa shared directory na /Library/Group Containers/.

Keychain Access Groups (key keychain-access-groups) — isa pang mahalagang entitlement na nagpapahintulot sa mga app mula sa isang grupo ng shared access sa mga elemento ng Keychain. Ito ay kritikal para sa pagpapatupad ng unified authentication: ang user ay nagla-log in sa isang app at awtomatikong nakakakuha ng access sa parehong account sa ibang app nang hindi muling naglalagay ng password.

Paano I-configure ang Entitlements

Ang configuration ng Entitlements ay ginagawa sa Xcode sa tab na Signing & Capabilities sa mga setting ng target. Pinipili ng developer ang mga kinakailangang Capabilities mula sa listahan, at awtomatikong ginagawa o ina-update ng Xcode ang .entitlements file. Ang file na ito ay ini-imbak sa proyekto sa XML format na may plist structure at naglalaman ng lahat ng entitlement key para sa target na ito.

objective-c
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
  "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>com.apple.security.application-groups</key>
    <array>
        <string>group.com.example.shared</string>
    </array>
    <key>aps-environment</key>
    <string>development</string>
    <key>keychain-access-groups</key>
    <array>
        <string>$(AppIdentifierPrefix)com.example.keychain</string>
    </array>
</dict>
</plist>

Sa manu-manong paggawa ng entitlement file, mahalagang sundin ang format ng key at mga prefix. Ang Apple Entitlements ay gumagamit ng reverse domain style (com.apple.*). Posible rin ang custom na entitlements para sa sariling layunin, ngunit dapat na nakarehistro sa developer portal. Nagbibigay ang Xcode ng auto-completion para sa lahat ng standard na entitlement key.

Para sa pag-debug ng Entitlements, gamitin ang command na codesign sa macOS terminal. Ang command na codesign -d --entitlements :- <path_sa_app> ay nagpapakita ng lahat ng entitlements kung saan pinirmahan ang app. Ito ay kapaki-pakinabang para sa pag-diagnose ng mga problema: kung ang entitlement ay wala sa output, ang app ay hindi makakakuha ng access sa kaukulang function anuman ang mga setting sa Xcode.

Manu-manong paggawa ng entitlement file

Kahit na awtomatikong binubuo ng Xcode ang entitlement file kapag nag-a-activate ng Capabilities, ang mga bihasang developer ay madalas na gumagawa o nag-e-edit nito nang manu-mano para sa fine-tuning. Ang file ay may extension na .entitlements at plist (XML) format. Maaari itong magdagdag ng custom na entitlement key na hindi available sa Xcode interface, o pagsamahin ang mga entitlements mula sa iba't ibang capabilities sa isang file.

Sa manu-manong pag-edit, mahalagang subaybayan ang syntactic correctness ng XML. Ang pagkakamali sa plist structure ay magiging sanhi upang hindi mailapat ang entitlements sa pagpirma. Sinusuri ng Xcode ang .entitlements file sa compilation stage at nagpapakita ng error sa maling format. Para sa mga kumplikadong proyekto na may maraming target at extension, inirerekomenda na mag-imbak ng shared entitlement key sa hiwalay na mga file at i-import ang mga ito sa pamamagitan ng Build Settings.

cpp
// cli: pagsusuri ng entitlements ng naka-install na app
codesign -d --entitlements :- /Applications/Safari.app

// Halimbawang output ay naglalaman ng listahan ng mga aktibong entitlements
<dict>
    <key>com.apple.security.ts.apple-wifi</key>
    <true/>
    <key>com.apple.security.network.client</key>
    <true/>
</dict>

Entitlements at Seguridad ng App

Ang Entitlements ay may pangunahing papel sa modelo ng seguridad ng Apple. Dahil ang entitlements ay bahagi ng digital signature ng app, ang pagpeke sa mga ito ay imposible nang walang muling pagpirma ng code. Sinusuri ng Apple ang entitlements sa maraming antas: sa pag-build, pinipirmahan ng Xcode ang entitlements kasama ang executable file; sa pag-install, sinusuri ng system ang integridad ng pirma; sa pagsisimula, niverify muli ang entitlements.

Isa sa mga mahalagang kinakailangan sa seguridad ay ang prinsipyo ng minimal na entitlement. Dapat i-activate lamang ng developer ang mga entitlements na talagang ginagamit sa app. Ang sobrang entitlements ay nagpapataas ng attack surface at maaaring magdulot ng pagtanggi ng app sa App Review. Malinaw na sinusuri ng Apple ang pagtutugma ng entitlements sa functionality ng app.

Ang ilang entitlements ay itinuturing na sensitive at nangangailangan ng karagdagang pag-apruba ng Apple. Kabilang dito ang: com.apple.developer.healthkit (HealthKit), com.apple.developer.passkit (Wallet), com.apple.developer.authentication-services.authentication (Sign in with Apple) at com.apple.developer.nfc.readersession.formats (NFC). Para makuha ang mga entitlement na ito, kailangang bigyang-katwiran ang kanilang pangangailangan sa proseso ng App Review.

Sa pagtatrabaho sa entitlements, mahalagang isaalang-alang ang mga pagkakaiba sa pagitan ng iOS at macOS. Ang desktop app ng macOS (Sandboxed) ay may mas malawak na set ng entitlements kumpara sa iOS. Halimbawa, ang entitlement com.apple.security.temporary-exception.* ay nagpapahintulot ng pansamantalang pag-bypass sa sandbox para sa ilang operasyon — sa iOS, ang mga naturang entitlements ay ganap na wala.

Entitlements at Provisioning Profile

Ang Entitlements ay malapit na nauugnay sa mga profile ng pagpirma (Provisioning Profiles). Ang profile ng pagpirma ay isang file na nag-uugnay sa certificate ng developer, listahan ng mga pinapayagang device at set ng entitlements para sa isang partikular na app. Sa pag-install ng app, inihahambing ng system ang entitlements sa code sa entitlements sa profile ng pagpirma. Kung ang entitlement ay nasa code ngunit wala sa profile, ang app ay hindi makakakuha ng access sa kaukulang function.

Para sa pag-diagnose ng mga problema sa entitlements, suriin muna ang profile ng pagpirma. Awtomatikong bumubuo ang Xcode ng mga profile batay sa napiling capability sa Apple Developer portal. Kung ang capability ay idinagdag sa Xcode ngunit hindi aktibo sa portal, ang app ay mag-crash na may error sa pagpirma kapag sinusubukang gumamit ng protektadong function.

Mga Madalas Gamitin na Entitlements

Tingnan natin ang mga pinaka-madalas gamitin na entitlements sa iOS development. aps-environment (Push Notifications) — kinakailangan para sa pagpapadala ng push notification. com.apple.developer.ubiquity-container-identifiers (iCloud) — para sa pag-sync ng data sa pamamagitan ng CloudKit. com.apple.security.application-groups — para sa pagbabahagi ng data sa pagitan ng mga app at extension. com.apple.developer.associated-domains — para sa Universal Links at Handoff.

Para sa bawat isa sa mga entitlement na ito ay may mahigpit na pamamaraan ng configuration. Push Notifications ay nangangailangan ng pagbuo ng APNs key sa Apple Developer portal at pag-activate ng capability sa Xcode. Pagkatapos nito, awtomatikong idinaragdag ang entitlement sa .entitlements file. Ang iCloud ay nangangailangan ng configuration ng container sa portal at pagpili nito sa Xcode mula sa dropdown list.

Associated Domains — entitlement na nag-uugnay ng app sa isang web domain. Ginagamit ito para sa Universal Links (deep link na direktang nagbubukas sa app) at Handoff (pagpapatuloy ng trabaho sa ibang Apple device). Ang value ng entitlement ay naglalaman ng array ng mga string sa format na applinks:example.com. Para sa paggana, kailangan ang paglalagay ng apple-app-site-association file sa server.

Talaan ng mga sikat na entitlements at ang kanilang mga layunin:

Entitlement KeyLayuninNangangailangan ng Review
aps-environmentPush notificationHindi
com.apple.developer.ubiquity-*iCloud syncHindi
application-groupsShared app containerHindi
com.apple.developer.healthkitHealthKit dataOo
com.apple.developer.nfc.*NFC tag readingOo
associated-domainsUniversal LinksHindi

Mga Madalas Itanong

Ano ang pagkakaiba ng Entitlements sa Permissions sa iOS?

Entitlements ay mga static na karapatan na naka-embed sa pirma ng app at sinusuri ng system sa pagsisimula. Ang Permissions ay mga dynamic na pahintulot na hinihingi sa user sa runtime (camera, geolocation).

Paano suriin ang Entitlements ng naka-install na app?

Gamitin ang command na codesign -d --entitlements sa macOS terminal. Para sa mga app mula sa App Store, ang entitlement ay sinusuri sa pamamagitan ng ProvisionQL utility o sa pamamagitan ng Xcode Organizer.

Maaari bang baguhin ang Entitlements pagkatapos ng publikasyon?

Ang pagbabago ng entitlements ay nangangailangan ng bagong build at muling pagpirma ng app. Kung ang entitlement ay nangangailangan ng pag-apruba ng Apple, kakailanganing dumaan muli sa App Review. Kung walang muling pagpirma, ang pagbabago ng entitlements ay imposible.

Ano ang Entitlements File sa Xcode?

Ang .entitlements file — isang XML document sa plist format na naka-imbak sa Xcode project. Naglalaman ito ng listahan ng lahat ng entitlements ng app sa structured form at pinirmahan kasama ng executable file.

Ano ang Capabilities sa Xcode?

Capabilities ay mga high-level switch sa tab na Signing & Capabilities sa Xcode. Ang pag-activate ng capability ay awtomatikong nagdaragdag ng mga kaukulang entitlements sa .entitlements file at nagko-configure ng profile ng pagpirma.

Buod

  • Entitlements — mga digital na karapatan ng app na gumamit ng mga protektadong system function ng iOS at macOS, naka-embed sa code signature.
  • Pagkakaiba sa mga pahintulot — ang entitlements ay sinusuri ng system sa pagsisimula batay sa pirma, hindi hinihingi sa user at hindi mababawi.
  • Capabilities — pagpapangkat ng mga entitlements sa Xcode para sa Push Notifications, iCloud, App Groups, In-App Purchase at iba pang function.
  • Pagsusuri — sa pamamagitan ng codesign command sa macOS terminal para sa pag-diagnose ng mga naka-install na karapatan ng app.
  • Sensitive entitlements — HealthKit, NFC, PassKit ay nangangailangan ng karagdagang pag-apruba ng Apple sa pamamagitan ng App Review.
  • Prinsipyo ng minimal na karapatan — i-activate lamang ang mga kinakailangang entitlements upang mabawasan ang attack surface at matagumpay na makapasa sa review.
  • Seguridad — ang entitlements ay protektado ng digital signature; ang pagpeke ay imposible nang walang muling pagpirma ng buong app.

Gagawa kami ng mobile application na turnkey

Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.

Pag-usapan ang proyekto

Basahin din