2016-09-28 6 views
0

Firebase 알림을 사용하고 있습니다. 테스트를 위해 Firebase 콘솔에서 알림을 보냅니다. 하지만 내 MainActivity에서 나는 콘솔에서 설정 한 데이터를 가져올 수 없습니다.인 텐트에서 데이터를 추출 할 수 없습니다. - Firebase 푸시 알림

(MyFirebaseService)은 호출되지 않습니다 (메서드가 호출되지 않은 경우 - MainActivity의 데이터 전송은 Intent). 하지만이 데이터는 Intent에 표시되지 않습니다. 예를 들어

: enter image description here 그리고 디버그 : enter image description here

+1

죄송합니다. 나는 약간 혼란 스럽다. [RemoteMessage.getData()] (https://firebase.google.com/docs/reference/android/com/google/firebase/messaging/RemoteMessage.html#getData())를 사용하여 데이터 페이로드? 또한 이미지 대신 텍스트로 코드를 게시하십시오. 'onMessageReceived()'를 포함하십시오. –

+0

@AL. 예, 가능합니다. onMessageReceived() 메서드가 – Artem

+1

이라고 불리는 경우에만 가능합니다. 앱이 백그라운드 일 경우 onMessageReceived()가 호출되지 않습니다. 포 그라운드에서 앱으로 확인 했습니까? –

답변

0

당신은 통지를 보내도록 콘솔을 사용하는 경우는 페이로드로 간주되지 않으므로 응용 프로그램이 백그라운드에서 실행중인 경우,이 방법은 onMessageReceived() 호출되지 않습니다. 하지만 응용 프로그램이 포 그라운드에서 실행되는 경우 않습니다.

curl을 통해 페이로드로 알림을 보내려면 여기에 셸을 사용해야합니다.

curl -X POST --header "Authorization: key=<APIKEY>" --Header "Content-Type: 
application/json" https://fcm.googleapis.com/fcm/send -d '{"to":"<YourToken>","data":{"type":"notification","message":"Hello, it works"}}'      

** 참고 : <을 제거>.

데이터를 가져 오기 위해 onMessageReceived() 메소드가 이와 같습니다.

@Override 
public void onMessageReceived(final RemoteMessage remoteMessage) { 
try { 
     String remote_type = remoteMessage.getData().get("type"); 
     if (remote_type.equals("notification")){ 
      String message = remoteMessage.getData().get("message"); 
      Log.d("ReceivedData", message); 
     } 
    }catch(NullPointerException e){ 
    }