我正在关注this教程,以便在我的应用中实施Firebase 推送通知功能。
但是我找到了一件事,如果app在foreground
中,那么只有我在Toast和TextView中获取(显示)消息。
另一方面,如果app在background
点亮,我没有收到消息以在TextView和Toast中显示。
在(Either App is in Foreground or Background)
的情况下,我喜欢在Toast和TextView中显示消息。
注意:我正在从Firebase控制台本身推送消息。
有可能吗?
MyFirebaseMessagingService.java
private void handleNotification(String message) {
if (!NotificationUtils.isAppIsInBackground(getApplicationContext())) {
// app is in foreground, broadcast the push message
Intent pushNotification = new Intent(Config.PUSH_NOTIFICATION);
pushNotification.putExtra("message", message);
LocalBroadcastManager.getInstance(this).sendBroadcast(pushNotification);
// play notification sound
NotificationUtils notificationUtils = new NotificationUtils(getApplicationContext());
notificationUtils.playNotificationSound();
}else{
// If the app is in background, firebase itself handles the notification
}
}
MainActivity.java
mRegistrationBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// checking for type intent filter
if (intent.getAction().equals(Config.REGISTRATION_COMPLETE)) {
// gcm successfully registered
// now subscribe to `global` topic to receive app wide notifications
FirebaseMessaging.getInstance().subscribeToTopic(Config.TOPIC_GLOBAL);
displayFirebaseRegId();
} else if (intent.getAction().equals(Config.PUSH_NOTIFICATION)) {
// new push notification is received
String message = intent.getStringExtra("message");
Toast.makeText(getApplicationContext(), "Push notification: " + message, Toast.LENGTH_LONG).show();
txtMessage.setText(message);
}
}
};
答案 0 :(得分:1)
FCM有两种类型的消息:通知和数据。当您希望FCM处理代表客户端应用程序显示通知时,请使用通知消息。如果要在客户端应用程序上处理消息,请使用数据消息。
以下是样本,
{
"to": “token ID”,
"notification": {
//params
},
"data": {
//params
}
}
带有消息类型的有效负载时的行为
通知消息
数据讯息
通知和数据
希望它有所帮助!