시간이 중요한 알림 표시

앱이 특정 상황에서 급하게 사용자의 주의를 환기해야 할 수 있습니다. 알림을 받을 수 있습니다. 다음을 실행하는 기기를 타겟팅하는 앱 Android 9 (API 수준 28) 이하에서는 액티비티의 질을 높이는 것입니다. 이 문서에서는 Android 10(API 수준 29)~Android 13(API 수준 33)을 실행하는 기기에서 이 동작을 실행하는 방법을 보여줍니다.

POST_NOTIFICATIONS 권한 추가

Android 13부터 다음 줄을 AndroidManifest.xml 파일:

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

이 작업을 완료하면 알림 채널을 만들 수 있습니다.

알림 채널 만들기

알림 채널을 만들어 알림을 적절히 표시하고 사용자는 앱 설정에서 알림을 관리할 수 있습니다. 자세한 내용은 알림 채널에 대한 자세한 내용은 알림 만들기 및 관리 채널을 참고하세요.

Application 클래스의 onCreate 메서드에서 알림 채널을 만듭니다.

Kotlin

class DACapp : Application() {
    override fun onCreate() {
        super.onCreate()
        val channel = NotificationChannel(
            CHANNEL_ID,
            "High priority notifications",
            NotificationManager.IMPORTANCE_HIGH
        )

        val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
        notificationManager.createNotificationChannel(channel)
    }
}

사용자가 앱을 처음으로 실행하면 그림 1과 같은 내용이 표시됩니다. 앱의 앱 정보 시스템 화면에서 확인할 수 있습니다.

앱 정보, 앱의 알림 화면을 보여주는 이미지입니다.
그림 1. 앱의 알림 섹션 정보 화면

알림 권한 관리

Android 13부터 다음 날짜 이전에 알림 권한 요청 사용자에게 알림을 표시합니다.

최소 구현은 다음과 같습니다.

Kotlin

val permissionLauncher = rememberLauncherForActivityResult(
    contract = ActivityResultContracts.RequestPermission(),
    onResult = { hasNotificationPermission = it }
)
...
Button(
    onClick = {
        if (!hasNotificationPermission) {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
                permissionLauncher.launch(Manifest.permission.POST_NOTIFICATIONS)
            }
        }
    },
) {
    Text(text = "Request permission")
}

기기에서 Android 13을 실행하는 경우 Request permission 버튼을 탭하면 그림 2와 같은 대화상자가 트리거됩니다.

권한 요청 대화상자를 보여주는 이미지
그림 2. 알림을 위한 시스템 대화상자 권한을 요청합니다.

사용자가 권한 요청을 수락하면 앱의 앱 정보 섹션이 표시됩니다. 다음과 같습니다.

알림 권한 요청이 부여된 후 앱 정보 화면을 보여주는 이미지
그림 3. 알림 권한이 부여되었습니다.

우선순위가 높은 알림 만들기

알림을 만들 때 구체적인 제목과 메시지를 포함하세요.

다음 예에는 알림이 포함되어 있습니다.

Kotlin

private fun showNotification() {
    val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager

    val notificationBuilder =
        NotificationCompat.Builder(this, CHANNEL_ID)
            .setSmallIcon(R.drawable.baseline_auto_awesome_24)
            .setContentTitle("HIGH PRIORITY")
            .setContentText("Check this dog puppy video NOW!")
            .setPriority(NotificationCompat.PRIORITY_HIGH)
            .setCategory(NotificationCompat.CATEGORY_RECOMMENDATION)

    notificationManager.notify(666, notificationBuilder.build())
}

사용자에게 알림 표시

showNotification() 함수를 호출하면 다음과 같이 알림이 트리거됩니다.

Kotlin

Button(onClick = { showNotification() }) {
    Text(text = "Show notification")
}

이 예시의 알림은 그림 4와 같습니다.

우선순위가 높은 알림을 보여주는 이미지
그림 4. 높은 우선순위 알림

진행 중인 알림

사용자에게 알림을 표시하면 사용자가 확인하거나 닫을 수 있습니다. 알림을 받아볼 수 있습니다. 예를 들어 사용자는 수신 전화

수신 전화와 같이 알림이 진행 중인 알림인 경우 알림을 포그라운드 서비스를 사용합니다. 다음 코드 스니펫 는 포그라운드 서비스와 관련된 알림을 표시하는 방법을 보여줍니다.

Kotlin

// Provide a unique integer for the "notificationId" of each notification.
startForeground(notificationId, notification)

Java

// Provide a unique integer for the "notificationId" of each notification.
startForeground(notificationId, notification);