1

내 앱에 푸시 알림을 보내고 일부 값을 sharedpreferences에 저장하려는 경우 Firebase를 사용하고 있습니다. 앱이 포 그라운드 일 때 완벽하게 작동하지만 앱이 백그라운드 일 때 값을 저장하지 않습니다.FCM 알림 문제

@Override 
    public void onMessageReceived(RemoteMessage remoteMessage) { 
     Log.e("Remotemessage",remoteMessage.toString()); 

     String Heading = remoteMessage.getNotification().getTitle(); 
     String message = remoteMessage.getNotification().getBody(); 
     Map<String, String> data = remoteMessage.getData(); 
     Log.e("Firebase notification ", " KEY1"); 
     sessionManager=new SessionManager(this); 

     Log.e("Firebase notification ", " KEY"+data.get("click_action")); 
     Log.e("Firebase notification ", " KEY new"+data.get("key")); 
     int studentid= Integer.parseInt(data.get("student_id")); 
     Log.e("STUDENT ID",""+studentid); 
     if(studentid!=0) 
     { 
      sessionManager.saveStudentId(studentid); 

     } 
} 

을하지만 알림이 두 경우를 보여주고있다 : 내 코드는 다음과 같습니다. 이 문제를 해결하는 방법 ??

+0

이 문서에서는 앱이 백그라운드 일 때 알림을 수신하는 방법에 대해서도 설명합니다. 이러한 경우 알림은 장치의 시스템 트레이로 전달되며 데이터 페이로드는 다음과 같은 목적으로 제공됩니다. 런처 활동. –

+0

'sessionManager = new SessionManager = 새로운 SessionManager = 새로운 SessionManager (getBaseContext()); ' –

+0

서버에서 알림을 보내는 동안 데이터 필드 만 사용하십시오. –

답변

1

귀하의 게시물을 바탕으로, 나는 notificationdata 메시지가 모두 포함 된 페이로드를 보내고 있다고 가정합니다. 자세한 내용은 Message Types을 참조하십시오.

Handling Messages for Android 설명서에서 볼 수 있듯이 앱이 백그라운드에서 작동하는 동안 두 메시지 유형이 모두 포함 된 페이로드를 전송하면 Android 시스템 트레이에서 메시지 (notification 데이터)가 처리됩니다. - 앱이 전경 또는 배경에있는 경우 onMessageReceived()에 관계없이 메시지를 처리 ​​할 수 ​​있도록, 메시지 페이로드

  1. data 보내기 :

    당신이 할 수있는 두 가지가 있습니다.

  2. 사용자가 Android 시스템 트레이에서 알림을 탭한 후 data 페이로드의 세부 정보를 가져와 처리를 구현합니다. 내 대답 here을 참조하십시오.

+0

사용자가 알림을 탭하지 않고 알림을 지우면 어떻게됩니까? –

+0

@MayuraDevani 그런 다음 활동을 진행하지 않습니다. 그 자체가 * 사용자의 선택 *입니다. –

+0

예, 귀하의 정보는 맞지만 공유 환경 설정에 데이터를 저장하면 @ Saneness의 경우에 작동하지 않습니다 –