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

React Native-在Android中无法访问前台Firebase推送通知

谢誉
2023-03-14
async createNotificationListeners() {
  /*
   * Triggered when a particular notification has been received in foreground
   * */
  this.notificationListener = firebase
    .notifications()
    .onNotification(notification => {
      console.log("fg", notification);
      const { title, body } = notification;
      this.showAlert(title, body);
    });

  /*
   * If app is in background, listen for when a notification is clicked / tapped / opened as follows:
   * */
  this.notificationOpenedListener = firebase
    .notifications()
    .onNotificationOpened(notificationOpen => {
      console.log("bg", notificationOpen);
      const { title, body } = notificationOpen.notification;
      this.showAlert(title, body);
    });

  /*
   * If app is closed, check if it was opened by a notification being clicked / tapped / opened as follows:
   * */
  const notificationOpen = await firebase
    .notifications()
    .getInitialNotification();
  if (notificationOpen) {
    console.log("bg", notificationOpen);
    const { title, body } = notificationOpen.notification;
    this.showAlert(title, body);
  }
  /*
   * Triggered for data only payload in foreground
   * */
  this.messageListener = firebase.messaging().onMessage(message => {
    //process data message
    console.log("fg", JSON.stringify(message));
  });
}

这里,根本不会触发firebase.notifications().onnotificationfirebase.messaging().onmessage()

在其他的解决方案,这是因为从Android8你需要创建一个通道,但我找不到任何选项创建通道,同时发送通知从FCM通知作曲者。

共有1个答案

裴实
2023-03-14

阿卜杜勒,

您需要在设备上使用firebase创建通知通道。

const channel = new firebase.notifications.Android
  .Channel('default', 'Default Channel', firebase.notifications.Android.Importance.Max)
  .setDescription('The default notification channel.')

firebase.notifications().android.createChannel(channel)

这将创建通道,您可以调用它的次数,因为您想要安全(根据文档)。您的onNotification监听器看起来很好,您只需要在进入的通知上设置android通道。

  notification.android.setChannelId('default')
 类似资料:
  • 在过去的5天里,我一直在努力解决这个问题,但我不确定自己做错了什么。我已按照本手册中提到的说明进行操作https://www.youtube.com/watch?v=dyAwv9HLS60.但无法从firebase控制台接收任何通知。虽然当我尝试用设备令牌从发送测试通知时。我在设备上收到通知。我不确定我做错了什么。首先,我认为这是因为我启用了Hermes引擎,但即使将其设置为false,我也无法接

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

  • 使用更新的Firebase cloud messaging和swizzling方法,当我的应用程序前景化时,我能够成功地在我的应用程序委托中的方法中接收有效负载。但是,我没有收到任何类型的有效负载,并且当我的应用程序处于后台时,不会被调用,尽管api响应消息已成功发送(见下文) 以下是我发送给FCM api的请求,以触发推送通知 有FCM的回复 这是我的appDelegate代码 我在我的应用程序

  • 我正在我的应用程序中实施第三部分服务(FreshChat,一种允许您将帮助台集成到应用程序或网站中的服务),除了聊天的推送通知之外,一切都很好。Freshchat通过Firebase工作(Firebase推送通知不会出现问题),但Fresat通知不起作用。我遵循了newchat的官方留档,但有已弃用的方法,绝对不起作用(我尝试了很多) 这是Firebase云消息传递代码: 以及FreshChat文

  • 我有以下代码,一旦我收到Firebase推送通知或FCM,我的Android应用程序就会出现在前台。 现在在MainActivity中,我使用了如下捆绑包: 我的代码在以下情况下正常工作: 当设备上接收到FCM时: 如果应用程序打开,则执行操作 如果应用程序在后台,即最小化,则应用程序打开并执行操作 如果应用程序被杀死,应用程序将打开并执行操作 如果应用程序被杀死并且手机被锁定,应用程序会在锁屏顶

  • 这是舱单 这是我的注册令牌类 这是我的Firebase服务类