[๐ŸŒŸ] Screen Time API ๊ถŒํ•œ ์„ค์ • ๋„์ „ํ•˜๊ธฐ (1) - entitlements ํŒŒ์ผ

Edenยท2025๋…„ 1์›” 23์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
101/129
post-thumbnail

STAR ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉฐ Screen Time API๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๊ถŒํ•œ ์„ค์ •์ด ํ•„์š”ํ–ˆ๋‹ค. ์ด์— ์ฐธ๊ณ ํ•  ๋งŒํ•œ ์กฐ์–ธ์„ ๊ตฌํ•˜๊ณ ์ž ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ ์ค‘์ธ Max์—๊ฒŒ ๋„์›€์„ ์š”์ฒญํ–ˆ๋‹ค.

Max๋Š” ์นด๋ฉ”๋ผ ๊ถŒํ•œ ์„ค์ • ๊ฒฝํ—˜์ด ์žˆ๋Š”๋ฐ, ์ด๋ฅผ ์œ„ํ•ด Info.plist์— ๊ด€๋ จ ํ‚ค๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ๋งŒ์œผ๋กœ ์ถฉ๋ถ„ํ–ˆ๋‹ค๊ณ  ํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋‚˜๋Š” Screen Time API์˜ ๊ฒฝ์šฐ entitlements ํŒŒ์ผ์„ ์ถ”๊ฐ€๋กœ ์„ค์ •ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์•Œ๊ณ  ์žˆ์—ˆ๊ธฐ์—, ๋‘ ๊ถŒํ•œ ์„ค์ •์˜ ์ฐจ์ด๊ฐ€ ๊ถ๊ธˆํ•ด์กŒ๋‹ค.

Max๋‹˜์€ entitlements ํŒŒ์ผ์— ๋Œ€ํ•ด ๋ชจ๋ฅด๊ณ  ์žˆ์–ด์„œ, ๋•๋ถ„์— ์นด๋ฉ”๋ผ ๊ถŒํ•œ์€ ์‚ฌ์šฉ์ž์˜ ๋™์˜๋งŒ ๋ฐ›์œผ๋ฉด ์ถฉ๋ถ„ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. ๋ฐ˜๋ฉด, Screen Time API๋Š” ์• ํ”Œ ์‹œ์Šคํ…œ๊ณผ์˜ ์ถ”๊ฐ€์ ์ธ ์ธ์ฆ์ด ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— entitlements ํŒŒ์ผ์ด ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•˜๋‹ค๋Š” ์ ์„ ํ™•์ธํ–ˆ๋‹ค.

์ด๋ฒˆ ์กฐ์–ธ๊ณผ ๋น„๊ต๋ฅผ ํ†ตํ•ด ์• ํ”Œ์˜ ๊ถŒํ•œ ๊ด€๋ฆฌ ์ฒด๊ณ„์™€ ๊ฐ ๊ถŒํ•œ์˜ ์„ค์ • ๋ฐฉ์‹์— ๋Œ€ํ•ด ๋”์šฑ ๋ช…ํ™•ํžˆ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.


.entitlements ํŒŒ์ผ ์ƒ์„ฑ

entitlements ํŒŒ์ผ์€ iOS์™€ macOS ์•ฑ์—์„œ ํŠน์ • ์‹œ์Šคํ…œ ๊ธฐ๋Šฅ์ด๋‚˜ ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•  ๊ถŒํ•œ์„ ์„ ์–ธํ•˜๋Š” ํŒŒ์ผ์ด๋‹ค. ์ด ํŒŒ์ผ์€ ์•ฑ์˜ ๊ถŒํ•œ๊ณผ ๋ณด์•ˆ์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค.


1. entitlements ํŒŒ์ผ์ด๋ž€?

entitlements๋Š” ์•ฑ์ด ํŠน์ • ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก iOS ์‹œ์Šคํ…œ์— ๊ถŒํ•œ์„ ์•Œ๋ฆฌ๋Š” ์„ค์ • ํŒŒ์ผ์ด๋‹ค. ์•ฑ์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๋ฏผ๊ฐํ•œ ๊ธฐ๋Šฅ์ด๋‚˜ ์• ํ”Œ ์„œ๋น„์Šค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ ์–ธํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์— ์‚ฌ์šฉ๋œ๋‹ค.

