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

Posted

技术标签:

【中文标题】Xamarin - Oreo (API 26) Firebase Cloud Messaging 背景通知未显示在通知抽屉中【英文标题】:Xamarin - Oreo (API 26) Firebase Cloud Messaging background notifications not showing in notification drawer 【发布时间】:2017-11-02 11:08:09 【问题描述】:

我正在使用 Visual Studio + Xamarin 开发一个 android 应用程序,并尝试在 Oreo (API 26) 上接收后台 Firebase Cloud Messaging 通知。

问题 当我的应用程序在后台运行时,通知抽屉中不会显示通知(仅在 Android API 26 Oreo 上)。但是,当应用程序处于前台时,通知会起作用。

评论 FCM 通知适用于


我的设置如下;

清单

Target Android Version: Android 8.0 (API level 26)
Minimum Android Version: Android 4.1 (API level 16)

Android 构建工具

Android SDK Tools 26.1.1
Android SDK Platform-Tools 26.0.2
Android SDK Build Tools 26.0.2

Firebase 云消息传递负载

我正在使用 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)  

我在开发者选项中打开了“显示通知渠道警告”,现在我在广播和 FCM 消息时看到以下错误消息(应用程序处于后台时):


相关 *** 帖子 - Oreo API 26 notification not displaying - 只讨论解决方案 关于如何构建通知。然而 FirebaseMessageReceiever 或 MainActivity 甚至不会在我的 案例。 - Notifications fail to display in Oreo - 好像有一个 支持库中的错误。

【问题讨论】:

为了得到这个代码,我最终构建了 API 级别 25 (7.1.1),它可以工作(在所有 API 版本上通过前台 + 后台应用程序收到 FCM 通知,包括 API 26奥利奥)。希望对寻找的人有所帮助! 你用奥利奥做这个了吗?我遇到了同样的问题... 【参考方案1】:

我知道这已经过时了,但是对于其他遇到问题的人来说,文档已经更新了。从截图来看,您的通知渠道为空。对于 Android 26+,您需要创建一个:

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

【讨论】:

以上是关于Xamarin - Oreo (API 26) Firebase Cloud Messaging 背景通知未显示在通知抽屉中的主要内容,如果未能解决你的问题,请参考以下文章

JobIntentService 不适用于 Oreo 以下的 API (API <= 26)

从 API 级别 < Android 26 (Oreo) 的 RGB 值创建颜色对象

Android Oreo (API 26) - 在外部存储中创建目录

Visual Studio 2019 Xamarin 访问模拟数据文件夹

Samsung / Android 8.0 Oreo 更新导致应用程序崩溃? (Xamarin.Forms 应用程序)

Android Oreo 字体系列 NPE 崩溃