Android FCM:通知通道是强制性的还是可选的?

Android FCM:通知通道是强制性的还是可选的?,android,firebase,push-notification,firebase-cloud-messaging,notification-channel,Android,Firebase,Push Notification,Firebase Cloud Messaging,Notification Channel,在Firebase Cloud Messaging docu中,您可以阅读以下必填内容: 从Android 8.0 API级别26开始,所有通知都必须 分配给频道的 警告:如果您的目标是Android 8.0 API级别26并发布 不指定通知通道的通知 通知不会出现,系统会记录错误 * 那么,为什么从FCM面板发送云消息通知时,指定通知通道的部分被标记为可选 此外,我发现这条注释似乎证实了这是可选的,并且在代码和FCM控制台中无需指定通知通道即可工作: Android 8.0 API级别26及更

在Firebase Cloud Messaging docu中,您可以阅读以下必填内容:

从Android 8.0 API级别26开始,所有通知都必须 分配给频道的

警告:如果您的目标是Android 8.0 API级别26并发布 不指定通知通道的通知 通知不会出现,系统会记录错误

*

那么,为什么从FCM面板发送云消息通知时,指定通知通道的部分被标记为可选

此外,我发现这条注释似乎证实了这是可选的,并且在代码和FCM控制台中无需指定通知通道即可工作:

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

*


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

在Android O中没有频道的通知将无法工作,因为应用程序开发人员需要指定频道。因此,在Android O及以上版本中,通知通道是必需的

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

通知渠道的目的是什么

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


对于针对API 26或更高版本的应用程序,必须使用通知通道

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

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

对于代码中创建的与FCM无关的通知,如果没有指定的频道,则不会显示该通知。

添加此选项

<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+,则设备不会显示消息。可选实际上意味着如果您选择显示消息,则使用通知通道,否则系统只接收消息,而不是用户。他们的大多数文档总是令人困惑,例如策略警告。。。lol.

请仔细检查我的问题,在官方文档中,他们正在讲述Android 8.0的两个不同版本。Android 8.0 API级别26及更高版本可选,支持并推荐通知通道。他们告诉我们8.0版也可以选择,通知通道在android O中是必须的。您可以在应用程序清单上声明一个作为firebase的默认通道,也可以在firebase控制台上的android通知通道输入中提供一个已经在应用程序中创建的通道。如果使用安卓8或更高版本,我没有创建通道,并且发送FCM推送,会发生什么从FCM推送面板,但不指定可选通道?将到达设备?系统将分配一个默认通道,它将显示完美,我测试了它,它已经在Android 10的像素接收。所以那么通知通道只是可选的。。。那么为什么人们认为它们是强制性的呢?为什么在docu的某些部分谷歌说它们是强制性的?它们是强制性的。FCM notification composer可选,必须显示。我不理解您最后的评论。在您之前的评论中,您告诉我,如果我不指定频道,它们将被显示,因为它将使用默认情况下已存在的默认频道,而不是由我创建的频道。我对它进行了测试,并成功地展示了它。那么,为什么现在你告诉我必须创建和使用通道才能显示通知?