Белый значок push-уведомления Android Oreo GCM, когда приложение закрыто

Я прочитал ~ 10 подобных вопросов на SO, а также на некоторых других страницах поиска Google и документации, и я до сих пор не могу понять, в чем проблема.

По сути, если приложение закрыто (или находится в фоновом режиме), значок push-уведомления отображается в виде белого квадрата.

Если приложение запущено, оно отображается с нужным мне значком.

Моя иконка прозрачная и просто белая. Это простая иконка, созданная самим Google.

Вот что у меня есть, и где может быть проблема. Наше приложение имеет несколько модулей. Я остановлюсь на 3 из них:

  • Приложение
  • код приложения
  • Отправить уведомление

Я создаю локальное уведомление в модуле PushNotification:

override fun onMessageReceived(from: String?, data: Bundle?) {
    super.onMessageReceived(from, data)

    Log.d("PNReceiver", "onMessageReceived")

    val notification = data?.get("notification") as Bundle?
    val notificationTitle = notification?.get("title") as String
    val notificationBody = notification?.get("body") as String

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        val manager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
        val channelId = getString(R.string.notification_channel_id)
        if(manager.getNotificationChannel(channelId) == null) {
            val channel = NotificationChannel(channelId,
                    getString(R.string.notification_channel_name),
                    NotificationManager.IMPORTANCE_DEFAULT)
            channel.description =
                    getString(R.string.notification_channel_description)
            manager.createNotificationChannel(channel)
        }

        createLocalNotification(manager, channelId, notificationTitle, notificationBody)
    }
}

private fun createLocalNotification(notificationManager: NotificationManager,
                                    channelId: String,
                                    title: String,
                                    body: String) {

    val largeIcon = BitmapFactory.decodeResource(resources, R.drawable.ic_cake_variant)

    val builder = NotificationCompat.Builder(this, channelId)
            .setContentTitle(title)
            .setContentText(body)
            .setStyle(NotificationCompat.BigTextStyle().bigText(body))
            .setPriority(NotificationCompat.PRIORITY_DEFAULT)
            .setSmallIcon(R.drawable.ic_cake_variant)
            .setLargeIcon(largeIcon)
            .setAutoCancel(true)
            .setDefaults(Notification.DEFAULT_SOUND or Notification.DEFAULT_LIGHTS or Notification.DEFAULT_VIBRATE)


    notificationManager.notify(0, builder.build())
}

Кроме того, я пытаюсь нажать точно такой же значок в манифесте модуля PushNotification:

<application>
... some gcm stuff...

    <meta-data
        android:name="com.google.firebase.messaging.default_notification_channel_id"
        android:value="@string/notification_channel_id" />

    <meta-data android:name="com.google.firebase.messaging.default_notification_icon"
               android:resource="@drawable/ic_cake_variant" />

</application>

Остальные 2 модуля (App и AppCode) не имеют ничего общего с кодом push-уведомления.

FWIW, наш график потока данных/зависимостей модулей: App -> AppCode -> PushNotification

Кроме того, мы по-прежнему используем GCM, а не FCM, в версии com.google.android.gms:play-services-gcm:11.8.0.

Пробовал версию 15.0.1, тоже безуспешно.

Я пропустил что-то супер очевидное? Спасибо за помощь.

ОБНОВЛЕНИЕ

Вот как выглядит тело полученного сообщения:

Bundle[{
    google.sent_time = 1526919xxxxxx,
    google.message_id = 0: 1526919xxxxxxx % xxx c5e8a46xxxxxx,
    notification = Bundle[{
        body = test message 1,
        title = test title 1
    }],
    message = test message 1,
    collapse_key = com.mycompany
}]

Кроме того, вот некоторые из других ответов, которые я рассмотрел:

Вопрос 1

Вопрос 2

Вопрос 3


person TooManyEduardos    schedule 18.05.2018    source источник
comment
Код выглядит нормально. Я предполагаю, что вы используете полезную нагрузку сообщения только data? Укажите ссылки, которые вы уже проверили, чтобы предлагаемые решения были сужены. Кроме того, продолжайте использовать FCM, хотя это не решает эту конкретную проблему, но может предотвратить появление других.   -  person AL.    schedule 19.05.2018
comment
Я рассмотрю это в понедельник, но что вы имеете в виду под Укажите ссылки, которые вы уже проверили, чтобы предлагаемые решения были сужены. Кроме того, FCM на самом деле пока не вариант, поскольку он требует изменений в бэкэнде, которые просто не произойдут в ближайшее время (другая команда с другими приоритетами).   -  person TooManyEduardos    schedule 19.05.2018
comment
Привет. Извините, если это сбивает с толку, я имел в виду, что если бы вы могли публиковать ссылки, которые вы уже проверили, это было бы здорово для сообщества, поскольку они знали бы, какие из них уже проверены и не работают. Таким образом, это сузило бы поиск возможных проблем. Ваше здоровье!   -  person AL.    schedule 21.05.2018
comment
Привет, и спасибо за вашу помощь. Я добавил тело сообщения, которое я получаю. Я не знаю, делает ли это только данные или нет. Кроме того, если я изменил значок PN на что-то круглое, я вижу белый круг вместо белого квадрата. Оба изображения прозрачны, хотя   -  person TooManyEduardos    schedule 21.05.2018