代码之家  ›  专栏  ›  技术社区  ›  Mike Flynn

FCM升级后Android API level 26+上未显示通知

  •  0
  • Mike Flynn  · 技术社区  · 6 年前

    下面的代码似乎没有在我的模拟器上显示通知。我从弃用的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>
    

    enter image description here

    2 回复  |  直到 6 年前
        1
  •  1
  •   Nabin Bhandari    6 年前

    在Android Oreo中,您必须使用频道来创建通知。


    注意事项: 如果您以android8.0(API级别26)为目标,并在未指定通知通道的情况下发布通知,则不会显示通知,系统会记录错误。

    更多文档请访问: https://developer.android.com/training/notify-user/channels


    下面给出了创建通知通道(可能在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);
            }
        }
    }