[Android] WIU (While-in-Use) 권한이란?
WIU는 안드로이드에서 “While-in-Use” (사용 중) 권한을 의미합니다.
안드로이드 14(API 34)부터 도입된 포그라운드 서비스(Foreground Service) 제한 정책과 밀접한 관련이 있는 중요한 개념입니다.
WIU(While-in-Use) 권한에 대해 개발 중이신 앱(specialUse 서비스)과 연관 지어 자세히 설명해 드릴게요.
1. WIU (While-in-Use) 권한이란?
앱이 백그라운드에 있을 때가 아니라, 사용자가 앱을 직접 보고 있거나(포그라운드) 명시적으로 사용하는 상태에서만 부여되는 권한을 뜻합니다.
가장 대표적인 예시가 위치 권한입니다.
- 항상 허용 (All the time): 앱이 닫혀 있어도 권한 사용 가능.
- 앱 사용 중에만 허용 (While-in-use): 앱을 켜놓고 화면을 보고 있거나, 특정 포그라운드 서비스가 돌아갈 때만 권한 사용 가능.
2. 포그라운드 서비스와 WIU의 관계 (안드로이드 14+ 정책)
구글은 안드로이드 14부터 포그라운드 서비스를 시작할 때, 그 서비스가 특정 권한(특히 위치, 카메라, 마이크 등)을 사용한다면 앱이 실제로 화면에 보이는 상태(가시적 상태)에서만 포그라운드 서비스를 시작하도록 제한을 걸었습니다.
만약 앱이 화면에 없는 백그라운드 상태에서 서비스(camera, location, microphone 등의 타입)를 시작하려고 하면, 시스템이 “이 앱은 지금 사용 중(While-in-Use)이 아닌데 왜 카메라를 켜지?”라고 판단하여 앱을 강제로 종료(Crash) 시켜버립니다.
3. 개발자님의 specialUse 서비스와의 관계
다행히도, 현재 ManageService.java에 설정하신 specialUse 타입은 WIU 제약이 상대적으로 덜 엄격한 편입니다.
하지만 구글의 경고 메시지(“포그라운드 서비스에는 사용 중인 상태에서 필요한 권한(WIU) 기능이 있어야 합니다”)는 일반적으로 다음과 같은 의미를 내포하고 있습니다.
- 서비스 시작 시점 검증: 포그라운드 서비스를 처음 시작하는 행위(
startForegroundService())는 앱이 화면에 떠 있을 때(Activity가 포그라운드에 있을 때) 해야 한다는 원칙을 강조하는 것입니다. (앱이 이미 죽어있는 백그라운드 상태에서BroadcastReceiver등을 통해 포그라운드 서비스를 새로 띄우는 것이 제한됨) - 권한 남용 방지:
specialUse타입이더라도, 그 서비스 안에서 만약 다른 WIU 권한(예: 위치, 카메라)을 몰래 쓰려고 하면 안 된다는 뜻입니다.
요약 및 대처 방법
- WIU의 의미: “앱 사용 중에만” (While-in-use) 이라는 뜻입니다.
- 현재 앱에 미치는 영향: 현재 배터리 상태를 모니터링하는 코드는 카메라나 위치 등 민감한 WIU 권한을 요구하지 않으므로, 이 메시지 자체로 인해 당장 앱이 죽거나 오류가 발생하는 것은 아닐 확률이 높습니다.
- 주의할 점: 사용자가 앱을 켜서 알람을 설정하는 그 시점(앱이 화면에 보이는 WIU 상태)에
startForegroundService()를 호출하여 서비스를 시작하고 계신다면 올바르게 구현하신 것입니다.
즉, 이 경고는 “너의 포그라운드 서비스가 돌아가려면, 사용자가 앱을 사용 중일 때 서비스를 시작시켰어야 해!”라는 안드로이드의 기본적인 정책을 다시 한번 확인시켜주는 메시지라고 보시면 됩니다.



