Реагировать на родное уведомление Firebase - PullRequest
0 голосов
/ 16 октября 2018

Заранее благодарю за помощь.

Я заметил, когда приложение для Android находится в фоновом режиме или закрыто, если я нажимаю на уведомление в панели уведомлений.при открытии приложения тело в уведомлении становится неопределенным, даже когда в панели уведомлений отображается правильное тело.Кто-нибудь знает решение для этого?

ниже приведен код, который я использую для всего процесса уведомления

async componentDidMount() {
    this.checkPermission();
    this.createNotificationListeners(); 
  }

  async checkPermission() {
    const enabled = await firebase.messaging().hasPermission();
    if (enabled) {
      this.getToken();
    } else {
      this.requestPermission();
    }
  }

  async getToken() {
    let value;
    let fcmToken = await AsyncStorage.getItem('fcmToken', value);
    if (!fcmToken) {
      fcmToken = await firebase.messaging().getToken();
      if (fcmToken) {
        console.log("token = " + fcmToken)
        await AsyncStorage.setItem('fcmToken', fcmToken);
      }
    } else {
      console.log("stored token = " + fcmToken)
    }
  }

  async requestPermission() {
    try {
      await firebase.messaging().requestPermission();
      this.getToken();
    } catch (error) {
    }
  }

  componentWillUnmount() {
    // this.notificationListener();
    // this.notificationOpenedListener();
  }

  async createNotificationListeners() {
    this.notificationListener = firebase.notifications().onNotification((notification) => {
        const { body } = notification;
        this.showAlert( body);
    });

    this.notificationOpenedListener = firebase.notifications().onNotificationOpened((notificationOpen) => {
      console.log("notificationOpenedListener opened");
        const { body } = notificationOpen.notification;
        console.log(notificationOpen.notification);
        this.showAlert( body);
    });

    const notificationOpen = await firebase.notifications().getInitialNotification();
    if (notificationOpen) {
        const { body } = notificationOpen.notification;
        this.showAlert( body);
    }

    this.messageListener = firebase.messaging().onMessage((message) => {
      this.showAlert(message);
    });
  }

  showAlert(message) {
    Alert.alert(
      'Notice',
      message,
      [
          { text: 'OK'},
      ],
      { cancelable: false },
    );
  }
...