Android 에서 notification 기능을 사용하기 위해서는 Manifest에 권한을 추가해주지 않아도 된다.
하지만, Android 13 (API 33 이상) 부터는 알림을 사용하려면 런타임권한으로 POST_NOTIFICATIONS 를 추가해주어야한다.
1) Manifest 에 권한 추가
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
2) 사용자에게 권한 요청
// version check
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
if (ContextCompat.checkSelfPermission(requireContext().applicationContext, Manifest.permission.POST_NOTIFICATIONS) != PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale(requireActivity(), Manifest.permission.POST_NOTIFICATIONS)) {
// 이미 권한을 거절한 경우 권한 설정 화면으로 이동
Toast.makeText(context, getString(R.string.plz_permit_notification_permission), Toast.LENGTH_SHORT).show()
val intent: Intent = Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS).setData(Uri.parse("package:" + requireActivity().packageName))
startActivity(intent)
requireActivity().finish()
} else {
// 처음 권한 요청을 할 경우
registerForActivityResult(ActivityResultContracts.RequestPermission()) {
when (it) {
true -> {
Toast.makeText(context, getString(R.string.permit_notifiation_permission), Toast.LENGTH_SHORT).show()
}
false -> {
Toast.makeText(context, getString(R.string.request_notification_permission), Toast.LENGTH_SHORT).show()
requireActivity().moveTaskToBack(true)
requireActivity().finishAndRemoveTask()
exitProcess(0)
}
}
}.launch(Manifest.permission.POST_NOTIFICATIONS)
}
}
}