0

在 Firebase Cloud Messaging 文档中,您可以阅读以下内容:

从 Android 8.0(API 级别 26)开始,所有通知都必须分配给一个频道。

注意:如果您以 Android 8.0(API 级别 26)为目标并在未指定通知渠道的情况下发布通知,则不会出现通知并且系统会记录错误。

* https://developer.android.com/training/notify-user/channels.html#java

那么,为什么当您从 FCM 面板发送通知以进行云消息传递时,指定通知通道的部分标记为可选

在此处输入图像描述

而且,我发现这条评论似乎确认这是可选的,并且无需在代码和 FCM 控制台中指定通知通道即可工作:

(可选)从 Android 8.0(API 级别 26)及更高版本开始,支持并推荐通知通道。FCM 提供具有基本设置的默认通知通道。如果您更喜欢创建和使用自己的默认频道,请将 default_notification_channel_id 设置为您的通知频道对象的 ID,如图所示;只要传入消息未明确设置通知通道,FCM 就会使用此值。要了解更多信息,请参阅管理通知渠道。

* https://firebase.google.com/docs/cloud-messaging/android/client

那么,它是可选的吗?还是强制性的?在不创建通知渠道的情况下可以工作吗?还是不行?这非常令人沮丧...

4

3 回答 3

1

添加这个

<meta-data
android:name="com.google.firebase.messaging.default_notification_channel_id"
android:value="@string/default_notification_channel_id"/>

如果您希望显示 API 级别 26 以上的消息,请添加到清单文件中。否则系统将在具有 API 26+ 的设备上记录错误。这是可选的方式,您可以发送消息,但如果设备 API 级别 26+,设备将不会显示它。可选实际上意味着如果您选择显示消息则使用通知渠道,否则系统只会收到消息而不是用户。他们的大多数文档总是像政策警告一样令人困惑......哈哈。

于 2020-07-23T03:27:24.623 回答
0

Android O 中没有频道的通知将不起作用,因为应用开发者需要指定频道。所以通知通道在 Android O 及以上版本中是强制性的。

不需要具有 API 26 及以下通知通道的设备。

通知渠道的目的是什么?

通知通道使我们的应用程序开发人员能够将我们的通知分组到组(通道)中,用户可以一次修改整个通道的通知设置。例如,对于每个频道,用户可以完全阻止所有通知、覆盖重要性级别或允许显示通知标记。这项新功能有助于极大地改善应用程序的用户体验。

阅读有关通知渠道的更多信息

于 2019-11-09T09:07:34.590 回答
0

对于面向 API 26 或更高版本的应用程序,通知通道是强制性的。

FCM 不是生成通知的唯一方法,您还可以在代码中创建与 FCM 无关的通知。

如果 FCM 通知的创建者未分配通道,则系统将分配默认通道。

对于在您的代码中创建的与 FCM 无关的通知,如果它没有分配的频道,则不会显示。

于 2019-11-09T09:46:29.557 回答