0

Я пытаюсь настроить систему, в которой мобильный телефон Android получает уведомление с сервера: для этой задачи мы выбрали Firebase. Пока приложение работает в фоновом режиме, все работает нормально: после того, как я нажимаю сообщение с консоли firebase, на панели задач появляется уведомление, и после того, как пользователь нажал на сообщение, Intent с дополнительными данными отправляется на адрес Activity.Уведомления от firebase, когда приложение находится на переднем плане, не называется

Моя проблема уникальна, когда приложение уже находится на переднем плане. firebase notification довольно ясен: если приложение находится на переднем плане, независимо от того, какой тип сообщения отправляется сервером, OnMessageReceived никогда не называется ... так почему это не удается с моим простым приложением? Некоторые замечания, которые помогут вам решить эту проблему:

  • Мы работаем с Android Studio 2.1.2;
  • «it.bagozi.ada.tutorial.firebase» содержит оба класса (как вы можете вывести из декларации pacakge);

Ниже вы можете найти весь исходный код, используемый:

Главная активность

FirebaseNotificationService

package it.bagozi.ada.tutorial.firebase; 

import android.util.Log; 

import com.google.firebase.messaging.FirebaseMessagingService; 
import com.google.firebase.messaging.RemoteMessage; 

public class FirebaseNotificationService extends FirebaseMessagingService { 

    private static final String TAG = FirebaseNotificationService.class.getSimpleName(); 

    @Override 
    public void onMessageReceived(RemoteMessage remoteMessage) { 
     // TODO(developer): Handle FCM messages here. 
     Log.e(TAG, "From: " + remoteMessage.getFrom()); 

     // Check if message contains a data payload. 
     if (remoteMessage.getData().size() > 0) { 
      Log.e(TAG, "Message data payload: " + remoteMessage.getData()); 
     } 

     // Check if message contains a notification payload. 
     if (remoteMessage.getNotification() != null) { 
      Log.e(TAG, "Message Notification Body: " + remoteMessage.getNotification().getBody()); 
     } 

     // Also if you intend on generating your own notifications as a result of a received FCM 
     // message, here is where that should be initiated. See sendNotification method below. 
    } 


} 

Android Manifest

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="it.bagozi.ada.tutorial.firebase"> 

    <service android:name=".FirebaseNotificationService"> 
     <intent-filter> 
      <action android:name="com.google.firebase.MESSAGING_EVENT" /> 
     </intent-filter> 
    </service> 

    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme"> 
     <activity android:name=".MainActivity"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 

</manifest> 

ответ

5

Сделайте объявление службы в своем манифесте дочерним элементом тега «приложение»!

+1

Невероятно, как другая пара глаз может решить проблему за столь короткое время! Просто попробовал и работал безупречно! – Koldar

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