본문 바로가기
프로그래밍/Android

[Android] 푸시알림 구현

by Youngs_ 2023. 11. 23.
class 클래스명 : AppCompatActivity() {

    private lateinit var binding: 바인딩
    
    lateinit var builder: NotificationCompat.Builder
	lateinit var manager: NotificationManager


    //오레오 이상은 반드시 채널을 설정해줘야 Notification이 작동함
    private val CHANNEL_ID = "channel1"
    private val CHANNEL_NAME = "Channel1"
    
    override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            binding = 바인딩.inflate(layoutInflater, null, false)

            binding.testAlarm.setOnClickListener(){
                pushAlert(this)
            }

            setContentView(binding.root)
        }
}

 

private fun pushAlert(context : Context)
{
    val am: AlarmManager = context.getSystemService(Context.ALARM_SERVICE) as AlarmManager
    manager = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
    manager.createNotificationChannel(
        NotificationChannel(
            CHANNEL_ID,
            CHANNEL_NAME,
            NotificationManager.IMPORTANCE_DEFAULT
        )
    )
    builder = NotificationCompat.Builder(context, CHANNEL_ID)

    //알림창 클릭 시 activity 화면 부름
    val intent2 = Intent(context, MainActivity::class.java)
    val pendingIntent =
        PendingIntent.getActivity(context, 101, intent2, PendingIntent.FLAG_UPDATE_CURRENT)

    //알림창 제목
    builder.setContentTitle("알람")
    //알림창 아이콘
    builder.setSmallIcon(R.drawable.ic_launcher_background)
    //알림창 터치시 자동 삭제
    builder.setAutoCancel(true)
    builder.setContentIntent(pendingIntent)
    val notification: Notification = builder.build()
    manager.notify(1, notification)
}

댓글