Java 自定义通知类inshort

Java 自定义通知类inshort,java,android,push-notification,firebase-cloud-messaging,android-push-notification,Java,Android,Push Notification,Firebase Cloud Messaging,Android Push Notification,我想创建一个自定义通知,如下图所示 我也能做到这一点,如下面的屏幕截图所示: 但有两个问题: 当我使用Android Studio安装应用程序时,最初它运行良好,即为通知显示自定义通知布局(,如图3所示),但当我从任务管理器中删除应用程序,然后发送通知时,它作为默认布局出现(,如图4所示) 当我在任何设备上使用apk安装应用程序时,我会将通知样式作为默认通知(,如图4所示) 我已经被困在这很长时间了,并且已经改变了整个通知代码,我仍然面临着这个问题。我不知道我哪里做错了 Picture-3

我想创建一个自定义通知,如下图所示

我也能做到这一点,如下面的屏幕截图所示:

但有两个问题:

  • 当我使用Android Studio安装应用程序时,最初它运行良好,即为通知显示自定义通知布局(,如图3所示),但当我从任务管理器中删除应用程序,然后发送通知时,它作为默认布局出现(,如图4所示)
  • 当我在任何设备上使用apk安装应用程序时,我会将通知样式作为默认通知(,如图4所示)
  • 我已经被困在这很长时间了,并且已经改变了整个通知代码,我仍然面临着这个问题。我不知道我哪里做错了

    Picture-3

    Picture-4


    我能够实现我想要的目标,也就是说,我希望每次都使用自定义布局显示通知,但问题是,如果应用程序以前在后台,我会收到自定义布局通知,而当应用程序不在后台时,我会收到默认通知样式

    “那么问题到底是什么,推送通知在应用程序位于后台或前台的情况下表现不同。”

    当应用程序以前在后台时,我编写的通知生成器代码正在使用,并且显示了带有自定义布局的通知。此外,当应用程序以前在前台时,android系统无法达到我的项目的通知生成器代码,在这种情况下,通知由Google服务流程处理,该流程使用默认的通知布局

    解决方案:

    早些时候,我从服务器获取的JSON对象被命名为“通知”,几乎每个开发人员都使用它。将该JSON对象的名称更改为“data”实现了神奇的效果

    通知生成器中的代码过去是这样的:

    String notTitle = remoteMessage.getData().get("title");
    
    哪一个以前是:

    String notTitle = remoteMessage.getNotification().getTitle();
    
    这样,我的通知总是由应用程序、NotificationService处理,而不是由Google服务流程处理

    我希望这对某人有帮助。:)