当前位置: 首页 > 知识库问答 >
问题:

Xamarin-Oreo(API 26)Firebase Cloud Messaging后台通知未显示在通知抽屉中

屠德宇
2023-03-14

我正在使用Visual Studio+Xamarin开发一个Android应用程序,并尝试在Oreo(API26)上接收后台Firebase云消息通知。

问题
当我的应用程序是后台时,通知不会显示在通知抽屉中(仅在Android API 26 Oreo上)。然而,当应用程序被前景化时,通知是有效的。

注释
FCM通知适用于所有其他构建版本<26,包括后台和前台FCM消息(这些消息出现在通知抽屉中,我可以从后台状态启动应用程序,或者如果应用程序是前台状态,则应用程序打开正确的意图)。

我的设置如下;

Target Android Version: Android 8.0 (API level 26)
Minimum Android Version: Android 4.1 (API level 16)
Android SDK Tools 26.1.1
Android SDK Platform-Tools 26.0.2
Android SDK Build Tools 26.0.2

我正在使用node.js firebase库发送以下FCM负载:

var payload = {
    notification: {
        title: "My Title",
        body: "My body"
    },
    data: {
        type: 'A_CUSTOM_TYPE_VARIABLE'
    }
};

Xamarin应用程序输出中的错误
当我从服务器或通过firebase控制台发送一个FCM,并且应用程序在后台时,我可以看到应用程序在它到达我的代码之前收到了FCM,但是错误。“应用程序输出”面板中有一个事件输出,内容如下:

[Notification] Use of stream types is deprecated for operations other than volume control
[Notification] See the documentation of setSound() for what to use instead with android.media.AudioAttributes to qualify your playback use case
Settings > System > Developer Options > Show notification channel warnings (turn on)  

相关的Stackoverflow帖子
-Oreo API 26通知未显示-解决方案仅讨论如何构造通知。但是,在我的情况下,FirebaseMessageReceiever或MainActivity甚至没有激发。
-通知无法在Oreo中显示-看起来支持库中有一个bug。

共有1个答案

归俊杰
2023-03-14

我知道这是旧的,但对于任何其他谁有问题的文件已经更新。通过截图判断,您的通知通道为空。对于Android26+,您需要创建一个:

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(MyFirebaseMessagingService.CHANNEL_ID,
                                          "FCM Notifications",
                                          NotificationImportance.Default)
                  {

                      Description = "Firebase Cloud Messages appear in this channel"
                  };

    var notificationManager = (NotificationManager)GetSystemService(Android.Content.Context.NotificationService);
    notificationManager.CreateNotificationChannel(channel);
}

https://docs.microsoft.com/en-us/xamarin/android/data-cloud/google-messaging/remote-notifications-with-FCM?tabs=vsmac#check-for-google-play-services-and-create-a-notification-channel

 类似资料:
  • 普通通知生成器不会在Android O上显示通知。 如何在Android 8 Oreo上显示通知? 在Android O上显示通知是否需要添加新的代码?

  • 当用户未连接到xmpp时,我正在使用FCM通知进行聊天。 FCM中有两种通知模式1。通知消息2。数据消息 如果我的应用程序最近被清除,我将不会使用数据消息作为通知消息 这种方法适用于除奥利奥以外的所有版本。 对于Oreo,我只有在应用程序未连接到xmpp且处于前台时才会收到通知。我的onMessageReception方法正在被调用。 但当该应用程序仅为奥利奥而被删除或从最近的应用程序中删除时,情

  • 编辑 我的通知是这样创建的,到目前为止,它在数千个API<26的android设备上工作:

  • 通知通道的新代码在旧的和最新的奥利奥设备上运行良好,但当我在API 28(android P)设备上测试时,它没有在通知栏中显示通知,这是我用来启动前台通知的行。

  • 我正在创建一个应用程序,显示未来日期的通知。为了在将来显示通知,我使用了AlarmManager。 在我的一个活动中单击按钮,我会创建如下通知 以下是我的BootService类代码: 在测试应用程序时,我看到通知显示,问题是特定于启动手机。在上面的代码中,我通过调用LoadAlarmsFromDatabase来重新创建通知 为了处理启动时重新创建警报,我使用了BroadcastRecaver 公

  • 我已使用zo0r/React本机推送通知在我的React本机应用程序上设置推送通知。它可以在Android系统上运行,当应用程序处于后台模式时,也可以在iOS上运行。 但是,当应用程序在iOS的前台模式下时,不会显示通知。我知道我必须在前台模式下处理通知,但我希望它们的显示方式与在后台模式下的显示方式完全相同。 所以我做了以下几件事: 但是什么都没发生,通知还是没有显示,我到底错过了什么?