Меня интересовало, как определить, было ли мое приложение открыто из уведомления pu sh, созданного системой Android.
Поскольку некоторые уведомления pu sh создаются нашей реализацией FirebaseMessagingService, другие автоматически создаются системой. Если в первом случае в момент открытия приложения из уведомления pu sh - все ясно, мы можем обнаружить это по дополнительным функциям при намерении, которое мы поместили в FirebaseMessagingService, во втором случае у меня были проблемы, потому что это намерение было создано системой.
Я пробовал второй метод из этой статьи https://www.quora.com/How-is-it-possible-to-track-whether-an-application-was-opened-by-clicking-on-a-Push-Notification-Android#: ~: text = Android, но не удалось.
Тем не менее Я заметил, что в намерениях extra "from" не было поставлено значение "notification", но был мой gcm_defaultSenderId Я отслеживаю его таким образом:
Bundle intentExtras = getIntent().getExtras();
if (intentExtras != null && !intentExtras.isEmpty()) {
String intentSource = intentExtras.getString("from", "none");
if (intentSource.equalsIgnoreCase(getString(R.string.gcm_defaultSenderId))) {
trackAppOpenedFromPush();
}
}
Он работает нормально, но я` м не уверен, что это хорошая практика. Есть у кого-нибудь мысли?