【问题标题】:Firebase Notification ErrorFirebase 通知错误
【发布时间】:2018-03-23 15:01:52
【问题描述】:

我正在尝试使用 Firebase 发送通知。但是,在某些情况下,通知不会调用 onReceive 方法。 前景 = 呼叫和导航。 背景和终止应用程序 = onReceive 未调用。我无法获取数据,也无法重定向。

https://gist.github.com/Omurtekinn/fcbd3ba2e83925c459b22d5614c3ea00 MyFirebaseMessaging 类。

baslik=title / özel veriler= data

【问题讨论】:

标签: android firebase firebase-notifications


【解决方案1】:

如果您查看documentation,您会发现 Android 处理通知消息的方式不同,具体取决于负载以及您的应用是在前台还是后台:

如果您的应用位于前台,您将始终在onMessageReceived 方法中收到通知。通知的有效负载无关紧要。

如果它位于背景,您有两种情况:

通知负载: 消息被传递到系统托盘,当您单击它时,它将通过 Intent Extras 传递到 Launch Activity。

数据负载: 消息将发送至onMessageReceived

查看您的场景,您似乎有一个通知有效负载。你有两个选择:

1) 将有效负载类型更改为数据。如果您使用的是 FCM 控制台,则只能执行选项 2,因为它只会发送通知消息。

2) 在启动器活动的onCreate方法中实现消息的接收。

通知基本上是这样的:

 {
    "to" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "notification" : {
      "body" : "great match!",
      "title" : "Portugal vs. Denmark",
      "icon" : "myicon"
    }
  }

如果您要添加键/值对,它将如下所示:

 {
    "to" : "APA91bHun4MxP5egoKMwt2KZFBaFUH-1RYqx...",
    "notification" : {
      "body" : "great match!",
      "title" : "Portugal vs. Denmark",
      "icon" : "myicon"
    },
    "data" : {
      "Nick" : "Mario",
      "Room" : "PortugalVSDenmark"
    }
  }

在您的启动器活动中,您会像任何其他活动一样在 onCreate() 中获得 Intent Extra 中的通知:

  Bundle extras = getIntent().getExtras();
  if(extras!=null){
    String notification = extras.getString("notification");
    String dats = extras.getString("data");
  }

请注意,如果您使用的是 android O,您还需要配置 channels

【讨论】:

  • 嗨,我在 FCM 控制台中插入了我发送数据的问题。如何实现我在onCreate方法中运行的接收
  • 它没有工作。当应用程序在后台工作时没有调用onReceived。
  • 您的应用在后台不会调用 onReceived,即使您实施了我的解决方案。正如我之前所说,由于您的通知的有效负载类型,当您的应用在后台时,它会始终转到启动器活动的 onCreate()。我提供的代码是在用户点击托盘中的通知时检索通知数据。
  • 我现在明白了。我是否需要将数据作为意图发送给课堂上的临时演员?因为你的代码中的额外内容是返回 null。
  • 您的应用运行的 api 级别是多少?
猜你喜欢
  • 1970-01-01
  • 2023-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-25
  • 2020-03-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多