오늘은 Full Screen Intent에 대해서 정리해 보도록 하겠습니다.
다만 Notification의 기본에 대해서는 다른 글에서 다루고 있으니, 이 글에서는 fullScreenIntent에 관한 부분만 다루도록 하겠습니다.
1. Full Screen Intent
전화가 오는 경우나 알람시계와 같이 특정시간에 즉시 그리고 분명하게 유저에게 알려야 하는 경우가있는데요.
스테이터스바에 노티를 보여주는대신에 해당 intent를 launch시켜주어야 할 때가 있습니다.
전체화면 노티라고 생각해 볼 수 있겠지요.
알람앱에게 있어서는 필수적인 부분이라고 할 수 있습니다.
알람이 울리는 즉시 사용자가 알아채고 알람을 Off시키는 노력을 해 주어야 하니까요.
Notification.Builder클래스의 함수 API로 설정할 수 있는 setFullScreenIntent가 있는데,
이 API를 이용하면 Full Screen Intent를 구현할 수 있습니다.
공식문서를 보면 아래와 같이 설명을 해주고 있습니다.
위의 설명에 나오는 것처럼, Android특성상 기기별로 System UI가 다른데요. 어떤 기기의 SystemUI에서는 유저가 디바이스를 사용하는 경우에 intent를 launch시켜주지 않고, heads-up notification만 보여주는 경우도 있다고 합니다.
아래와 같이 Notification.Builder클래스에서 set함수들을 이용해서 설정할 때 아래와 같이 사용해주고 있겠지요.
여기서 setFullScreenIntent를 사용해 주는데요.
첫번째 인자는 pendingIntent이구요, 두번째는 highPriority설정으로 다른 알람들이 notify되지 않도록 되어있어도, notify할 것인지를 설정해 줍니다. 물론 setFullScreenIntent함수를 쓴다는 것 자체가 true로 하겠다는 의미이겠지요.
다만, 위의 공식문서에 나와있는 것처럼, fullScreenIntent를 사용은 하되, 항상 화면전체로 나오지는 못하고, 어떤 System UI에서는 Heads-up Notification으로 등장할수 있다고 한 점은 기억해 두어야 합니다.
100%보장은 않된다는 의미인데요.
(앱 유저들의 리뷰가 조금 걱정이 됩니다만, 구글은 신경써주지 못하는 것 같습니다.)
위 공식문서의 API를 보면, AndroidQ(Api10)을 targeting하는 경우라면, manifest에 아래와 같은 부분을 추가해 주어야 하는군요.
2020년 11월 부터는 AndroidQ를 타게팅하지 않으면 앱을 플레이스토어에 올릴 수 없으므로 미리 해 주는 것이 좋겠지요.
<uses-permission android:name="android.permission.USE_FULL_SCREEN_INTENT" />
혹시, 다른 개발자가 구현하였거나, 구현한지 오래되서 기억이 나지 않으시다면,
setFullScreenIntent를검색해서 코드에서 사용하고 있는지 확인을 해 보아야 합니다.
2. 정리
사실 fullScreenIntent는 함수 한줄과 manifest에 permission만 선언해 놓으면 되는데요.
다만, 실제로 앱을 만들때는 keyguard가 올라와 있을 때나, 알람매니저를 통해서 알람이 울릴 때,
그리고 앱을 사용중에 있을 때 어떻게 알람이 울리는지 테스트가 필요합니다.
글내용과 관련해서 좋은 방법이나 추가할 내용이 있다면 이 글에서 업데이트 하도록 하겠습니다.
'Android 개발 > Android' 카테고리의 다른 글
Android 리소스 정리시 사용하는 Naming Convention (0) | 2022.11.12 |
---|---|
Android 에서 동적 권한 얻기 # State registerForActivityResult Runtime Permission (0) | 2022.10.24 |
카카오톡이나 페이스북에서 사용하는 HashKey 얻어오기 #Android (0) | 2021.05.07 |
registerForActivityResult 구현방법 정리 # 예전 onActivityResult (0) | 2021.04.01 |
targetSdkVersion 업데이트 Android10 Q API29 업데이트 강제사항 (0) | 2020.10.09 |
Android4를 지원하지 않는 라이브러리들 정리 # API21 이상 (1) | 2020.08.05 |
Android WebView 를 설정하고 로딩하는 방법을 정리해보자 (0) | 2020.03.19 |
Activity Manifest 설정에 대한 정리(launchMode, screenOrientation, configChanges 등) (0) | 2020.03.10 |
SoundPool 이용해서 다양한 사운드(효과음) 재생하기 #Android (0) | 2019.11.05 |
안드로이드 Build 속도를 개선하는 방법 (0) | 2019.09.24 |
댓글