下面的代码似乎没有在我的模拟器上显示通知。我将不赞成使用的Firebase代码升级为带有频道的新内容。有什么我应该研究的吗?
<application android:icon="@drawable/icon" android:allowBackup="false" android:label="@string/application_label" android:theme="@style/Theme">
<meta-data android:name="com.google.firebase.messaging.default_notification_icon" android:resource="@drawable/icon" />
<meta-data android:name="com.google.firebase.messaging.default_notification_color" android:resource="@color/accentColor" />
<meta-data android:name="com.google.firebase.messaging.default_notification_channel_id" android:value="@string/default_notification_channel_id" />
......
<service
android:name="com.exposure.services.ExposureFirebaseMessagingService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>
</application>
答案 0 :(得分:1)
在Android Oreo中,您必须使用渠道来创建通知。
从Android 8.0(API级别26)开始,必须将所有通知分配给一个频道。对于每个渠道,您可以设置应用于该渠道中所有通知的视觉和听觉行为。然后,用户可以更改这些设置,并确定您应用中的哪些通知渠道应该是侵入性的或根本不可见的。
警告::如果您以Android 8.0(API级别26)为目标并且在未指定通知渠道的情况下发布通知,则该通知不会出现,并且系统会记录错误。
有关更多文档,请访问:https://developer.android.com/training/notify-user/channels
显然,您已使用通知通道进行通知,但尚未创建与该ID关联的通知通道。因此,在创建通知之前,您需要创建一个通知渠道。
下面给出了创建通知通道的示例(也许在FCM服务类中):
@Override
public void onCreate() {
super.onCreate();
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
// Make sure you use the same channel id ("default" in this case)
// while creating notifications.
NotificationChannel channel = new NotificationChannel("default", "Default Channel",
NotificationManager.IMPORTANCE_HIGH);
channel.setDescription("Default Notification Channel");
NotificationManager notificationManager = (NotificationManager)
getSystemService(NOTIFICATION_SERVICE);
if (notificationManager != null) {
notificationManager.createNotificationChannel(channel);
}
}
}
答案 1 :(得分:0)
在根据Google开发者方面https://developer.android.com/training/notify-user/channels创建通知之前,请使用通知通道