푸시 작업을하면서 푸시 클릭했을 때 onNewIntent를 타게 해야했고, 계속 화면의 onCreate만 타게 되어 고민하던 상황에 알게된 점입니다!
PendingIntent를 사용하여 푸시 알림을 탭할 때 앱의 동작을 제어하는 방법과 함께,
onNewIntent() 메서드를 사용하여 알림을 처리하는 방법에 대해 알아보겠습니다.
PendingIntent란?
PendingIntent는 다른 애플리케이션이 특정한 인텐트를 나중에 실행할 수 있는 권한을 부여하는 메커니즘입니다.
이를 통해 다른 애플리케이션이 사용자의 액션에 대응하여 원하는 동작을 수행할 수 있습니다.
푸시 알림 처리를 위한 PendingIntent 및 onNewIntent 사용하기
푸시 알림을 받았을 때 사용자가 알림을 탭했을 때 앱의 동작을 제어하려면 PendingIntent를 사용할 수 있습니다.
이를 통해 사용자가 알림을 탭했을 때 원하는 동작을 수행할 수 있습니다.
또한, 알림을 받았을 때 앱이 이미 실행 중이라면 onNewIntent() 메서드를 사용하여 알림을 처리할 수도 있습니다.
PendingIntent를 사용하여 푸시 알림 처리하기
PendingIntent 생성 : 알림이 탭되었을 때 실행될 액티비티, 서비스 또는 브로드캐스트를 지정하여 PendingIntent를 생성합니다.
알림 생성: NotificationCompat.Builder를 사용하여 알림을 생성합니다. 이때 setContentIntent() 메서드를 사용하여 PendingIntent를 설정합니다.
알림 표시: NotificationManager를 사용하여 알림을 표시합니다.
onNewIntent를 사용하여 푸시 알림 처리하기
onNewIntent() 메서드를 사용하여 푸시 알림을 받았을 때 앱이 이미 실행 중이라면 추가적인 처리를 수행할 수 있습니다.
이 메서드는 호출된 액티비티가 이미 실행 중이고, 새로운 인텐트가 전달될 때 호출됩니다.
따라서 앱이 실행 중인 상태에서 푸시 알림을 받았을 때 추가적인 처리를 수행하고 싶다면 onNewIntent() 메서드를 오버라이드하여 해당 작업을 수행할 수 있습니다.
PendingIntent와 onNewIntent를 사용하여 푸시 알림을 처리하는 예시 코드.
// PendingIntent 생성
val intent = Intent(this, MainActivity::class.java)
val pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT)
// 알림 생성
val builder = NotificationCompat.Builder(this, CHANNEL_ID)
.setSmallIcon(R.drawable.notification_icon)
.setContentTitle("알림 제목")
.setContentText("알림 내용")
.setPriority(NotificationCompat.PRIORITY_DEFAULT)
.setContentIntent(pendingIntent)
.setAutoCancel(true)
// 알림 표시
val notificationManager = NotificationManagerCompat.from(this)
notificationManager.notify(notificationId, builder.build())
PendingIntent를 사용하여 사용자가 알림을 탭했을 때 앱의 동작을 제어하고,
onNewIntent() 메서드를 사용하여 앱이 실행 중일 때 푸시 알림을 추가적으로 처리할 수 있습니다.
'안드로이드' 카테고리의 다른 글
[Android] Exoplayer란? (0) | 2024.03.18 |
---|---|
[Android] WorkManager (0) | 2024.03.18 |
startActivityForResult 및 ActivityResultLauncher에 대한 명확한 이해 (0) | 2024.03.14 |
SingleLiveEvent에 대해 알아보자 (사용법) (2) | 2024.02.14 |
안드로이드 layout xml @+id와 @id의 의미 (0) | 2024.02.07 |