我试图通过在Firebase Cloud消息传递中通过控制台发送通知来测试我的应用,但是当我的应用处于前台或仍在运行时。通知不会显示在设备中,并且会触发 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");
}
}
您观察到的是通知类型消息在Android上的工作方式。 当您的应用位于前台时,您将不会在托盘中看到通知。
请阅读有关处理消息的文档以了解预期内容。 尤其请参阅"摘要"框,该框告诉您应用前台和后台状态之间的消息处理有何不同。 并不是说当您的应用程序处于前台时,您只能期望您的消息会在onMessageReceived
中看到。 如果需要,您可以自己在那里构建通知。
当应用程序位于前台时,默认实现不会显示通知。 您需要自行处理onMessageReceived(...)
,并根据需要创建和显示通知。
从文档中:
Firebase 通知的行为因 接收应用的前台/后台状态。如果需要帮助, 用于接收通知消息或数据消息的前台应用程序, 您需要编写代码来处理 onMessageReceived 回调。 有关通知和数据之间区别的说明 消息,请参阅消息类型。