當我的應用程序處於打開狀態並收到通知時,我希望能夠立即打開關聯的活動,而無需用戶點擊通知。在前臺收到的關於Firebase通知的打開活動
這個問題是非常相似:Open app on firebase notification received (FCM)
但它打開應用程序時,它在後臺,我需要做的是,當我的應用程序是在前臺。
通知時,您的應用程序在後臺交付。在這個 的情況下,通知被傳遞到設備的系統托盤。 A 默認情況下,用戶點擊通知將打開應用程序啓動器。帶有通知和數據有效負載的消息 ,前臺均爲背景和 。在這種情況下,通知將傳送到 設備的系統托盤,並且數據有效負載將以您的啓動程序活動意圖的附加組件 傳送。
這是我的onMessageReceived
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
// 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());
sendNotification(remoteMessage);
}
}
/**
* Create and show a simple notification containing the received FCM message.
*
* @param remoteMessage FCM message message received.
*/
private void sendNotification(RemoteMessage remoteMessage) {
Intent intent = new Intent(this, MyActivity.class);
Map<String, String> hmap ;
hmap = remoteMessage.getData();
hmap.get("data_info");
intent.putExtra("data_info", hmap.get("data_info"));
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent,
PendingIntent.FLAG_ONE_SHOT);
}
我能夠正確地得到通知,但一旦我點擊系統托盤通知的活動只有開始implmentation。
有沒有辦法在不使用前臺通話的情況下啓動活動?
該方法onMessageReceived()
類MyFirebaseMessagingService
extends FirebaseMessagingService
在前臺正在調用,但活動沒有開始。我也試過與國旗FLAG_ACTIVITY_NEW_TASK
也沒有運氣。提前致謝。
ForegroundActivity代碼應該放在Myactivity.class(應該打開的活動)還是在不同的活動中? – bankode
在不同的活動。在通知到達的那一刻,用戶應該使用它。即:用戶打開應用程序並檢查一些內容,您可以擁有一個MainActivity類並在那裏聲明觀察者,只要介意用戶離開該活動時廣播通知將不會被捕獲。 – cdiazmo
即使應用程序被終止,此代碼是否也能正常工作? –