FCM服务。NotificationDatabaseHandler是帮助器类。正在保存邮件标题和当前时间。
public class ApplicationFCMService extends FirebaseMessagingService {
private static final String TAG = ApplicationFCMService.class.getName();
private NotificationUtils notificationUtils;
private NotificationDatabaseHandler databaseHandler;
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
Log.e(TAG, "From: " + remoteMessage.getFrom());
databaseHandler = new NotificationDatabaseHandler(getApplicationContext());
if (remoteMessage.getNotification() != null) {
Log.e(TAG, "Notification Body: " + remoteMessage.getNotification().getBody());
handleNotification(remoteMessage.getFrom(), remoteMessage.getNotification().getBody());
databaseHandler.addNotification(remoteMessage.getNotification().getBody(), getDate());
// Log.d("FCM", messagesSet.toString());
Log.d("FCM", remoteMessage.getNotification().getBody());
}
// Check if message contains a data payload.
if (remoteMessage.getData().size() > 0) {
Log.e(TAG, "Data Payload: " + remoteMessage.getData().toString());
try {
JSONObject json = new JSONObject(remoteMessage.getData().toString());
handleDataMessage(json);
} catch (Exception e) {
Log.e(TAG, "Exception: " + e.getMessage());
}
}
}
我已经使用邮递员发送数据通知(用于测试)。在接收到数据消息时,执行onMessageReceived()方法。现在我可以在数据库中保存通知,即使应用程序在后台。
如果fcm消息包含“通知”部分,而应用程序在后台,则通知传递到系统托盘和数据中的附加意图。 问题是,我无法更改该通知的重要性,而且它们总是不显示弹出窗口。我为API26+修复了这个问题,我添加了通知通道 但对于API25-我找不到解决方案。一个建议是删除“notification”部分,只保留“data”,这将允许fcm将消息传递到 当应用程序在后台/前台,我将能够显示我的自定义通知。
我正在使用FCM推送通知。当应用程序处于前台时,应用程序运行良好,并打算启动新活动,但当应用程序处于后台时,它不启动新活动,而是启动默认活动的实例。 }
我正在处理FCM通知。当应用程序在后台时,我的通知工作正常,但当应用程序在前台时,我的通知无法接收。我几乎什么都试过了,但都不奏效。当应用程序处于前台时,不会收到通知。 manifest.xml: 代码(FirebaseMessagingService):
根据文件: 如果希望前台应用程序接收通知消息或数据消息,则需要编写代码来处理onMessageReceived回调。 null 我是不是漏掉了什么?不应该是同一个服务处理应用程序的两个应用程序状态来接收消息吗?我不想在app已经打开时显示系统栏通知,但我确实想改变UI中的一些元素,以指示用户他们在聊天中有新消息。 代码如下: 服务: