某些设备中未显示React本机firebase通知抬头

时间:2018-06-15 11:53:25

标签: android firebase react-native firebase-cloud-messaging react-native-firebase

嗨我正在使用react native firebase进行通知我成功整合了它,并且两个平台都会收到通知,但当应用处于前台或后台时, android抬头不会。我阅读了有关此问题的所有问题,但没有任何线索。

  

应用环境:

  • "反应":" 16.3.1",
  • " react-native":" 0.55.3",
  • " react-native-firebase":" 4.2.0",
  • firebase cloud messaging tab in console用于发送消息 - 尝试使用高级选项

所以,当应用程序处于前台时,应用程序需要处理通知我正在做的事情:

componentDidMount() {
    this.checkFirebase();
  }

  registerFbCloudMessagingListener = () => {
    firebase.notifications().onNotification(notification => {
      if (Platform.OS === "android") {
        notification.android.setChannelId("forgroundnotification");
      }
      firebase.notifications().displayNotification(notification);
    });
  };
  async checkFirebase() {
    const enabled = await firebase.messaging().hasPermission();
    if (enabled) {
      // user has permissions
      this.registerFbCloudMessagingListener();
    } else {
      // user doesn't have permission
      this.requestFbPermission();
    }
  }

  async requestFbPermission() {
    try {
      let permission = await firebase.messaging().requestPermission();
      if (permission) {
        this.checkFirebase();
      }
      // User has authorised
    } catch (error) {
      // User has rejected permissions
    }
  }

开始我正在使用 mi设备,因为它只在应用托盘中显示通知,然后我在settings > my_app > notifications > show floating notification turned on检查了然后抬头开始进入该设备但是然后我尝试使用一个加设备,因为它没有显示。

我检查了所有这些问题

  

oreo 中,我认为它没有显示出来。因为mi有 android N 。   请帮忙 !!!提前谢谢。

1 个答案:

答案 0 :(得分:0)

这是我如何破解它。

首先,从Firebase控制台推送通知不会在android上显示通知。这件事我是从不和谐频道得到的。我问了这个问题,有人建议使用firebase API从后端服务器设置自己的服务器(如触发通知),然后开始工作。

此外,您还必须在Android上设置频道并订阅该频道,以使其正常工作。

这是我更新的代码。

  

请注意,此代码基于

     

“ react-native-firebase”:“ 4.2.0”

     

“反应”:“ 16.3.1”

     

“反应本机”:“ 0.55.3”

有很多方法可能会在最新版本和代码中有所更改,仅供参考。

我当时遵循的步骤如下:

 async checkFirebase() {
    const enabled = await firebase.messaging().hasPermission();
    if (enabled) {
      // user has permissions
      this.registerFbCloudMessagingListener();
    } else {
      // user doesn't have permission
      this.requestFbPermission();
    }
  }
async requestFbPermission() {
    try {
      let permission = await firebase.messaging().requestPermission();
      if (permission) {
        this.checkFirebase();
      }
      // User has authorised
    } catch (error) {
      // User has rejected permissions
    }
  }
const channelConfig = {
  channelId: "channelId",
  channelName: "Channel Name"
};

  1. 订阅主题
  2. 创建一个频道并订阅它。
  3. 检查权限,如果没有则请求一个。
 componentDidMount() {
    firebase.messaging().subscribeToTopic("test");
    const channel = new firebase.notifications.Android.Channel(
      channelConfig.channelId,
      channelConfig.channelName,
      firebase.notifications.Android.Importance.Max
    ).setDescription("A natural description of the channel");
    firebase.notifications().android.createChannel(channel);
    this.checkFirebase();
  }