我尝试通过在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>
这是我的firebasemessaging服务
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");
}
}
答案 0 :(得分:1)
您正在观察的是通知类型消息在Android上的工作方式。当您的应用程序位于前台时,您不会在托盘中看到通知。
请read the documentation on handling messages了解期望。特别是请参阅“摘要”框,该框告诉您应用程序的前台状态和后台状态之间的消息处理有何不同。并不是说当您的应用程序处于前台时,您只能期望在onMessageReceived
中看到您的消息。如果需要,您可以在那里自己构造一个通知。
答案 1 :(得分:0)
当您的应用程序位于前台时,默认实现不会显示通知。您将需要自己处理onMessageReceived(...)
,并根据需要创建和显示通知。
Firebase通知的行为会有所不同,具体取决于 接收应用的前景/背景状态。如果你想 前台应用接收通知消息或数据消息, 您需要编写代码来处理onMessageReceived回调。 有关通知和数据之间区别的说明 消息,请参阅消息类型。