라떼군 이야기


안드로이드 OS 알림 설정 확인

Problem

안드로이드에서 서버와 앱에서 별도로 푸시 알림을 제어할 수도 있지만, OS 설정을 통해서 푸시 수신여부를 확인할 수도 있다. OS에서 푸시 설정을 꺼놓은 경우 푸시를 수신할 수 있는 방법이 없으므로 사용자에게 어떤 상태인지 안내해줄 필요가 있다. OS에서 푸시 설정 상태를 확인하는 방법을 정리하여 공유한다.

Solution

아래처럼 OS에서 푸시 설정이 활성화 상태를 확인할 수 있다.

NotificationManagerCompat.from(context).areNotificationsEnabled()

만약 푸시 사용이 비활성화 되어있다면 설정으로 이동하는 기능도 추가할 수 있다. OS 버전별로 이동해야 하는 화면의 차이가 있다.

val intent = Intent()
when {
    Build.VERSION.SDK_INT >= Build.VERSION_CODES.O -> {
        intent.action = Settings.ACTION_APP_NOTIFICATION_SETTINGS
        intent.putExtra(Settings.EXTRA_APP_PACKAGE, activity?.packageName)
    }

    Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP -> {
        intent.action = "android.settings.APP_NOTIFICATION_SETTINGS"
        intent.putExtra("app_package", activity?.packageName)
        intent.putExtra("app_uid", activity?.applicationInfo?.uid)
    }

    else -> {
        intent.action = Settings.ACTION_APPLICATION_DETAILS_SETTINGS
        intent.addCategory(Intent.CATEGORY_DEFAULT)
        intent.data = Uri.parse("package:" + activity?.packageName)
    }
}

activity?.startActivity(intent)