0

私はしばらくの間、アンドロイドアプリケーションを開発しており、それらのすべてにFCMが組み込まれており、正しく機能しています。OnMessageReceivedはアプリケーションをバックグラウンドで使用すると起動しません。

私はこのアプリを開いていない限りonMessageReceivedが起動しない場合、アプリが終了してスプラッシュから開いて通常のフローに従うという通知を受け取った場合(Notificationsアクティビティには行かない)。 N.B:すべてのテストはFirebaseコンソールからのものでした。

私は本当になぜ助けになるのかわかりません。

はここに私のコードです:

public class MyFirebaseMessagingService extends FirebaseMessagingService { 

private static final String TAG = "MyFirebaseMsgService"; 


@Override 
public void onMessageReceived(RemoteMessage remoteMessage) { 

    Log.wtf("RECEIVED","NOTIFICATION"); 

    // TODO(developer): Handle FCM messages here. 
    Log.wtf(TAG, "From: " + remoteMessage.getFrom()); 

    // Check if message contains a data payload. 
    if (remoteMessage.getData().size() > 0) { 
     Log.wtf(TAG, "Message data payload: " + remoteMessage.getData()); 
    } 

    // Check if message contains a notification payload. 
    if (remoteMessage.getNotification() != null) { 
     Log.wtf(TAG, "Message Notification Body: " + remoteMessage.getNotification().getBody()); 
    } 


    sendNotification("Notification"); 
} 

private void sendNotification(String messageBody) { 


    Intent intent = new Intent(this, HomeActivity.class); 

    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent, 
      PendingIntent.FLAG_ONE_SHOT); 

    Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
    NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this) 
      .setSmallIcon(R.mipmap.icon) 
      .setContentTitle("FCM Message") 
      .setContentText(messageBody) 
      .setAutoCancel(true) 
      .setSound(defaultSoundUri) 
      .setContentIntent(pendingIntent); 

    NotificationManager notificationManager = 
      (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 

    notificationManager.notify(0 /* ID of notification */, notificationBuilder.build()); 
} 
} 
+0

してくださいは、データペイロードを送信し、メソッド 'onMessageReceived'をチェックイン。ペイロードを送信しない場合、FCMは通知を作成します。 –

答えて

0

Firebaseを使用して、基本的に、通知メッセージの2種類を送信することができます。

1.通知メッセージ:「表示メッセージ」と考えることがあります。

2.データ/ペイロードメッセージ:クライアントアプリケーションによって処理されます。

上記の通知は、アプリケーションがフォアグラウンドかバックグラウンドかによって、動作が異なります。

1.Notification MSG +背景:onMessageReceived()アンドロイド

3.DataのMSG +背景オン:アプリ通知トレイ

2.Notification MSG +フォアグラウンドに送達通知トレイに通知ペイロードを受け取り、ユーザが通知をタップしたときにのみデータペイロードを処理します。

4.Data msg + Foreground:あなたのアプリは両方のペイロードを利用できるメッセージオブジェクトを受け取ります。 FCMコンソールを使用アドバンスオプションを使用して、キーと値の挿入データ/ペイロードメッセージを送信するために、より明確check this.

については

enter image description here

+0

データメッセージの送信方法 –

+0

あなたはFirebaseコンソールを正しく使用していますか?ペイロードを追加するオプションがあります。 メッセージにペイロードを追加して試してください。 または http://apns-gcm.bryantan.info/通知を送信するには、このリンクをクリックしてください。 編集した回答をチェックしてください!! –

+0

@HusseinYassine:これで問題が解決するかどうか教えてください。 –

関連する問題