Apple이 Screen Time API에서 고쳐 줬으면 하는 3가지

같은 앱 차단 앱을 iPhone과 Android용으로 만들면서 부딪힌 것들. 글: Thomas Willheim · 2026년 9월 30일

저는 팔굽혀펴기를 해서 스크린타임을 버는 앱 차단 앱 HonorFit을 만들고 있어요(양심 시스템, 카메라 없음). iPhone과 Android에서 같은 앱이고, 아이디어도 같고, 코드도 대부분 같아요. 그런데 솔직히요? Android 버전이 더 쓰기 편해요.

Android가 앱 차단을 더 잘해서 그런 건 아니에요. iOS의 Screen Time API는 차단 자체는 정말 탄탄해요. 문제는 iOS가 딱 세 가지 지점에서 손발을 묶어 두는데, 그중 어느 것도 사용자를 보호하려고 있는 것 같지 않다는 거예요. 그래서 그 목록과 함께 Apple에 바라는 점을 정리해 봤어요. 누구의 개인정보도 대가로 치르지 않는 것들로만 골랐어요.

(이 API로 개발하는 구체적인 이야기는 따로 정리해 뒀어요: Apple 문서에는 없는 이야기.)

1. 스크린 타임 앱은 한 번에 하나만 쓸 수 있어요

이미 Brick, Opal이나 one sec을 쓰고 있는데 HonorFit도 써 보고 싶다고 해 볼게요. iPhone에서는 안 돼요. 두 번째 앱이 스크린 타임 접근 권한을 요청하면 iOS는 권한 요청 창조차 띄우지 않아요. 그냥 Family Controls는 한 번에 한 앱만 쓸 수 있다는 오류를 던질 뿐이에요. 저도 이 오류를 직접 봤고, 다른 개발자들도 겪고 있어요.

앱을 바꾸려면 설정 › 스크린 타임 › 스크린 타임 접근 권한이 있는 앱으로 가서 다른 앱을 끄고, 가끔은 폰을 재시동해야 해요. 지금 HonorFit은 이 오류를 감지해서 그 과정을 안내해 줘요. 원래 오류 메시지는 일반 사용자에게 아무 의미도 없으니까요.

iPhone의 HonorFit 알림: 다른 앱이 스크린 타임을 사용 중이며 iOS에서는 한 번에 한 앱만 스크린 타임을 제어할 수 있다는 안내와, 설정에서 다른 앱을 끄는 방법
다른 앱이 이미 스크린 타임 접근 권한을 갖고 있을 때 iPhone 사용자가 HonorFit에서 보는 화면. iOS는 앱에 오류만 넘겨주기 때문에, 이 설명은 저희가 직접 쓴 거예요.

이상한 점은 따로 있어요. Apple이 WWDC22에서 이런 종류의 권한을 처음 소개할 때 이렇게 말했거든요. 자녀 보호용 권한과 달리, 개인용(individual) 권한은 한 기기에서 앱 몇 개든 쓸 수 있다고요. 지금은 그렇게 동작하지 않고, 이 제한이 문서화된 곳도 찾지 못했어요.

이게 왜 사용자에게 좋지 않냐면: 사람들은 도구를 섞어 써요. 회사에서 바짝 집중할 때는 Brick을 쓰고, 저녁에 스크롤할 시간은 HonorFit으로 버는 사람도 있을 수 있죠. Apple에는 이미 제한을 합치는 규칙이 있어요. 여러 ManagedSettingsStore가 같은 항목을 설정하면, Apple의 표현으로는 “the most restrictive setting always wins”(가장 제한적인 설정이 항상 이긴다)예요. 앱 사이에도 똑같이 적용하면 둘 다 쓸 수 있고, 그렇게 해도 폰은 더 잠기기만 할 뿐 덜 잠길 일은 없어요.

Apple에 바라는 점: WWDC22에서 설명한 대로 여러 앱이 개인용 스크린 타임 권한을 함께 가질 수 있게 해 주고, 각 앱의 실드는 ‘가장 제한적인 설정이 이긴다’는 같은 규칙으로 합쳐 주세요. 이 제한에 진짜 이유가 있다면 문서로 남기고, 앱이 사용자에게 설명할 수 있도록 제대로 된 오류 코드를 주세요.

2. 앱 선택기가 불편한데, 앱이 손댈 수도 없어요

iPhone에서 차단할 앱을 고르려면 Apple의 FamilyActivityPicker를 써야 해요. 앱이 바꿀 수 있는 건 위아래에 들어가는 안내 문구 한 줄뿐인 시스템 시트예요. 처음엔 카테고리 목록(소셜, 게임, 엔터테인먼트…)이 뜨고, 카테고리를 눌러 들어가야 실제 앱이 보여요. Android에서는 목록을 제가 직접 만들기 때문에, HonorFit은 설치된 앱을 최근 24시간 동안 쓴 시간 순으로 보여 줘요.

