当前位置: 首页 > 知识库问答 >
问题:

Android:在应用程序未运行或处于后台时将Firebase推送通知保存到磁盘

裴硕
2023-03-14

我有问题保存我创建的一些obj,从FireBase推送通知系统开始到磁盘使用GSon库。

我要做的:当收到推送通知时,创建一个obj,添加到一个容器并保存到磁盘。GUI将读取并使用它来创建一个类似facebook的通知列表。只有当应用程序没有运行或在后台时,一个通知图标也会显示在托盘中。

我已经有了:如果应用程序在前台运行,所有的工作。如果应用程序没有运行或在后台,通知图标会出现在托盘上,但不会执行保存操作,并且当我打开应用程序时,GUI中不会显示任何内容。

    @Override
public void onMessageReceived(RemoteMessage remoteMessage) {
    NotificationsContainer notificationsContainer;

    // TODO(developer): Handle FCM messages here.

    // Check if message contains a notification payload.
    if (remoteMessage.getNotification() != null) {
        Log.d(TAG, "Message Notification Body: " + remoteMessage.getNotification().getBody());
        PixNotifications.sendNotification(remoteMessage.getNotification().getBody(), remoteMessage.getNotification().getTitle()); //Here the app show the icon in system tray, only if it's running in background.
    }

    notificationsContainer = Utilities.readNotificationsFromDisk(); //Read actual container from disk
    if(notificationsContainer == null){ //No container?
        notificationsContainer = new NotificationsContainer(); //Create an empty one
    }

    try{
        Notification notification = new Notification(remoteMessage); //Create a displayable notification
        notificationsContainer.pushNotification(notification); //Put it in the container
        Utilities.saveNotificationsToDisk(notificationsContainer); //Save container to disk
        PixideCore.getInstance().reloadNotificationsContainerContent(); //Reload container in PixideCore
    } catch (Exception e){
        Log.d(TAG, "Notification save to disk error");
    }
}

谢谢你的帮助!

共有1个答案

姬宝
2023-03-14

正如FCM在他们的文档中提到的,当您的应用程序处于后台时,您的服务中的OnMessageReceived功能首先不会被调用int。

在后台应用程序中处理通知消息

当你的应用程序在后台时,Android会将通知消息>引导到系统托盘。默认情况下,用户点击通知就会打开应用程序启动器。

 类似资料:
  • 当我的应用程序处于打开状态时,我正在通过onMessageReceived(Remotemessage mesg)获得推送通知。如果我的应用程序处于Kilded状态,我将收到推送通知,但不是从onMessageReceived()获得的。 意思是,在收到推送通知后,根据通知中的数据,我需要重定向页面,当通知点击时。如果应用程序在前景工作良好。当我杀人的时候,我在托盘上收到通知,但当我点击通知时,它

  • 当应用程序在前台时不接收推送通知,但当应用程序在后台时接收我已遵循来自https://medium . com/@ ankushaggarwal/GCM-setup-for-Android-push-notifications-656 cf DD 8 adbd的FCM教程

  • 当应用程序在后台时,如何更新包含数据负载的Firebase推送通知?有没有办法在通知中指定通知id给Firebase API? 完整的项目在github https://github.com/akshatashan/FireBaseCloudMessagingDemo中

  • 我正在使用Firebase云消息发送推送通知。 和: 在中声明: 问题是,当应用程序运行时,显示良好,通知带有默认声音,但当应用程序在后台或未运行时,通知没有任何声音,而不显示在状态栏中。 为什么会出现这种情况,我如何修复它?

  • 所以我在firebase消息传递中经历了一个奇怪的行为。我在我的firebase messaging FCM调用中同时发送[通知]和[数据]对象,当应用程序在后台时,我可以接收到我调用FCM请求的多个推送通知。但现在的问题是,当我在打开应用程序时收到推送通知时,如果我点击了该通知,我将不再收到任何进一步的推送通知。 注意:如果我强行停止然后重新打开,我会再次开始收到通知。 我在几个安卓版本的安卓设

  • 我已经集成了Firebase,用于在flutter中推送通知。如果应用程序在前台,我已经显示了一个通知详细信息的对话框。我收到通知正确的Android。同样在iOS通知在后台和设备锁定时工作正常。我还启用了推送通知和后台抓取。对此有什么解决办法吗?有人面临过这样的问题吗? 我使用这个Firebase插件https://pub.dev/packages/firebase_messaging