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

화면꺼짐 상태에서 fcm 메시지 처리

0 추천

포그라운드 백그라운드 푸시 알림은 잘되고 있는데,
카톡처럼 화면이 꺼진 상태에서 푸시가 오면 표시하고 싶습니다.
이에 대해 아무리 구글링해도 답변을 못찾겠네요.
도움 부탁드립니다.


1. AndroidManifest.xml에는 권한설정 하였습니다.
<uses-permission android:name="android.permission.WAKE_LOCK" />


2. 
public class PushReceiver extends FirebaseMessagingService{
...
Log.v("my", "message received");
...
public void onMessageReceived(RemoteMessage remoteMessage){
...
PowerManager pm = (PowerManager) this.getSystemService(Context.POWER_SERVICE);
wakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "TAG");
wakeLock.acquire(3000);
...
}
...
}


3. Log 자체가 표시되지 않는 것으로 보아 (화면꺼진 상태에서만) 실행 자체가 되지 않는듯합니다. 

 

 

테스트 환경 : 갤럭시 노트4 (안드로이드 버전 6.0.1)
익명사용자 님이 2018년 7월 20일 질문
2018년 7월 23일 수정

1개의 답변

0 추천
 
채택된 답변
오레오 버전에서는 별도 설정이 필요합니다.

그 미만 버전일 경우는 백그라운드에서도 수신이 됩니다.
개발자초심 (21,220 포인트) 님이 2018년 7월 20일 답변
네 맞습니다...
screenOn 내부에 로그를 찍어보세요.
그 함수가 불리는지 안불리는지부터 알아야
다른 조건에 걸린지 아닌지를 알 수 있는 접근이 아닐까요...
포그라운드 시에는 로그가 출력되는데,
백그라운드 시에는 로그나 토스트 메시지가 출력이 되지 않네요.
로그가 찍히지 않았다고 실행이 되지 않은 것은 아닌 것 같습니다.
여기서 힌트를 얻었습니다.
(http://blog.naver.com/PostView.nhn?blogId=cosmosjs&logNo=221299751382&categoryNo=80&parentCategoryNo=0)

1. notification 키를 설정 할때 - 백그라운드 일때 FCM이 앱을 대신  알림을 표시하고 포그라운드일때는 앱의 onMessageReceived() 에서 알림을 처리한다.
2. data 키를 설정 했을때 - 백그라운드/포그라운드 상관없이 앱의 onMessageReceived() 가 실행되어 알림을 처리한다.

계속해서 구글에서 메시지를 보냈는데,
json data로 해서 보내니 말씀하신 화면 켜짐이 작동하네요.
드디어 ㅠ.ㅠ

이렇게 계속해서 댓글과 답변 남겨주셔서 너무 감사합니다.
구글에서 보내는 것은 데이터형식을 떠나서 무조건 알림을 줄 거에요.
이렇게 하나씩 알아가는 재미죠. 고생하셨어요 :)
다시 한 번 감사드립니다. /꾸벅
안드로이드 개발자가 아닌데
말씀하신 것처럼 하나씩 해보니 재미있네요.^^
...