2016-06-03 3 views
2

У меня странная проблема. У меня есть два способа отправки уведомлений в приложении для Android; один из службы Android, а другой через FCM.Значок значка для Android

Сценарии заключаются в следующем:

  1. Независимо от того, работает или нет приложение, значок уведомления, направленного из службы Android отображается правильно.
  2. Когда приложение запущено, значок уведомления все еще отображается правильно, если я отправляю уведомление через FCM.
  3. Но если приложение не работает, и я отправляю уведомление через FCM, вместо значка уведомления отображается белый квадрат.

Мой код в FCMService:

Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
     NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this) 
       .setSmallIcon(R.drawable.notification_icon) 
       .setContentTitle("Android App") 
       .setContentText(messageBody) 
       .setAutoCancel(true) 
       .setSound(defaultSoundUri) 
       .setContentIntent(pendingIntent); 

     NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
     notificationManager.notify(0, notificationBuilder.build()); 

ответ

-1

Это FMC ошибка подробно в GitHub FCM странице.

https://github.com/firebase/quickstart-android/issues/4

+0

Не удалось найти, если она зафиксирована. У вас есть какая-нибудь подсказка @seyfx? –

+0

Можете ли вы объяснить, что вы подразумеваете под «иметь два способа отправки уведомлений»? –

2

Скорее всего, ваша проблема заключается разница между notification-messages и data-messages.

Пожалуйста, прочитайте: https://firebase.google.com/docs/cloud-messaging/concept-options#notifications_and_data_messages

Используйте сообщение уведомления, когда вы хотите FCM для обработки отображения уведомления от имени своего клиента приложения. Используйте сообщения данных, когда хотите обработать сообщения в своем клиентском приложении.

В настоящее время FCM Web Console отправляет только уведомления-сообщения

Таким образом, все сообщения, отправленные с помощью веб-консоли (или через API с notification полезной нагрузки) будут иметь таким образом:

  1. если приложение закрыто или находится в фоновом режиме: FCM отобразит уведомление. если вы хотите, чтобы настроить его вы можете, но вы должны предоставить конкретную конфигурацию (в манифесте или в API посыла вызова) см https://firebase.google.com/docs/cloud-messaging/android/client#manifest
  2. если приложение находится на переднем плане: FCM позвонит onMessageReceived()

.

Если поведение, которое вы хотите, чтоonMessageReceived()всегда называется:
, то вам нужно использовать data-only (no notification) message

 Смежные вопросы

  • Нет связанных вопросов^_^