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 访问模拟数据文件夹