2017-08-16 4 views
0

通知(Firefoxベースのクラウド送信によって送信される)をクリックすると、デフォルトで自分のアプリケーション(メインのアクティビティ)が開き、メインアクティビティのこのコードでペイロードを得ることができますユーザが通知をクリックするfirebase messaging backgroud

if (getIntent().getExtras() != null) { 
    for (String key : getIntent().getExtras().keySet()) { 
     String value = getIntent().getExtras().getString(key); 
     Log.d(TAG, "Key: " + key + " Value: " + value); 
     startOtherActivity(); 
    } 
} 

私のメインアクティビティはスプラッシュアクティビティで、3秒間しか生きていないので、別のアクティビティにジャンプしますので、メインアクティビティでペイロードを取得したくありません。 他のアクティビティでペイロードを取得する方法は? (メインアクティビティではない)

答えて

0

メインアクティビティの開始はデフォルトの動作です。

通知を処理する最善の方法は、バックグラウンドで処理し、ペイロードを解析し、それに従って処理することです。通知を処理する方法は、バックグラウンドhereで確認できます。

ただし、送信される通知自体で開始するアクティビティを指定する場合は、thisを参照してください。

onMessageReceived()ペイロードを解析したら、開始するアクティビティを知ったら、そのアクティビティのインテントを作成して開始するだけです。

+0

私はオブジェクトに解析できます。しかし、私の主なアクティビティは、スプラッシュアクティビティなので3秒間しか生きられません。だから私はそこにオブジェクトを解析したくない –

0

To receive messages, use a service that extends FirebaseMessagingService. Your service should override the onMessageReceived and onDeletedMessages callbacks.

そこには、などそのほかに

通知をユーザーがクリックすると、あなたはおそらくAndroidマニフェストの設定を変更する必要があるときに何が起こるかを処理する必要があります。 3秒間しか表示されない場合、スプラッシュ画面は主なアクティビティではありません。カテゴリを使用して、特定のエントリポイントを処理します。

see this question for a good overview

関連する問題