0

は、次のシナリオを想像:Firebase通知がAndroidアプリケーションのバックグラウンドで受信されるとどうなりますか?

  1. マイアプリは現時点で実行されていないと、プッシュ通知が私のアプリがフォアグラウンドで実行されているFirebase
  2. から送信され、プッシュ通知が
  3. 私のアプリが実行されて送信されます別のアプリに切り替えることでバックグラウンドに送信されました。通知が送信されます。

上記のシナリオのうち、私のMainActivityは呼ばれていますか?

シナリオのコンテキスト: 通常、MainActivityのonCreate関数で設定されているandroid.app.Application実装で特定のアプリケーションレベルの値を維持したいと考えています。 アプリが実行されていないときに通知を受け取った場合、これらの値は空ですか?

答えて

1
  1. firebaseから通知が送信されると、onMessageReceivedメソッドが呼び出されます。詳細情報https://firebase.google.com/docs/cloud-messaging/android/receive
  2. 同じもの - onMessageReceivedが呼び出されます。
  3. 同じこと - onMessageReceivedが呼び出されます。

サービスでサービスを設定する必要があり、サービスは通知を待ち受けます。アプリケーションを終了してもサービスは実行されます。

あなたのメッセージをクリックすると、あなたのMainActivityまたは通知の目的に設定されたすべてのアクティビティが開きます。以下の例を参照してください。

アプリケーションをバックグラウンドで配置する方法はいくつかあります。 戻るボタンを押すと、MainActivityが終了します。 ホームボタンを押すと、MainActivityを殺しません。

アプリケーションonCreateメソッドは、アプリケーションが開始され、バックグラウンドではない場合にのみ呼び出されます。 アプリケーションがバックグラウンドの場合、application onCreateメソッドは起動されません。

MainActivity onCreateメソッドは、通知メッセージを押すか、バックボタンで閉じた後にバックグラウンドからアプリを起動したときに呼び出されます。

値について:私はあなたの値をどこで設定するのかはわかりませんが、firebaseサービスの方法で値を設定すると、MainActivityが開始されるときに値が初期化されます。 アプリケーションがバックグラウンドで実行されていない場合(つまり、アプリケーションが終了してバックグラウンドから消去されたことを意味します)、onMessageReceivedメソッドが呼び出される前に値が空である可能性があります。 (意図I =新しいテント(これ、MainActivity.classを);)ここで

は、あなたが、私はアクションにもMainActivityを使用していていることがわかります私のfirebaseサービスの一例であるときに、メッセージをユーザーがクリックする:

public class FirebaseMessagingService extends com.google.firebase.messaging.FirebaseMessagingService { 
String TAG = "Notifications"; 
@Override 
public void onMessageReceived(RemoteMessage remoteMessage) { 


    Log.d(TAG, "From: " + remoteMessage.getFrom()); 

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

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

    Intent i = new Intent(this, MainActivity.class); 
    i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

    PendingIntent pendingIntent = PendingIntent.getActivity(this,0,i,PendingIntent.FLAG_UPDATE_CURRENT); 

    Uri alarmSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
    NotificationCompat.Builder builder = new NotificationCompat.Builder(this) 
      .setAutoCancel(true) 
      .setContentTitle(remoteMessage.getNotification().getTitle()) 
      .setContentText(remoteMessage.getNotification().getBody()) 
      .setColor(0xffff7700) 
      .setSmallIcon(R.drawable.ic_launcher) 
      .setVibrate(new long[] { 100, 100, 100, 100}) 
      .setLights(0xffff7700, 300, 1000) 
      .setSound(alarmSound) 
      .setPriority(Notification.PRIORITY_MAX) 
      .setContentIntent(pendingIntent); 

    NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); 
    manager.notify(new Random().nextInt(),builder.build()); 
} 


} 
+0

は、詳細な説明をありがとうございました。 – Nagarjun

0
@Override 
public void handleIntent(Intent intent) { 
    super.handleIntent(intent); 
    intent.getExtras().get("body"); 
     //do something, trigger notification builder here... 
} 

** onMessageReceived()メソッドは、firebase_instance_messageserviceのforegroundにのみ適用されます。バックグラウンドプロセスでは、上記のintent_handlerを使用してください。** intent.getExtras()。get( "yourkey");を使用して各キーから値を取得できます。とプッシュ通知を受信して​​いる間にアクションを実行します。

バックグラウンド実行の関連アンサーは次のとおりです。これらは、参考になります。Background process for firebase push notification

Firebase docs

関連する問題