1

Android用のプッシュ通知にFirebaseを使用しようとしています。しかし、私は非常に奇妙な問題に直面した。フォアグラウンドでプッシュを送信すると、すべてOKです。私はフォアグラウンドに戻ってからバックグラウンドに戻るまで、バックグラウンドでプッシュを送信すると(データのみを送信する)すべてがOKです。私は私のアプリは、二度目にバックグラウンドになっていたときにFirebaseMessagingServiceが2番目の背景の後に呼び出されない

マイ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( )){ オブジェクト値= getIntent()。getExtras()。get(key); Log.d( "MainActivity:"、 "Key:" + key + "Value:" + value); }} あなたが応答のためにうーん –

+0

?私はこの方法をデバッグするときにアプリがbackgraoundタイトルであるがコニングされていない場合、問題 –

関連する問題