Уведомление не отображается на Android API уровня 26+ после обновления FCM - PullRequest
0 голосов
/ 02 октября 2018

Код ниже, похоже, не показывает уведомление на моем эмуляторе.Я обновил устаревший код 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 ]

0 голосов
/ 02 октября 2018

Пожалуйста, используйте канал уведомлений перед созданием уведомления со стороны разработчика Google https://developer.android.com/training/notify-user/channels

0 голосов
/ 02 октября 2018

В Android Oreo вы должны использовать каналы для создания уведомлений.

Начиная с Android 8.0 (уровень API 26), все уведомления должны быть назначены каналу.Для каждого канала вы можете установить визуальное и слуховое поведение, которое применяется ко всем уведомлениям в этом канале.Затем пользователи могут изменить эти настройки и решить, какие каналы уведомлений из вашего приложения должны быть навязчивыми или вообще невидимыми.


Внимание: Если вы настроены на 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);
        }
    }
}
...