백그라운드 앱에 테스트 메시지 보내기 | Firebase Cloud Messaging
4월 9~11일, Cloud Next에서 Firebase가 돌아옵니다. 지금 등록하기 의견 보내기 백그라운드 앱에 테스트 메시지 보내기 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하
firebase.google.com
https://firebase.google.com/docs/cloud-messaging/android/client?hl=ko
Android에서 Firebase 클라우드 메시징 클라이언트 앱 설정 | Firebase Cloud Messaging
4월 9~11일, Cloud Next에서 Firebase가 돌아옵니다. 지금 등록하기 의견 보내기 Android에서 Firebase 클라우드 메시징 클라이언트 앱 설정 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저
firebase.google.com
https://firebase.google.com/docs/cloud-messaging/android/receive?hl=ko
Android 앱에서 메시지 수신 | Firebase Cloud Messaging
4월 9~11일, Cloud Next에서 Firebase가 돌아옵니다. 지금 등록하기 의견 보내기 Android 앱에서 메시지 수신 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. Firebase 알
firebase.google.com
https://velog.io/@simsubeen/Android-Kotlin-Firebase-Cloud-Messaging
[Android / Kotlin] Firebase Cloud Messaging - PUSH 알림 받기
📍 Firebase Console을 사용하여 Firebase 추가 > Firebase 프로젝트 만들기 및 Firebase에 앱 등록 하는 부분은 참고할 수 있는 예제가 많기에 본 포스팅에서는 생략하려고 한다. Firebase 문서의 'Firebase 프로
velog.io
이렇게 해도 알림이 null로 오는 경우가 있다.
override fun onMessageReceived(remoteMessage: RemoteMessage) {
        super.onMessageReceived(remoteMessage)
        remoteMessage.notification?.let { notification ->
            Log.d(TAG, "Notification Title: ${notification.title}")
            Log.d(TAG, "Notification Body: ${notification.body}")
            // null 체크 후 sendNotification 호출
            val title = notification.title
            val body = notification.body
            if (title != null && body != null) {
                sendNotification(title, body)
            } else {
                Log.w(TAG, "Notification title or body is null, not sending notification.")
            }
        }
        // Data 페이로드 확인
        if (remoteMessage.data.isNotEmpty()) {
            val title = remoteMessage.data["title"].takeUnless { it.isNullOrEmpty() }
                ?: remoteMessage.notification?.title
                ?: "No Title"
            val body = remoteMessage.data["body"].takeUnless { it.isNullOrEmpty() }
                ?: remoteMessage.notification?.body
                ?: "No Body"
            Log.d(TAG, "Received Message - Title: $title, Body: $body")
            sendNotification(title, body)
            Log.d(TAG, "Data Payload - Title: $title, Body: $body")
            sendNotification(title, body)
            return
        }
        // Notification 페이로드 확인
        remoteMessage.notification?.let {
            val title = remoteMessage.data["title"].takeUnless { it.isNullOrEmpty() }
                ?: remoteMessage.notification?.title
                ?: "No Title"
            val body = remoteMessage.data["body"].takeUnless { it.isNullOrEmpty() }
                ?: remoteMessage.notification?.body
                ?: "No Body"
            Log.d(TAG, "Received Message - Title: $title, Body: $body")
            sendNotification(title, body)
            Log.d(TAG, "Notification Payload - Title: $title, Body: $body")
            sendNotification(title, body)
        }
    }
이렇게 수정해보자
+추가 Android 레벨 13 이상일땐 알림 권한 요청을 보내자, 그러면 앱 다운 받고 유저에게 권한을 물어본다.
@RequiresApi(Build.VERSION_CODES.TIRAMISU)
    private val PERMISSIONS = arrayOf(
        Manifest.permission.POST_NOTIFICATIONS
    )
    private val PERMISSION_REQUEST_CODE = 5000
//대충 메인 액티비티 온크리에잍트에
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
            if (!Permission.checkAndRequestPermissions(this, PERMISSIONS, PERMISSION_REQUEST_CODE)) {
                Log.d(TAG, "알림 권한 요청함")
            }
        }'Android' 카테고리의 다른 글
| [Android] 웹뷰에 corner radius 적용하기 (feat. Java) (0) | 2025.02.26 | 
|---|---|
| [Android] WebView Url 여러개 띄우기(feat.Java) (0) | 2025.02.25 | 
| [Android] 발행 - 구독 패턴 (브로드캐스트, 이벤트버스) (1) | 2025.02.18 | 
| [Android] Thread, Runnable, Executors (0) | 2025.02.18 | 
| [Android] EventBus (0) | 2025.02.14 |