Я пытаюсь настроить систему, в которой мобильный телефон 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>
Невероятно, как другая пара глаз может решить проблему за столь короткое время! Просто попробовал и работал безупречно! – Koldar