logo hsb.horse
← 블로그 목록으로 돌아가기

블로그

Personal Team에서는 Family Controls를 실기기에서 테스트할 수 없다

무료 Personal Team 계정으로는 Family Controls Development entitlement를 받을 수 없다. 왜 Apple Developer Program 가입이 실기기 테스트의 전제가 되는지와 영향 범위를 정리했다.

게시일:

iOS 개발을 시작하면 처음 놀라는 것 중 하나가, 빌드는 되는데 실기기에서는 쓸 수 없는 기능이 있다는 사실이다. Screen Time API를 쓰는 앱을 실제 기기에서 돌리려 하면 바로 서명 문제에 막힌다. 원인의 대부분은 Personal Team 제한이다.

Personal Team은 무료 Apple ID로 Xcode에 로그인했을 때 자동 생성되는 개발 팀이다. 돈을 내지 않아도 앱을 빌드해서 자기 기기에서 실행할 수 있지만, 사용할 수 있는 기능에는 제한이 있다.

Family Controls Development는 유료 회원만 가능하다

FamilyControls 를 쓰는 앱에는 Family Controls (Development) entitlement가 필요하다. 앱이 특정 기능을 사용할 수 있게 해 주는 일종의 허가증 같은 것이다. 이 entitlement는 Personal Team으로는 받을 수 없다.

Apple의 Supported capabilities (iOS) 문서에 나와 있다. Personal Team에서 쓸 수 없는 기능으로 명시되어 있고 예외도 없다.

즉, 이런 종류의 앱을 실기기에서 테스트하려면 유료 Apple Developer Program 연간 99달러 멤버십이 전제다. iOS 개발 경험이 없으면 무료로 다 되는 줄 알기 쉽지만, 실제로는 이 벽이 있다.

시뮬레이터에서 어디까지 확인할 수 있는가

시뮬레이터에서는 Family Controls entitlement가 없어도 빌드는 통과한다. 컴파일 시 타입 체크나 FamilyControls 를 직접 쓰지 않는 계층의 로직은 시뮬레이터에서도 확인할 수 있다.

하지만 AuthorizationCenter 인가 플로우, ManagedSettings 규칙 적용, 실드 화면 표시 동작은 시뮬레이터에서 확인할 수 없다. iOS가 처음이면 “시뮬레이터에서 됐으니 괜찮다”라고 판단하기 쉽지만, Screen Time API는 시뮬레이터와 실기기에서 동작 차이가 크다.

시뮬레이터 빌드는 컴파일 에러 검출과 UI 레이아웃 확인 정도로 쓰는 편이 현실적이다.

App Group도 영향을 받을 수 있다

Family Controls 외에도 Personal Team에서 제한되는 Capability가 있다. App Group은 앱과 Extension이 데이터를 공유하기 위한 구조인데, 기본적으로는 Personal Team에서도 쓸 수 있지만 일부 구성에서는 제한이 생길 수 있다.

그리고 In-App Purchase 역시 Personal Team에서는 프로비저닝할 수 없다. 수익화를 전제로 개발한다면 처음부터 유료 회원 환경으로 맞추는 편이 낫다.

언제 유료 회원이 되어야 하는가

실기기 테스트 없이 개발을 계속하면 나중에 “빌드는 되는데 동작 확인은 못 하는” 상태가 된다. Shield Extension 동작이나 ManagedSettings 규칙 적용은 실기기에서만 검증 가능한 부분이 많다.

이 앱을 진지하게 개발할 생각이라면 첫 실기기 테스트가 필요해지는 시점에 가입을 결정하는 편이 좋다. “구현이 다 끝나면”까지 미루면 그때 처음 환경 문제와 마주쳐 시간을 쓰게 된다. iOS 경험이 없으면 이런 막힘을 예상하기 어렵기 때문에 초반에 알고 있는 가치가 있다.

Personal Team으로 할 수 있는 부분을 먼저 끝내고 나서 가입 여부를 판단하는 방식은 비용 리스크가 작지만, 개발 흐름이 멈출 수 있다는 점은 감안해야 한다.