1

Я пытаюсь получить push-уведомления с помощью Firebase в своем приложении для Android. Проблема заключается в том, что приложение находится на переднем плане, я получаю уведомление и вызывается onMessageReceived(), однако когда я нахожусь в фоновом режиме, я не получаю никаких уведомлений, а onMessageRecieved не вызывается.Push-уведомление не работает с FCM

Что я делаю неправильно?

Manifest.xml

<service android:name=".notifications.MyFirebaseMessagingService"> 
    <intent-filter android:priority="2147483647"> 
     <action android:name="com.google.firebase.MESSAGING_EVENT"/> 
    </intent-filter> 
</service> 

MyFirebaseMessagingService.class

public class MyFirebaseMessagingService extends FirebaseMessagingService { 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
     Log.e("MessagingService", "onCreate Firebase Service"); 
    } 

    @Override 
    public void onMessageReceived(RemoteMessage remoteMessage) { 
     Log.e("MessagingService", "onMessageRecieved"); 

     String body  = remoteMessage.getData().get("body"); 

     ooVooSdkSampleShowApp application = (ooVooSdkSampleShowApp) getApplication(); 

     Intent intent = new Intent(application.getContext(), MainActivity.class); 
     PendingIntent contentIntent = PendingIntent.getActivity(application.getContext(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); 

     NotificationCompat.Builder b = new NotificationCompat.Builder(application.getContext()); 

     b.setAutoCancel(false) 
       .setDefaults(Notification.DEFAULT_ALL) 
       .setWhen(System.currentTimeMillis()) 
       .setSmallIcon(R.drawable.image_calendar_red) 
       .setContentText(body) 
       .setDefaults(Notification.DEFAULT_LIGHTS | Notification.DEFAULT_SOUND) 
       .setContentIntent(contentIntent) 
       .setContentInfo("Info"); 

     NotificationManager notificationManager = (NotificationManager) application.getContext().getSystemService(Context.NOTIFICATION_SERVICE); 
     notificationManager.notify(1, b.build()); 

    } 
} 
+0

Возможный дубликат [Как обрабатывать уведомления, когда приложение в фоновом режиме в firebase] (http://stackoverflow.com/questions/37711082/how-to-handle-notification-when-app -в-фон-в-firebase) –

ответ

1

Фигурные его. Это была проблема с тем, как серверный ответ обрабатывается Firebase SDK. Я отправлял уведомление, используя поле «уведомление» со стороны сервера.

Уведомление = Просто показать уведомление, когда приложение находится на переднем плане. Это правило для Firebase SDK/GCM SDK

Данные = Показать уведомление, когда приложение находится в фоновом режиме. Это правило для SDK Firebase SDK/GCM.

На стороне сервера, я сделал это так:

body: JSON.stringify({ 
      notification: { 
      data: { 
       title: message 
      }, 
      to : '/topics/user_'+username 

Further Info

0

Для получения уведомления в фоновом режиме, вы должны добавить эти строки в пусковых активности приложений. и см. Изображение для отправки данных с консоли firebase. Из ключа мы получаем данные.

if (getIntent().getExtras() != null) 
    { 
     Object title = getIntent().getExtras().get("title"); 
     Object message = getIntent().getExtras().get("message"); 


     String tit=title+""; 
     String msg=message+""; 

     if(!tit.equals("null") && !msg.equals("null")) { 
      //add your code which you want to perform on notification receive 
     } 

    } 

enter image description here

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