Прежде чем я покажу вам фрагмент кода, я хочу сказать, что он работает, когда приложение находится на переднем плане.Я сразу попытался запустить действие, когда уведомление получено, и оно работает отлично, но ожидающее намерение теряет лишнее намерение, и я не могу получить данные в Загрузка активности.Чтобы быть понятным, уведомление не будет отображаться во время работы приложения, поэтому всякий раз, когда пользователь нажимает на приложение уведомления, оно будет отображаться в фоновом режиме.
Получатель уведомлений:
private void SendNotification(Firebase.Messaging.RemoteMessage message)
{
var intent = new Intent(this, typeof(LoadingActivity));
if (message.Data.TryGetValue("Page", out string value))
{
Menu page = (Menu)int.Parse(value);
switch (page)
{
case Menu.Sales:
{
if (message.Data.TryGetValue("DetailId", out string SaleId))
intent.PutExtra("SaleId", SaleId);
break;
}
case Menu.Recipes:
{
if (message.Data.TryGetValue("DetailId", out string RecipeId))
intent.PutExtra("RecipeId", RecipeId);
break;
}
case Menu.News:
{
if (message.Data.TryGetValue("DetailId", out string NewsId))
intent.PutExtra("NewsId", NewsId);
break;
}
case Menu.ExclusiveProducts:
{
if (message.Data.TryGetValue("DetailId", out string SpecialProductid))
intent.PutExtra("SpecialProductid", SpecialProductid);
break;
}
case Menu.CookingAdvices:
{
if (message.Data.TryGetValue("DetailId", out string CookingAdviceId))
intent.PutExtra("CookingAdviceId", CookingAdviceId);
break;
}
}
}
intent.AddFlags(ActivityFlags.ClearTop);
int uniqueInt = (int)((DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond) & 0xfffffff);
var pendingIntent = PendingIntent.GetActivity(this, uniqueInt, intent, PendingIntentFlags.OneShot);
var defaultSoundUri = RingtoneManager.GetDefaultUri(RingtoneType.Notification);
var notificationBuilder = new NotificationCompat.Builder(this)
.SetContentTitle(message.GetNotification().Title)
.SetContentText(message.GetNotification().Body)
.SetAutoCancel(true)
.SetSmallIcon(Resource.Drawable.ic_launcher)
.SetSound(defaultSoundUri)
.SetContentIntent(pendingIntent);
var notificationManager = (NotificationManager)GetSystemService(Service.NotificationService);
notificationManager.Notify(0, notificationBuilder.Build());
}
, и вот моя операция загрузки OnCreate когдая пытаюсь получить доступ к дополнительным намерениям
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
TransferInstances.Instance.ScreenHeight = this.Resources.DisplayMetrics.HeightPixels;
TransferInstances.Instance.ScreenWidth = this.Resources.DisplayMetrics.WidthPixels;
if (FirstLaunch)
{
try
{
AppCore.RegisterServices(GetLocalFilePath("x.db3"), new AlertDialogService(), null, new DeviceIdService());
CachedImageRenderer.Init(true);
CarouselView.FormsPlugin.Android.CarouselViewRenderer.Init();
FFImageLoading.ImageService.Instance.Initialize();
Forms.Init(this, savedInstanceState);
GetStartedBtn.Click += GetStartedBtn_Click;
FBase.Instance.InitFirebase(this);
FBase.Instance.InitGoogleSignIn(this);
CreateNotificationChannel();
FirstLaunch = false;
}catch(Exception){}
}
Intent m_intent = new Intent(this, typeof(MainActivity));
bool notificationReceived = false;
if (int.TryParse(Intent.GetStringExtra("CookingAdviceId"), out int CookingAdviceId))
{
notificationReceived = true;
m_intent.PutExtra("CookingAdviceId", CookingAdviceId);
}
else if (int.TryParse(Intent.GetStringExtra("NewsId"), out int NewsId))
{
notificationReceived = true;
m_intent.PutExtra("NewsId", NewsId);
}
else if (int.TryParse(Intent.GetStringExtra("SaleId"), out int SaleId))
{
notificationReceived = true;
m_intent.PutExtra("SaleId", SaleId);
}
else if (int.TryParse(Intent.GetStringExtra("RecipeId"), out int RecipeId))
{
notificationReceived = true;
m_intent.PutExtra("RecipeId", RecipeId);
}
else if (int.TryParse(Intent.GetStringExtra("SpecialProductid"), out int SpecialProductid))
{
notificationReceived = true;
m_intent.PutExtra("SpecialProductid", SpecialProductid);
}
if (notificationReceived)
{
m_intent.AddFlags(ActivityFlags.NoAnimation);
m_intent.AddFlags(ActivityFlags.ClearTop);
StartActivity(m_intent);
}
}