์ฃผ์š” ์‚ฌ์šฉ ์‚ฌ๋ก€

  • Push Notifications
  • iCloud
  • Background Modes
  • App Groups
  • HealthKit, HomeKit
  • Screen Time (FamilyControls Framework)

์ด๋Ÿฐ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด entitlements ํŒŒ์ผ์„ ํ†ตํ•ด iOS ์‹œ์Šคํ…œ์— ๊ถŒํ•œ์„ ์š”์ฒญํ•ด์•ผ ํ•œ๋‹ค.


2. ์™œ ์นด๋ฉ”๋ผ ๊ถŒํ•œ์—์„œ๋Š” entitlements๊ฐ€ ํ•„์š” ์—†์„๊นŒ?

์นด๋ฉ”๋ผ์™€ ๊ฐ™์€ ์ผ๋ฐ˜์ ์ธ ์‚ฌ์šฉ์ž ๊ถŒํ•œ์€ Info.plist๋ฅผ ํ†ตํ•ด ์„ค์ •ํ•œ๋‹ค.

์นด๋ฉ”๋ผ ๊ถŒํ•œ ์„ค์ • ๋ฐฉ๋ฒ•

Info.plist์— ํ‚ค ์ถ”๊ฐ€

<key>NSCameraUsageDescription</key>
<string>์ด ์•ฑ์€ ์‚ฌ์ง„ ๋ฐ ๋น„๋””์˜ค ์ดฌ์˜์„ ์œ„ํ•ด ์นด๋ฉ”๋ผ ์ ‘๊ทผ ๊ถŒํ•œ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.</string>

์ด์œ 

  • ์นด๋ฉ”๋ผ ๊ถŒํ•œ์€ ์‚ฌ์šฉ์ž์˜ ๋™์˜๋ฅผ ๋ฐ›์•„์•ผ ํ•˜๋ฏ€๋กœ ์‹œ์Šคํ…œ์ด ์ž๋™์œผ๋กœ ๊ถŒํ•œ์„ ์ฒ˜๋ฆฌํ•œ๋‹ค.
  • ์‹œ์Šคํ…œ ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•  ๊ถŒํ•œ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ Info.plist๋กœ ์ฒ˜๋ฆฌ๋œ๋‹ค.
  • ๋”ฐ๋ผ์„œ entitlements ํŒŒ์ผ์€ ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค.

3. entitlements๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ

entitlements๋Š” ์‹œ์Šคํ…œ ๊ถŒํ•œ์„ ๋„˜์–ด์„œ ํŠน์ˆ˜ ๊ธฐ๋Šฅ์— ์ ‘๊ทผํ•˜๊ฑฐ๋‚˜, ์• ํ”Œ ๊ฐœ๋ฐœ์ž ๊ณ„์ •๊ณผ ์—ฐ๊ฒฐ๋œ ๊ถŒํ•œ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ์— ์‚ฌ์šฉ๋œ๋‹ค.

์ฃผ์š” ์‚ฌ์šฉ ์‚ฌ๋ก€

  1. Push Notifications
    • ํ‘ธ์‹œ ์•Œ๋ฆผ์„ ๋ณด๋‚ด๊ธฐ ์œ„ํ•ด ์• ํ”Œ ์„œ๋ฒ„์™€์˜ ์ธ์ฆ ํ•„์š”.
  2. iCloud
    • iCloud ๋ฐ์ดํ„ฐ ๋™๊ธฐํ™” ๊ถŒํ•œ ์„ค์ •.
  3. Background Modes
    • ์•ฑ์ด ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋ ค๋ฉด ์„ค์ • ํ•„์š”.
  4. Screen Time API
    • FamilyControls Framework๋กœ ์Šคํฌ๋ฆฐํƒ€์ž„ ๋ฐ์ดํ„ฐ๋ฅผ ์ ‘๊ทผํ•  ๋•Œ ํ•„์š”.

๋น„๊ต

