Firebase Android - установить значок уведомления по умолчанию программно - PullRequest
0 голосов
/ 05 февраля 2020
В директивах

Android указано, что значки уведомлений должны быть полностью белыми и иметь прозрачный фон. Затем их фактический цвет контролируется с помощью метода setColor () уведомления или, в случае фоновых уведомлений Firebase, метаданных манифеста. Поскольку я хочу, чтобы уведомления моего приложения отображались черным значком, я настроил манифест следующим образом:

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

Однако недавно я заметил, что в устройствах Samsung есть два ключевых различия в том, как уведомление обрабатываются значки:

  • Настройка цвета полностью игнорируется, и цвет значка будет таким, какой был задан в чертеже. (В моем случае белый, у которого есть неприятный побочный эффект - сделать иконку невидимой, поскольку она белая на белом фоне)
  • В отличие от других Android устройств, значки могут иметь несколько цветов, и они будут отображаться точно так, как определено в Drawable, как в строке состояния, так и в самом уведомлении.

С учетом этих двух моментов, мне кажется, что мне нужно использовать другой Drawable в зависимости от того, является ли устройство Samsung. Я сделал это программно в методе onMessageReceived () Firebase, но, к сожалению, это касается только уведомлений, полученных, когда приложение находится на переднем плане. Для фоновых уведомлений он контролируется метаданными манифеста, о которых я упоминал выше, поэтому мне нужен способ программно установить значение default_notification_icon. Как я могу это сделать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...