안드로이드

푸시 알림 처리를 위한 PendingIntent 및 onNewIntent 사용하기

코딩하는후운 2024. 3. 14. 17:27
반응형

푸시 작업을하면서 푸시 클릭했을 때 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() 메서드를 사용하여 앱이 실행 중일 때 푸시 알림을 추가적으로 처리할 수 있습니다.

반응형