Xamarin Android NotificationCompat不显示,没有错误

时间:2018-11-15 14:45:40

标签: android forms firebase xamarin

使用Xamarin Forms(目前仅是Android平台),我正在尝试通过Azure和Firebase使Notifications正常工作。在当前状态下,该通知已收到并具有内容,因此它不为null,它只是表示“ Azure测试通知”的基本通知。但是,我整天都在Google上搜索,由于某种原因,我找不到我的问题的答案:通知将不会显示且没有错误,它只是跳过代码而没有执行任何操作。

在MainActivity中创建频道(我在这里这样做是因为docs.microsoft同意)

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 name = Resources.GetString(Resource.String.AppName);
        var description = GetString(Resource.String.Description);
        var channel = new NotificationChannel("4867453", name, NotificationImportance.Default)
        {
            Description = description
        };

        var notificationManager = (NotificationManager)GetSystemService(NotificationService);
        notificationManager.CreateNotificationChannel(channel);

在我的单独服务类别中,

var intent = new Intent(this, typeof(MainActivity));
    intent.AddFlags(ActivityFlags.ClearTop);
    var pendingIntent = PendingIntent.GetActivity(this, 0, intent, PendingIntentFlags.OneShot);

    NotificationCompat.Builder notification = new NotificationCompat.Builder(this, Channel_ID)
                .SetContentTitle("Test Message")
                .SetContentText(messageBody)
                .SetContentIntent(pendingIntent);

    var notificationManager = GetSystemService(Context.NotificationService) as NotificationManager;
    notificationManager.Notify(Notification_ID, notification.Build());

其中一些(主要是Intent的东西)是我在Microsoft Docs上发现的,并没有对应用程序的正常运行产生任何影响,我在测试之前已将其删除,但没有任何影响。 / p>

如果我说实话,我可能会做些愚蠢的事情,但是,如果有人能对我的问题有所了解,我将不胜感激。谢谢:)。

1 个答案:

答案 0 :(得分:0)

当我开始使用Android 9(Pie)时遇到了类似的问题。

事实证明,在Android 9.0中,他们弃用了Apache HTTP Client软件包所依赖的NotificationHubs Bindings nuget

根据他们的文档:

  

要继续使用Apache HTTP客户端,面向Android 9的应用   及以上版本可以将以下内容添加到其AndroidManifest.xml中:

     

<uses-library android:name="org.apache.http.legacy" android:required="false"/>

添加此内容后,我的通知再次开始工作。

似乎有一个GitHub issue表示已修复,但是他们的nuget包似乎真的过时了。