마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

api33 파이어베이스 FCM

0 추천

api33 이상은 

 

<uses-permission android:name="android.permission.POST_NOTIFICATIONS" android:minSdkVersion="33"/>

다음과 같은 권한을 설정 해주어야 한다고 알고 있습니다.

앱을 실행하고 POST_NOTIFICATIONS를 허용 했습니다.

파이어베이스에서 메시지를 보내면 api33 미만 핸드폰에는 알람이 울리지만 api33에는 권한 설정을 해줘도 알람이 울리지 않네요

어떻게 해야하나요..?

 

개미1 (1,260 포인트) 님이 2023년 5월 31일 질문

1개의 답변

0 추천

해당 권한은 Android 13 부터 적용되는 런타임 퍼미션이기 때문에, compileSDK를 33(Tiramishu)이나 그위 버전을 사용하신다면, 코드를 통해 권한처리 하는 부분을 추가해 주셔야 합니다.

private final ActivityResultLauncher<String> permissionResult = registerForActivityResult(
            new ActivityResultContracts.RequestPermission(), new ActivityResultCallback<Boolean>() {
                @Override
                public void onActivityResult(Boolean isGranted) {
                    // Do someting()
                }
            }
    );


private boolean hasPostNotificationPermission() {
     // isAndroid13Below() 부분은 없어도 될 것으로 보임. 테스트해보시기 바람.
    return isAndroid13Below() || ContextCompat.checkSelfPermission(requireContext(), Manifest.permission.POST_NOTIFICATIONS)
                == PackageManager.PERMISSION_GRANTED
}

private void requestPostNotiicationPermission() {
    permissionResult.launch(Manifest.permission.POST_NOTIFICATIONS);
}

private boolean isAndroid13Below() {
  return Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU
}

private void checkPostNoficationPermissionOrSetAlaram() {
     if (!hasPostNotificationPermission()) {
          requestPostNotiicationPermission();
          return;
     }

    // Do something
}

 

저는 개략적인 답변을 드렸고, 자세한 내용은 안드로이드 문서를 참고하시기 바랍니다.

https://developer.android.com/develop/ui/views/notifications/notification-permission

spark (226,420 포인트) 님이 2023년 5월 31일 답변
spark님이 2023년 5월 31일 수정
...