[007] 플러터 (Flutter) Tip - Firebase Cloud Messaging (FCM) & flutter_local_notification 안드로이드 백그라운드에서 팝업 알림이 나오지 않을 때 해결 방안

2023. 7. 2. 17:22모바일어플개발/Flutter Tips

반응형

안녕하세요~ totally 개발자입니다.

 

예전 포스팅(아래)에서 Firebase Cloud Messaging을 활용하여 푸시 알림을 하는 방법에 대해 알아보았습니다.

https://totally-developer.tistory.com/149

 

[004] 플러터 (Flutter) Tip - Firebase Cloud Messaging (FCM) & flutter_local_notification 연동 및 알림, 알림 탭 했을

안녕하세요~ totally 개발자입니다. 이 포스팅은 제가 실제 플러터 앱 개발을 진행하며 파이어베이스 클라우드 메시징 (Firebase Cloud Messaging - 이하 FCM) 그리고 flutter_local_notification 패키지와의 연동

totally-developer.tistory.com

 

FCM 부분 개발을 하시다가 실제 기기, 특히 에뮬레이터에서 알림 아이콘은 나오나 화면 상단에 알림 표시는 나오지 않는 경우가 있습니다. 실제 기기는 보통 나옵니다. 그러나 에뮬레이터는 체크해줘야 하는 부분에 몇 가지 있습니다.

 

먼저 위에 포스팅은 이미 구현이 된 상태에서 진행하기 때문에 구현이 되지 않으신 분들은 위의 포스팅을 먼저 확인하시고 진행하시면 됩니다. 

 

아래 BackgroundHandler 쪽에는 별도로 구현하실 내용이 없습니다. 여기에서 flutter local notification의 show 메소드로 직접 호출하시는 경우에는 2번씩 뜨게 됩니다. 그래서 백그라운드에서는 직접 show 메소드를 호출하셔서 알림을 주는 방식이 아니기 때문에 주의하셔야 합니다.

@pragma('vm:entry-point')
Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message)

Step 1: 백그라운드에서 알림을 주기 위해 3초 딜레이를 주어 "알림 전송"을 클릭한 뒤 백그라운드로 넘어가서 메시지를 받아볼 수 있도록 조치합니다.

 

 

Step 2: 아래처럼 'high_importance_channel', 'high_importance_notification'이라고 되어 있는지 다시 체크합니다. (꼭 이 이름을 필요는 없습니다)

 

 

Step 3: android -> app -> src -> main -> AndroidManifest.xml에 가서 다음처럼 변경해줍니다.

 

 

Step 4: strings.xml(없으면 생성하시면 됩니다)에 다음 내용을 입력해주시면 됩니다.

 

 

Step 5: 저장 및 실행 후 테스트해보시면 됩니다. 알림 전송 버튼을 누르시고 백그라운드로 나가시면 됩니다.

 

 

Step 6: 위와 같이 알림이 잘 오는 것을 확인되신다면 성공적으로 된 것입니다. 만일 위와 같은 방법을 따라해봤지만 되지 않는 경우에 에뮬레이터에서 한 가지 더 체크하실 부분이 있습니다.  설정에 들어가서 Apps & notifications에 들어갑니다. (애뮬레이터에 따라 세팅 UI가 다를 수 있습니다) 그리고 해당 앱에 들어갑니다. 그리고 아래 보시면 Notifications라고 있는데 클릭해줍니다.

 

 

Step 7: 아래처럼 high_importance_notification 형태로 나와야 하며 만약 miscellaneous가 나오는 경우라면 flutter local notification과 AndroidManifest.xml의 notification channel ID가 일치하지 않아 생기는 문제입니다. 

 

 

high_importance_notification 들어가보시면 아래에 Pop on screen이 있는데 그것을 활성화하면 됩니다. miscellaneous라고 뜨는 분들은 들어가보시면 이것이 비활성화 되어 있습니다. 그것도 활성화해주시면 잘 나옵니다.

 

개발에 도움이 되셨기를 바랍니다. 감사합니다.

반응형