Когда в панели появляется несколько уведомлений, когда приложение находится в фоновом или закрытом (уничтоженном) состоянии, они как бы группируются. как будто есть одно уведомление (изображение ниже). Если я коснусь «сгруппированного» уведомления, не развернув его, Intent?.HasExtra("body") вернет false в MainActivity - OnNewIntent() (см. код ниже). Я попробовал Intent.HasExtra("body") (заглавная I), но он также возвращает false. OnNewIntent() выполняется только один раз.

Поскольку HasExtra() возвращает false, я вообще не могу получить какие-либо значения этих уведомлений. Я не знаю, как получить доступ к их значениям. Как мне их получить??
Если в ящике есть одно уведомление и оно нажимается, когда приложение работает в фоновом режиме, я могу получить значения уведомления. Intent?.HasExtra("body") возвращает true.
Кроме того, я могу получить значения уведомления, если разверну группу (изображение ниже) и коснусь одного уведомление одновременно.

Вот мой код:
Код: Выделить всё
[Activity(Theme = "@style/Maui.SplashTheme", MainLauncher = true, LaunchMode = LaunchMode.SingleTop, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation | ConfigChanges.UiMode | ConfigChanges.ScreenLayout | ConfigChanges.SmallestScreenSize | ConfigChanges.Density)]
public class MainActivity : MauiAppCompatActivity, Android.Gms.Tasks.IOnSuccessListener
{
public void OnSuccess(Java.Lang.Object result)
{
DeviceInstallationService.Token = result.ToString();
}
// this method is called when a notification in drawer is tapped while the app is in background
protected override void OnNewIntent(Intent intent)
{
base.OnNewIntent(intent);
ProcessNotificationsAction(intent);
}
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
if (DeviceInstallationService.NotificationsSupported)
FirebaseMessaging.Instance.GetToken().AddOnSuccessListener(this);
ProcessNotificationsAction(Intent);
}
private void ProcessNotificationsAction(Intent intent)
{
try
{
Task.Run(() =>
{
if (intent?.HasExtra("body") == true)
{
var body = intent.GetStringExtra("body");
if (!string.IsNullOrEmpty(body))
{
var id = Guid.Parse(intent.GetStringExtra("id"));
var application = intent.GetStringExtra("application");
var datePublished = DateTime.SpecifyKind(DateTime.Parse(intent.GetStringExtra("datePublished")), DateTimeKind.Utc);
NotificationMessageService.TriggerMessage(id, application, body, intent.HasExtra("url") ? intent.GetStringExtra("url") : null, datePublished);
}
}
});
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine(ex.Message);
}
}
}
Код: Выделить всё
{
"message": {
"notification": {
"title": "Notification title",
"body": "This is a test message..."
},
"android": {
"notification": {
"channel_id": "com.company.app.default"
}
},
"data": {
"id": "A GUID",
"application": "App type A",
"body": "This is a test message...",
"url": "http://www...",
"datePublished": "2024-11-08T00:00:00.0000000Z"
}
}
}
Обратите внимание: у меня нет проблем, когда приложение включено. передний план. Проблема возникает в эмуляторе Android и на моем физическом устройстве (Pixel 7).
Среда, пакеты Nuget и версии:
- .NET MAUI — 8.0.82
- Microsoft.Maui.Controls — 8.0.82
- Microsoft.Maui.Controls.Compatibility — 8.0 .82
- Xamarin.Firebase.Messaging 124.0.0.1
Подробнее здесь: https://stackoverflow.com/questions/791 ... group-of-n