iOS 스크린 타임 앱 선택기: 앱 카테고리 목록에서 건강 및 피트니스를 펼쳐 그 안의 앱이 보이는 화면
iPhone: Apple의 선택기. 카테고리가 먼저 나오고, 사용 시간은 안 보이고, 어느 앱에서 열어도 똑같아요.
HonorFit의 Android 앱 선택기: 최근 24시간 사용 시간과 함께 가장 많이 쓴 앱부터 나열된 목록
Android: HonorFit이 직접 만든 목록. 사용 시간 순으로 정렬돼서, 제일 문제인 앱이 맨 위에 있어요.

iOS 선택기에서 거슬리는 점이 두 가지 있어요.

이건 개인정보를 하나도 희생하지 않아요. 선택기는 iOS가 자기 프로세스에서 그려요. 앱은 그 안에 뭐가 있는지 전혀 보지 못하고, 사용자가 고른 것에 대한 불투명한 토큰만 받아요. HonorFit은 말 그대로 사용자가 어떤 앱을 골랐는지 알 수 없어요. 그러니 iOS가 선택기 안에 사용 시간을 보여 줘도 앱은 여전히 아무것도 알 수 없어요. Apple은 이미 DeviceActivityReport 익스텐션으로 비슷한 일을 하고 있어요. 앱이 읽을 수 없는 샌드박스 안에서 사용 시간을 보여 주는 방식이죠.

Apple에 바라는 점:
  1. 선택기에서 카테고리 전체를 고를지, 앱만 고를지 정하는 옵션. 그러면 앱 차단 앱이 실수로 카테고리가 선택될 일 없는 앱 전용 목록을 보여 줄 수 있어요(웹사이트를 안 쓰는 앱이라면 웹사이트도 숨기고요).
  2. 각 앱 옆에 측정된 스크린타임을 표시하고 그 순서로 정렬하는 옵션. iOS가 직접 그려서 앱은 그 숫자를 절대 보지 못하게요.

3. 남은 시간을 정확한 카운트다운으로 볼 수 없어요

HonorFit에서 번 시간은 차단한 앱을 실제로 쓰고 있을 때만 줄어들어요. 그러니 당연히 보여 주고 싶은 건 카운트다운이에요. “12:34 남음”이 스크롤하는 동안 줄어들고, 앱을 나가면 멈추는 거요.

Android에서는 쉬워요. HonorFit의 백그라운드 서비스가 매초 화면에 떠 있는 앱을 확인하고, 알림은 Android에 내장된 카운트다운 타이머를 써서 알림 창이 매초 알아서 다시 그려요. 알림 창을 내리면 남은 시간이 초 단위까지 정확히 보여요.

iPhone에서는 불가능해요. 이유는 이래요.

결국 iPhone 사용자는 대략적인 추정치를 보고, Android 사용자는 진짜 숫자를 봐요.

Apple에 바라는 점: DeviceActivity 이벤트로 iOS가 직접 그리는 카운트다운을 띄울 수 있게 해 주세요. 알림이든, Live Activity든, 실드든, 모니터링 중인 앱이 화면에 떠 있을 때만 흘러가게요. iOS는 이미 그 사용 시간을 초 단위로 추적하고 있으니, 앱에 새로운 정보를 하나도 넘기지 않고 시간을 보여 줄 수 있어요. 모니터 익스텐션에 ‘차단한 앱 열림 / 닫힘’ 콜백만 줘도 대부분 해결될 거예요.

이게 전부예요

Apple 편을 좀 들자면, 여기 개인정보 모델은 정말 좋아요. 앱은 사용자가 무엇을 차단했는지, 얼마나 쓰는지 절대 알 수 없고, 저는 그게 바뀌지 않았으면 해요. 위의 세 가지는 어느 것도 그걸 바꾸지 않아요. 그저 iPhone 앱도 Android 버전이 이미 그런 것처럼 쓸모 있게 만들어 줄 뿐이에요.

스크린 타임으로 개발하고 계시고 이 중에 원하는 게 있다면, Feedback Assistant로 꼭 제보해 주세요. 제가 알기로는 같은 제보가 많이 쌓여야 눈에 띄거든요. 그리고 그냥 앱을 써 보고 싶다면, HonorFit은 iPhone과 Android에서 무료예요. 마음에 들어 하실 분도 있을 거예요!

계속 읽기