๊ธฐ๋ŠฅInfo.plistentitlements
์นด๋ฉ”๋ผ ์ ‘๊ทผํ•„์š” (NSCameraUsageDescription)ํ•„์š”ํ•˜์ง€ ์•Š์Œ
Push Notificationsํ•„์š”ํ•˜์ง€ ์•Š์Œํ•„์š” (aps-environment)
iCloudํ•„์š”ํ•˜์ง€ ์•Š์Œํ•„์š” (com.apple.developer.icloud-services)
Screen Time APIํ•„์š” (NSFamilyControlsUsageDescription)ํ•„์š” (com.apple.developer.family-controls)

4. Entitlements ํŒŒ์ผ ์ƒ์„ฑ ๋ฐ ์„ค์ • ๋ฐฉ๋ฒ•

1. ํŒŒ์ผ ์ƒ์„ฑ (ํŒŒ์ผ๊ตฌ์กฐ์— ๋”ฐ๋ผ ๋‹ค๋ฆ„ ์ฃผ์˜ โš ๏ธ)

  1. App ํด๋” ์„ ํƒ
    • AppDelegate์™€ Info.plist๊ฐ€ ์žˆ๋Š” App ํด๋”๋ฅผ ์„ ํƒ.
  2. Entitlements ํŒŒ์ผ ์ƒ์„ฑ
    • Xcode์—์„œ App ํด๋” ์šฐํด๋ฆญ โ†’ New File... ์„ ํƒ.
    • iOS > Resource > Empty๋ฅผ ์„ ํƒ ํ›„, ํŒŒ์ผ ์ด๋ฆ„์„ App.entitlements๋กœ ์ง€์ •.

2. ๊ถŒํ•œ ์„ค์ • ์ถ”๊ฐ€

์ƒ์„ฑ๋œ ํŒŒ์ผ์— ํ•„์š”ํ•œ ์„ค์ • ์ถ”๊ฐ€

<key>com.apple.developer.family-controls</key>
<true/>

๋‚˜๋Š” Family Controls๊ฐ€ ํ•„์š”ํ•˜๋ฏ€๋กœ ์„ ํƒ ํ›„ Type Boolean์— Yes๋ฅผ ์„ ํƒํ–ˆ๋‹ค.

3. Signing & Capabilities ํ™•์ธ

  1. Xcode์—์„œ Targets > Signing & Capabilities ํƒญ์œผ๋กœ ์ด๋™.

  2. Entitlements ํŒŒ์ผ์ด ์ž๋™์œผ๋กœ ์—ฐ๊ฒฐ๋˜์—ˆ๋Š”์ง€ ํ™•์ธ.

  3. ์—ฐ๊ฒฐ๋˜์ง€ ์•Š์•˜๋‹ค๋ฉด, Code Signing Entitlements์— App.entitlements ํŒŒ์ผ ๊ฒฝ๋กœ๋ฅผ ์ˆ˜๋™์œผ๋กœ ์ถ”๊ฐ€.

4. Info.plist ์„ค์ •

Screen Time API๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด Info.plist์— ์•„๋ž˜ ํ‚ค๋ฅผ ์ถ”๊ฐ€

<key>NSFamilyControlsUsageDescription</key>
<string>์ด ์•ฑ์€ ์Šคํฌ๋ฆฐํƒ€์ž„ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด ๊ถŒํ•œ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.</string>

๊ฒฐ๋ก 

  • ์นด๋ฉ”๋ผ ๊ถŒํ•œ์€ Info.plist๋ฅผ ํ†ตํ•ด ์„ค์ •ํ•˜๊ณ , Screen Time API ๊ฐ™์€ ํŠน์ˆ˜ ๊ธฐ๋Šฅ์€ entitlements ํŒŒ์ผ์ด ํ•„์š”ํ•˜๋‹ค.
  • entitlements ํŒŒ์ผ์€ ์• ํ”Œ ์‹œ์Šคํ…œ๊ณผ์˜ ์ถ”๊ฐ€์ ์ธ ์ธ์ฆ๊ณผ ๊ถŒํ•œ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ์— ์‚ฌ์šฉ๋œ๋‹ค.
profile
Frontend๐ŸŒ and iOS๏ฃฟ

0๊ฐœ์˜ ๋Œ“๊ธ€

๊ด€๋ จ ์ฑ„์šฉ ์ •๋ณด