Firebase Cloud Messaging не показывает панель уведомлений, когда приложение открыто
Я пытался протестировать свое приложение с отправкой уведомления через консоль в облачной службе Firebase, но когда мое приложение на переднем плане или все еще работает. Уведомление не отображается на устройстве, и запускается журнал в службе сообщений Firebase.
Но когда я уничтожаю свое приложение, уведомление работает хорошо.
Это мой манифест
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.example.yehezkiel.eclassapp">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application
android:allowBackup="true"
android:icon="@mipmap/eclass_logo1"
android:label="@string/app_name"
android:roundIcon="@mipmap/eclass_logo1"
android:supportsRtl="true"
android:theme="@style/AppTheme"
tools:replace="android:icon">
<service
android:name=".myFirebaseInstanceTokenID">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>
<activity
android:name=".LoginActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".MainActivity" />
<activity android:name=".Tugas" />
<activity
android:name=".DetailActivity"
android:label="@string/title_activity_detail"
android:theme="@style/AppTheme" />
<activity android:name=".NilaiActivity" />
<activity android:name=".BaseActivity" />
<activity android:name=".MateriActivity" />
<activity android:name=".NilaiDetailActivity" />
<activity android:name=".PesertaActivity"></activity>
</application>
</manifest>
Это мой пожарный сервис
public class myFirebaseInstanceTokenID extends FirebaseMessagingService {
private static final String TAG = "FirebaseMessagingServce";
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
if (remoteMessage.getData().size() > 0) {
Log.e(TAG, "Message data payload: " + remoteMessage.getData());
}
Log.e(TAG, "Tidak ada Data");
}
}
2 ответа
Что вы наблюдаете, так это то, как сообщения типа уведомлений работают на Android. Когда ваше приложение находится на переднем плане, вы не увидите уведомления в трее.
Пожалуйста, прочтите документацию по обработке сообщений, чтобы понять, чего ожидать. Особенно обратите внимание на поле "в сводке", в котором рассказывается о различиях в обработке сообщений между основным и фоновым состояниями приложения. Не то чтобы, когда ваше приложение находится на переднем плане, вы можете только ожидать, что ваше сообщение будет видно в onMessageReceived
, При необходимости вы можете создать там уведомление самостоятельно.
Реализация по умолчанию не будет отображать уведомление, когда ваше приложение находится на переднем плане. Вам нужно будет справиться onMessageReceived(...)
самостоятельно и создать и отобразить уведомление по мере необходимости.
Из документации:
Уведомления Firebase ведут себя по-разному в зависимости от основного / фонового состояния принимающего приложения. Если вы хотите, чтобы фоновые приложения получали уведомления или сообщения с данными, вам нужно написать код для обработки обратного вызова onMessageReceived. Для объяснения разницы между уведомлением и сообщениями данных см. Типы сообщений.