Android 13의 알림에서는 수신 동의 모델을 사용하며 이는 수신 해제 모델을 사용하는 이전 Android 버전에서 달라진 점입니다. Android 13에서는 모든 앱이 알림 메시지를 보내기 전에 사용자에게 권한을 요청해야 합니다. 이 모델을 통해 알림 중단을 줄일 수 있고 정보 과부하를 최소화하며 중요한 정도에 따라 표시되는 알림을 사용자가 제어할 수 있습니다. 수신 동의 모델을 지원하려면 OEM은 알림 및 런타임 권한 시스템의 변경사항을 구현해야 합니다.
이 페이지에서는 이러한 변경사항을 지원하기 위해 OEM이 구현해야 하는 내용과 구현을 검증하는 방법을 설명합니다.
수신 동의 알림 변경사항 구현
Android 13부터는 앱이 알림을 보내려면 시스템에서 android.permission.POST_NOTIFICATION
런타임 권한을 요청하여 알림을 보낼 인텐트를 선언해야 합니다.
Android 13 이상에서는 앱이 사용자에게 알림을 보낼 수 있는지 결정하는 설정이 권한 시스템에 저장됩니다. Android 13 전에는 이 설정이 알림 시스템에 저장되었습니다. 따라서 OEM은 앱이 알림을 보낼 수 있는지에 관한 기존 알림 데이터를 알림 시스템에서 런타임 권한 시스템으로 이전해야 합니다. 또한 OEM은 해당 데이터를 앱 개발자에게 표시하는 기존 API를 알림 시스템에 유지해야 합니다.
알림 및 권한 시스템 변경사항은 사용자 알림 동작의 수신 동의 모델을 기반으로 하며 구현 가이드라인 섹션에 설명되어 있습니다.
수신 동의 모델의 사용자 알림 동작
다음 표는 Android 13을 실행하는 기기에서 다양한 앱 버전의 알림 동작을 보여줍니다.
Android 13을 실행하는 기기 | Android 13 이상을 타겟팅하는 앱 | Android 13보다 낮은 버전을 타겟팅하는 앱 |
---|---|---|
새로 설치 | 앱에서 메시지를 표시할 때까지 알림이 차단됩니다.
앱에서 권한을 요청할 시기를 제어합니다. |
OS에서 메시지를 표시할 때까지 알림이 차단됩니다.
앱을 처음 실행할 때 권한을 요청합니다. |
기존 앱(업그레이드) | 앱에서 메시지를 표시할 때까지 알림이 허용됩니다.
앱이 첫 번째 적격한 실행에서 요청할 때까지 임시 권한이 부여됩니다. |
OS에서 메시지를 표시할 때까지 알림이 허용됩니다.
앱을 처음 실행할 때까지 임시 권한이 부여됩니다. |
구현 가이드라인
참조 구현은 알림 서비스, 권한 서비스, 정책 서비스를 참고하세요. 기본 권한 핸들러의 예외를 구현하려면 런타임 권한을 참고하세요.
구현하는 동안 Android 13 이하 SDK를 타겟팅하는 앱의 사용자 알림 동작에 관한 다음 가이드라인을 사용하세요.
- Android 13 기기에 새로 설치된 앱은 사용자가 권한 요청을 승인하지 않으면 알림을 보내서는 안 됩니다.
- Android 13 이상을 타겟팅하는 앱의 경우 앱에서 메시지를 표시할 때까지 알림을 차단해야 합니다. 앱이 사용자 권한을 요청할지 여부와 시기를 제어하기 때문입니다.
- 앱이 Android 13보다 낮은 버전을 타겟팅하는 경우 OS에서 메시지를 표시할 때까지 알림을 차단해야 합니다. OS는 앱을 처음 실행할 때 권한 메시지를 표시해야 합니다.
Android 13으로 업그레이드하기 전에 기기에 있던 앱 또는 백업과 복원을 통해 복원된 앱은 사용자가 해당 앱에서 처음 활동을 실행할 때까지 알림을 보낼 수 있어야 합니다.
Android 13 이상 버전의 SDK를 타겟팅하는 앱의 경우 사용자가 이전에 앱 또는
NotificationChannel
수준에서 이 앱의 알림 설정을 맞춤설정하지 않았다면 임시 권한 부여를 취소합니다. 그런 다음 앱에서 사용자에게 권한을 요청해야 알림을 계속 보낼 수 있습니다.Android 13을 타겟팅하는 업그레이드된 앱에 현재 임시 업그레이드 부여를 통한 알림 권한이 없고 사용자가 앱을 한 번 이상 실행했다면 앱에서는 알림 권한 메시지를 표시해야 추가 포그라운드 서비스를 실행할 수 있습니다.
Android 13보다 낮은 버전의 타겟 SDK가 있는 앱의 경우 앱이
NotificationChannel
을 하나 이상 만든 후 첫 번째 활동 실행을 가로채 사용자가 앱에서 알림을 수신할지 묻는 권한 메시지를 표시합니다.사용자가 이전에 업그레이드 기기에서 또는 기기로 복원된 백업에서 앱의 앱 수준이나
NotificationChannel
수준에서 알림 설정을 맞춤설정했다면 앱 수준 설정은FLAG_PERMISSION_USER_SET
플래그를 사용하여 권한 시스템으로 이전해야 합니다. 앱에서 구체적으로 요청하지 않는 한 추가 알림 권한 메시지가 사용자에게 표시되어서는 안 됩니다.
백업 및 복원은 Android 13 기기와 이전 OS 버전 기기 간에 하위 및 향후 호환되어야 합니다. Android 13 기기에서 생성된 백업 데이터는 이전 OS 버전으로 복원해야 하며 이전 OS 버전의 백업 데이터는 Android 13 기기로 복원해야 합니다.
진행 중인 미디어 재생과 관련된 미디어 알림은 알림 권한에서 제외되어야 합니다.
알림 및 권한 시스템 변경사항 확인
구현을 확인하려면 다음 테스트를 실행합니다.
PreferencesHelperTest
,NotificationManagerServiceTest
에 명시된 단위 테스트업그레이드와 백업 및 복원을 테스트하는 수동 테스트
알림을 전송하는 CTS 권한 및 알림 시스템 테스트. 이러한 테스트 중 일부는 cts/tests/tests/permission/, NotificationManagerTest.java, cts/tests/tests/notificationlegacy/에서 확인할 수 있습니다.