targetSdkVersion 26
(Android 8),并且应用程序使用FCM推送通知。按照FCM文档的规定,我将FCM客户端库更新到了11.2.0版本。
dependencies {
compile 'com.google.firebase:firebase-messaging:11.2.0'
}
通过此FCM客户端库更新,FCM通知开始出现在Android设备上。不过,当应用程序在后台时,它的系统处理FCM消息,因此它使用名为“Miscellaneous”的默认Android通知通道,这不是我们想要的(我们有其他通知通道,“Miscellaneous”在该列表中很令人困惑)。
正如FCM文档所说,有一种方法可以指定FCM消息的默认通知通道:
然而,没有显示代码示例(仅显示图标和颜色的示例)。所以我通过在Firebase Cloud Messaging Quickstart上github搜索找到了一个示例:(可选)在应用程序组件内,元数据元素设置通知的默认图标、颜色和通知通道(在Android O中新增)。每当传入消息没有显式设置图标、颜色或通知通道时,Android就会使用这些值。
<meta-data
android:name="com.google.firebase.messaging.default_notification_channel"
android:value="@string/default_notification_channel_id"/>
但是它没有起作用 - FCM通知仍然出现在"杂项"频道中。我在日志中看到:
W/FirebaseMessaging:AndroidManifest中缺少默认通知频道元数据。将使用默认值。
当然,我尝试重新安装应用程序。仍然存在问题。
理想情况下,在发送消息时,后端应该有一些指定通知频道的方法。FCM开发控制台允许测试发送,现在在用户界面上有这样一个选项:
这个应用程序运行良好。然而,我们的后端使用Java Amazon SNS API,我不知道该API是否允许在发送消息时指定Android通知渠道(因为这是一个新的Android功能,Amazon需要时间来适应它)。因此,在AndroidManifest.xml
中设置默认的通知渠道现在是一个有效的解决方法,但它并不起作用。
default_notification_channel_id
吗? - Tash Pemhiwa