봄날은 갔다. 이제 그 정신으로 공부하자

Android 13 - 5편 (Notification permission) 본문

학습

Android 13 - 5편 (Notification permission)

길재의 그 정신으로 공부하자 2022. 7. 22. 11:11

Android 13(API 수준 33)에서는 앱에서 알림을 보내기 위한 새로운 런타임 권한 POST_NOTIFICATIONS를 도입했습니다. 이 변경사항으로 인해 사용자는 가장 중요한 알림에 주목할 수 있습니다.

이 기능의 추가적인 제어 기능과 유연성을 이용할 수 있도록 가급적 빠른 시일 내에 Android 13을 타겟팅할 것을 적극 권장합니다. 계속해서 12L(API 수준 32) 이하를 타겟팅할 경우 앱 기능의 컨텍스트에서 권한을 요청할 수 없습니다.

 

 

POST_NOTIFICATIONS 사용 방법

앱에서 새 알림 권한을 요청하려면 앱이 Android 13을 타겟팅하도록 업데이트하고, 아래의 섹션에서 설명하는 것처럼 다른 런타임 권한을 요청하는 것과 비슷한 프로세스로 처리하면 됩니다.

우선 앱의 매니페스트 파일애 아래와 같이 코드를 추가합니다.

<manifest ...>
    <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
    <application ...>
        ...
    </application>
</manifest>

 

Permissions Dialog에서 사용자 선택에 따른 앱 기능

사용자는 Permissions Dialog에서 3가지 동작(허용, 허용 안함, 선택 안함) 중 한가지 액션을 취할 수 있습니다.

사용자가 "허용" 액션을 선택한 경우

사용자가 허용 옵셥을 선택하면 앱은 알림을 보내거나 FGS와 관련된 알림을 게시할 수 있습니다.

 

사용자가 "허용 안함" 액선을 선택하는 경우

사용자가 허용 안함 옵션을 선택하면 앱에서 알림을 보낼 수 없습니다. 몇 가지 특정 역할을 제외하고는 모든 알림 채널이 차단됩니다. 이는 사용자가 시스템 설정에서 앱의 모든 알림을 수동으로 사용 중지하는 경우에 발생하는 동작과 비슷합니다.

 

* 주의: 앱이 12L 이하를 타겟팅하고 사용자가 허용 안 함을 탭하면(한 번이라도) 다음 중 하나가 발생할 때까지 메시지가 다시 표시되지 않습니다.

  • 사용자가 앱을 제거한 후 재설치합니다.
  • Android 13을 타겟팅하도록 앱을 업데이트합니다.

 

사용자가 Permissions Dialog에서 아무런 선택도 하지 않고 Dialog를 닫은 경우

사용자가 대화상자를 스와이프하여 없애면, 즉 허용 또는 허용 안 함을 선택하지 않으면 알림 권한의 상태가 변경되지 않습니다.

 

 

새로 설치된 앱에 미치는 영향

사용자가 Android 13을 실행하는 기기에 앱을 설치하면 앱의 알림이 기본적으로 사용 중지됩니다. 개발자가 새 권한을 요청하고 사용자가 앱에 권한을 부여한 후에 앱이 알림을 보낼 수 있습니다.

권한 대화상자가 표시되는 시점은 앱의 타겟 SDK 버전에 따라 달라집니다.

  • 앱이 Android 13 이상을 타겟팅하는 경우 권한 대화상자가 표시되는 시점을 완전히 제어할 수 있습니다. 이 기회를 사용하여 사용자에게 앱에 이 권한이 필요한 이유를 설명하고 권한을 부여하도록 권장해야 합니다.
  • 앱이 12L(API 수준 32) 이하를 타겟팅한다면 알림 채널을 만든 후 처음 앱에서 활동이 시작될 때 또는 앱에서 활동이 시작된 후 첫 번째 알림 채널이 만들어질 때 시스템에서 권한 대화상자를 표시합니다. 이 시점은 보통 앱 시작 시점과 동일합니다.

 

기존 앱 업데이트에 미치는 영향

새로운 알림 권한과 관련된 중단을 최소화하기 위해 시스템은 사용자가 기기를 Android 13으로 업그레이드할 때 모든 대상 앱에 새 알림 권한을 자동으로 미리 부여합니다. 즉, 이러한 앱은 사용자에게 계속 알림을 보낼 수 있으며 사용자에게는 런타임 권한 메시지가 표시되지 않습니다.

 

권한 사전 부여 자격 요건

앱이 자동 사전 부여의 대상이 되려면 기존 알림 채널이 있어야 하며 12L 이하를 실행하는 기기에서 사용자가 명시적으로 알림을 사용 중지하지 않았어야 합니다.

사용자가 12L 이하를 실행하는 기기에서 앱의 알림을 사용 중지했다면 기기가 Android 13 이상으로 업그레이드된 후에도 이 거부가 지속됩니다.

 

예외

미디어 세션

미디어 세션과 관련된 알림은 이 동작 변경사항에서 제외됩니다.

 

전화통화를 자체 관리하도록 구성된 앱

앱이 전화 통화를 자체 관리하도록 구성된다면 앱에서 Notification.CallStyle 알림 스타일을 사용하는 알림을 전송하기 위해 POST_NOTIFICATIONS 권한이 필요하지 않습니다.

시스템에서는 다음 각 작업을 실행하는 경우 앱이 전화 통화를 자체 관리하도록 구성된 것으로 간주합니다.

  1. MANAGE_OWN_CALLS 권한을 선언한 경우
  2. ConnectionService 인터페이스를 구현한 경우
  3. registerPhoneAccount()를 호출하여 기기의 통신사에 등록한 경우

 

권장사항

앱 타겟 SDK 업데이트

앱이 권한 대화상자가 표시되는 시점을 보다 유연하게 제어할 수 있도록 하려면 앱이 Android 13을 타겟팅하도록 업데이트해야 합니다.

 

조금 기다린 후에 알림 권한 메시지 표시

사용자에게 권한 부여를 요청하기 전에 먼저 사용자가 앱에 익숙해질 기회를 제공하세요.

 

컨텍스트 내에서 권한 요청

앱에서 알림 권한을 요청할 때는 알림의 용도와 사용자가 동의해야 하는 이유를 명확히 알 수 있도록 올바른 컨텍스트 내에서 요청해야 합니다. 

이 기회를 통해 알림의 의도를 투명하게 공개하면 사용자가 앱에 알림 권한을 부여할 가능성이 커집니다.

앱에서 알림을 보낼 수 있는지 확인

앱에서 알림을 보내기 전에 사용자가 앱의 알림을 사용 설정했는지 areNotificationsEnabled() 함수를 통해 확인 가능합니다.

 

책임감 있게 권한 사용

알림 보내기 승인을 받았다면 권한을 책임 있게 사용해야 합니다. 사용자는 앱이 보내는 일일 알림 수를 확인할 있으며 언제든지 권한을 취소할 있습니다.

Comments