Xamarin.Forms Android推送通知不会出现

【Xamarin.Forms Android推送通知不会出现】盛年不重来,一日难再晨,及时当勉励,岁月不待人。这篇文章主要讲述Xamarin.Forms Android推送通知不会出现相关的知识,希望能为你提供帮助。
我正在使用azure hub通知。我在Xamarin.Forms开发我的应用程序。对于android我可以得到通知当我测试它命中调试,我可以显示一个DisplayAlert
但我无法将其显示为通知。我搜索并在android oreo之后我应该创建一个通知渠道。
但我不知道该怎么做。他们说你应该在你的strings.xml中创建一个通知id,但我没有strings.xml文件。我不知道怎么做,有人可以帮忙吗?

internal static readonly string CHANNEL_ID = "cross_channel"; void CreateNotification(string title, string desc) { var notificationManager = GetSystemService(Context.NotificationService) as NotificationManager; var uiIntent = new Intent(this, typeof(MainActivity)); var pendingIntent = PendingIntent.GetActivity(this, RandomGenerator(), uiIntent, PendingIntentFlags.OneShot); var notification = new Notification(Android.Resource.Drawable.ButtonMinus, title) { Flags = NotificationFlags.AutoCancel }; notification.SetLatestEventInfo(this, title, desc, PendingIntent.GetActivity(this, 0, uiIntent, 0)); if (Build.VERSION.SdkInt > = BuildVersionCodes.O) { var channel = new NotificationChannel(CHANNEL_ID, "Cross Notifications", NotificationImportance.High); notificationManager.CreateNotificationChannel(channel); string channelId = "Cross Channel"; var notBuilder = new Notification.Builder(Application.Context, CHANNEL_ID).SetContentTitle(title).SetContentText(desc).SetSmallIcon(Android.Resource.Drawable.StarBigOn).SetAutoCancel(true); notificationManager.Notify(1, notBuilder.Build()); channel.Description = (desc); notBuilder.SetChannelId(channelId); } notificationManager.Notify(RandomGenerator(), notBuilder.Build()); }

答案在MainActivity.cs中您可以在onCreate方法中调用此方法:
void CreateNotificationChannel() { if (Build.VERSION.SdkInt < BuildVersionCodes.O) { // Notification channels are new in API 26 (and not a part of the // support library). There is no need to create a notification // channel on older versions of Android. return; }var channel = new NotificationChannel(CHANNEL_ID, "FCM Notifications", NotificationImportance.Default) { Description = "Firebase Cloud Messages appear in this channel" }; var notificationManager = (NotificationManager) GetSystemService(NotificationService); notificationManager.CreateNotificationChannel(channel); }

哪里
internal static readonly string CHANNEL_ID = "my_notification_channel"; internal static readonly int NOTIFICATION_ID = 100;

分别是通道ID和通知ID的定义。
在加载XF后的MainActivity的OnCreate中调用:
LoadApplication(new App()); CreateNotificationChannel();

祝好运
在查询时还原
另一答案我在使用Xamarin.Forms正确显示通知时遇到了一些麻烦。我假设你已经覆盖了“OnMessageReceived”事件并且你直接调用了“CreateNotification”?最后,这是对我有用的代码:
private void ShowNotification(RemoteMessage msg, IDictionary< string, string> data) { var intent = new Intent(); intent.AddFlags(ActivityFlags.ClearTop); foreach (var key in data.Keys) intent.PutExtra(key, data[key]); var pendingIntent = PendingIntent.GetActivity(Android.App.Application.Context, 100, intent, PendingIntentFlags.OneShot); var notificationBuilder = new NotificationCompat.Builder(Android.App.Application.Context) // Note: Everything I read online said to provide the ChannelID string here, but doing so caused it to not display notifications. .SetSmallIcon(Resource.Drawable.abc_btn_radio_to_on_mtrl_000) // You can set this to your apps icon .SetContentTitle(msg.GetNotification().Title) .SetContentText(msg.GetNotification().Body) .SetPriority((int)Android.App.NotificationImportance.Max) .SetDefaults(NotificationCompat.DefaultAll) .SetContentIntent(pendingIntent) // Even though intent here is empty, you *may* need to include it for the notification to show, I never tried without one. .SetVisibility((int)NotificationVisibility.Public); var notificationManager = NotificationManagerCompat.From(Android.App.Application.Context); notificationManager.Notify(100, notificationBuilder.Build()); }


    推荐阅读