1

Android 용 푸시 알림에 Firebase를 사용하려고합니다. 그러나 나는 매우 이상한 문제에 직면했다. 포 그라운드에서 밀어 넣기를하면 모두 괜찮아요. 전경으로 돌아와 배경으로 돌아갈 때까지 배경으로 밀어 넣기 (데이터 만 전송)를 보내면 모두 OK입니다.두 번째 배경 후에 FirebaseMessagingService가 호출되지 않음

FirebaseMessagingService은 내 앱을 배경으로 두 번째로 호출 할 때 호출되지 않습니다. 또한 Android 에뮬레이터를 사용하고 있습니다. 코드 :

public class MyAndroidFirebaseMsgService extends FirebaseMessagingService { 
    private static final String TAG = "MyAndroidFCMService"; 
    @Override 
    public void onMessageReceived(RemoteMessage remoteMessage) { 
     Log.d(TAG, "From: " + remoteMessage.getFrom()); 
    } 
} 

//... 

public class MyAndroidFirebaseInstanceIdService extends FirebaseInstanceIdService { 

    private static final String TAG = "MyAndroidFCMIIDService"; 

    @Override 
    public void onTokenRefresh() { 
     //Get hold of the registration token 
     String refreshedToken = FirebaseInstanceId.getInstance().getToken(); 
     //Log the token 
     Log.d(TAG, "Refreshed token: " + refreshedToken); 
    } 
    private void sendRegistrationToServer(String token) { 
     //Implement this method if you want to store the token on your server 
    } 
} 

의 AndroidManifest.xml :

<service android:name=".MyAndroidFirebaseMsgService"> 
      <intent-filter> 
       <action android:name="com.google.firebase.MESSAGING_EVENT" /> 
      </intent-filter> 
     </service> 
     <service android:name=".MyAndroidFirebaseInstanceIdService"> 
      <intent-filter> 
       <action android:name="com.google.firebase.INSTANCE_ID_EVENT" /> 
      </intent-filter> 
     </service> 

서버 :

내가 그것을 어떻게

curl -H "Content-type: application/json" -H "Authorization:key=<MYKEY>" -X POST -d '{"to": "<MYTOKEN>","data": {"hello": "This is a Firebase Cloud Messaging Device Group Message!"}}' https://fcm.googleapis.com/fcm/send 
을 를 해결할 수 ?

답변

0

의도 한대로 작동하며, 앱이 포 그라운드에있을 때만 알림 메시지가 onMessageReceived 콜백에 전달됩니다. 앱이 백그라운드에 있거나 닫힌 경우 알림 센터에 알림 메시지가 표시되고 해당 메시지의 모든 데이터는 사용자가 알림을 탭한 결과로 시작된 의도로 전달됩니다.

click_action을 지정하여 사용자가 알림을 누를 때 시작해야하는 의도를 나타낼 수 있습니다. click_action이 지정되지 않은 경우 주 활동이 사용됩니다.

의도는

getIntent()를 getExtras()를 사용할 수 있습니다 시작됩니다.; 은 알림 메시지와 함께 전송 된 모든 데이터를 포함하는 Set을 검색합니다. https://firebase.google.com/docs/cloud-messaging/android/receive#sample-receive

+0

FirebaseMessagingService 배경 –

+0

경우에 호출하지 않습니다 알림 메시지에 대한 자세한 내용은

(.! getIntent() getExtras() = NULL) {(문자열 키 :.. getIntent() getExtras() keySet 반환 ()) { Object value = getIntent(). getExtras(). get (key); Log.d ("MainActivity :", "키 :"+ 키 + "값 :"+ 값); } } –

+0

인 텐트 오브젝트에서 데이터를 가져올 수 있습니다. –